>> Delete Reply from No. 61581 article
No. RE: TCP/IP한번의 send로 보낼 수 있는 데이타의
크기가..

등록 2002-11-26 17:07:00 By localhost     조회 37
이름 버그소년    

		: TCP/IP한번의 send로 보낼 수 있는 데이타의 크기가 한정 되어 있는지요?
:
: 제경우 와우 파란 R2(2.4.18-4smp)를 쓰는데..
:
: 556032 bytes이상 send한번의 호출로 보내지지 않는군요..
:
: 이 경우 유저 레벨에서 나눠서 보내줘야 하는 건가요?
:
: 보통은 어떻게 처리하는 지 궁금하네요..
 TCP/IP에서 패킷 하나의 크기는 1500bytes가 기본입니다.
 (ether header 14bytes를 제외한 크기 ^^ )
 그리고 tcp header 20bytes, ip header 20bytes이므로 한 패킷으로 보낼 수
 있는 데이터의 크기는 1500 - 40 = 1460 bytes가 되겠습니다.
 물론 OS의  MTU (Maximun Trans??? Unit (??))의 크기를 1500 이상으로
 설정하여 사용할 수 있습니다만.. 1500이상의 패킷이 각 노드를 거치다가
 MTU가 1500인곳을 지날때는 재전송을 요청하게 되므로 그냥 1500에 맞추어
 전송하는것이 좋습니다. 위에서 5Kbytes가 넘는 데이터를 한번에 보냈다고
 는 하지만 정작 OS는 그것을 1500bytes씩(MTU크기만큼) 잘라서 여러번
 send(write)를 호출한 것입니다.
 보통 큰 용량의 데이터(파일전송같은거)를 전송할때는 1500을 넘지않고
 계산하기도 편리하도록 1024bytes의 데이터를 여러번 전송합니다.
 이렇게 하는 가장 큰 이유는...
 리눅스에서 2048bytes와 같이 MTU를 넘는 데이터를 send하고,
 윈도에서 recv를 할 경우, 리눅스에서 send는 표면적으로 한번 호출되지만
 데이터는 1460, 588bytes의 두개로 전송됩니다.
 이때 윈도에서 recv를 2048bytes를 하게되면,
 1460bytes의 데이터와 뒤에 2048bytes까지 NULL로 패딩된 데이터와
 588bytes의 나머지 데이터를 받는 두번의 recv가 일어나게됩니다.
 주의하시길... ^^;
[관리자] 패스워드를 입력 하십시오. 답장이 존재하면 함께 삭제됩니다.[ 목록 | 이전 ]
패스워드:    

Copyleft 1999-2026 by JSBoard Open Project
Theme Designed by IDOO All right reserved