세션을 많이 연결하면 데이터 전송이 빨라지는 이유..

slashdot의 이미지

여기에 올려도 될지 몰르지만..
이론상 이해가 안되는 부분이 있습니다.
네트워크 bandwidth 가 2Mb 라고 가정할때..
외부의 한 서버(1Gb)에서 ftp or http 로 다운을
한 개의 session 으로 다운 받으면.. 대략 1.2M 정도
나온다고 가정합니다..( 자신의 대여폭을 100% 쓰지 않음 )
하지만 프로그램을 더 가동 시키면 ( session 증가 )
속도가 각각 1.0Mb , 1.0Mb 를 사용하여 자신의 모든 bandwidth 를
다 사용합니다. session 을 늘려야만 자신의 bandwidth 를 다 쓸 수
있는 이유는 무엇일까요..
Getright 프로그램이 다운 로드 속도를 빠르게 하기 위해 여러
session 을 쓰는 것처럼..

흠.. ftp/http 프로토콜의 문제일까요..

지리즈의 이미지

http나 ftp 서버가
한 세션당 컨넥션의 대역폭을 제한할 경우가 있습니다.

이를테면, 서버에 연결된 대역폭은 100Mb/s일때,
각 서비스가 세션당 2Mb/s로 제한하고 있을 경우,
세션을 10개를 열면 10Mb/s까지는 나오는 거죠.
이론상으로는 50개를 열면 그 서버에 할당된 모든 대역폭을 한 유저가 독식할 수도 있습니다.

ps) 그런데, 질답란으로 가야하는 것 아닐까요?
There is no spoon. Neo from the Matrix 1999.

There is no spoon. Neo from the Matrix 1999.

익명사용자의 이미지

혹시 집(광랜)에서 서버로 접속해서 속도 측정하신건지요?
P사의 광랜으로 교체후 그런증상?이 있어서 나름대로 판단해봤는데..
테스트한 서버에서는 속도 제한하고 있지 않아 외부 네트워크단의 어떤 부분에서 제한을 하는것 같다고 판단되더군요.
이래저래 찍어보니깐.. 대충 아래와 같은 수치를 보이던데...

모두 물리적으로 틀린 지역에 있습니다.
1. 집 - 서버A : 0.5/1.5 MB/s
2. 서버A - 서버B : 7/7 MB/s
3. 집 - 웹하드서비스회사 : 3/5 MB/s
업/다운의 대략 최고속도 수치인데 원질문처럼 1번의 경우 여러개의 세션으로 접속해서 합쳐보면
총대역폭은 다 사용가능하네요.

1과 2의 예로 서버A측의 서버나 넷장비에서 제한을 가한것이라고 볼수가 없구요
1과 3의 예로 통신사의 네트워크 단에서 제한을 가한것이라고 볼수가 없더군요.

집과 서버 웹하드모두 통신사가 틀리니 각통신사의 중계지점의 교환장비?에서
컨트롤 되고 있다라고 생각하고 있습니다만 정확하게 어디에서 속도가 제한되는지 판단은 안서네요.
다시 K사로 돌아가야되나..고민중입니다.

ISP?에 근무하시는 분 있으시면 정확하게 알텐데 좀 알려주세요 ^^

slashdot의 이미지

제가 설명을 부족하게 써놓은거 같아 다시 작성하였습니다

우선 가정은...
지리즈님이 쓴데로 서버에서 대여폭 제한은 없습니다.
익명님이 쓴데로 ISP 에서 트래픽 제한을 걸지 않습니다.

테스트 환경은 10Gb 스위치에서를 크로스로 연결한 후 ( 각 서버가 연결된 포트는 1000base-T )
각 서버는 bsd, ubuntu, windows 2003 을 설치해 두었습니다.
클라이언트는 linux 또는 windows xp 또는 위의 서버 계열입니다.
그러므로 서버 및 네트워크 제한은 전혀 없는 상황이고요
각 http/ftp 서비스 데몬은 lighttpd,apache2 ( mpm-prefork ) , thttpd , proftpd, vsftpd
를 사용하였습니다.
클라이언트는 일반 ftp client 나 wget, siege 등을 이용하였습니다.

실제로 위의 내용을 테스트 하려고 꾸며 논것은 아니지만 왜 세션을 여러개 연결하여야 한 서버의
full bandwidth 가 나오는지 궁금합니다.

덧.
맨처음 글의 내용에 밝혔듯이 이 곳에 올려도 될지.. 토의 하는 내용이래서 이곳에
올려 본것입니다. 잘못되었다면 삭제하도록 하겠습니다

송효진의 이미지

http 대몬이 한세션에 과도한 트래픽이 몰리지 않게 관리하는게 당연하다고 생각되어집니다.
한 클라이언트가 그저 다운로드 하나 걸었을 뿐인데,
단지 회선이 좋다는 이유로 대역폭을 다 점유해버리면,
단순 웹서핑하는 클라이언트가 피해를 받잖아요.

emerge money

dg의 이미지

서버에 달린 회선의 대역폭이 100Mbps라고 하고
중간에 거치는 노드들이랑 클라이언트들은 대역폭의 제한이 없다고 합시다.
만약 100000명의 사용자가 ftp로 파일을 다운받고 있다면 (사용자당 세션 하나씩..)
한 사람당 100Mbps / 100000 = 1Kbps가 나오겠죠..
보통의 경우라면..
어떤 사람이 세션 개수를 10개로 늘리면 100Mbps / 100009 * 10 = 약 10Kbps가 됩니다.
왜냐면 보통 서버에서 세션 하나당 프로세스(또는 스레드) 하나가 담당하고
각 프로세스(또는 스레드)는 send할수 있는 기회가 동등하기 때문에
각 세션당 속도는 같습니다.
물론 클라이언트 ip주소당 또는 사용자 id당 동등한 대역폭이 나오도록 해준다면 세션을 늘려도 이득이 없겠죠..