UDP 최대 세그먼트 크기

UDP 최대 세그먼트 크기

환경: UDP 클라이언트-서버 애플리케이션을 작성 중입니다. 클라이언트와 서버 사이의 경로 MTU는 1500바이트입니다(그들 사이에는 무선 링크만 있으므로 이 값은 거의 안정적입니다). 내 시스템 세트는 기본적으로 비트를 조각화하지 않으며 클라이언트와 서버 모두에서 SO_SENDBUF는 16384이고 SO_RECVBUF = 87380입니다.

질문: 클라이언트는 sendto를 사용하여 한 번에 8192바이트를 서버에 보냅니다. 저는 Wireshark를 사용하여 이 8192바이트가 어떻게 많은 패킷으로 전송되는지 확인하고 각 패킷이 최대 1023바이트의 UDP 데이터만 보유한다는 것을 발견했습니다. 하지만 경로 MTU = 1500이면 각 패킷에서 1500-20(IP 헤더)-8(UDP 헤더) = 1472바이트의 데이터를 보낼 수 있어야 하지 않나요? TCP로 동일한 작업을 수행하면 결과는 예상한 대로입니다. 각 TCP 패킷은 최대 1448바이트를 보유할 수 있으며 이는 1500-20(IP 헤더)-32(타임스탬프 옵션이 있는 TCP 헤더)입니다. 제 질문은 UDP가 각 패킷에 1023바이트 대신 1472바이트를 넣지 않는 이유는 무엇입니까? 사소한 구현 세부 사항입니까? 아니면 일부 시스템 제한 사항을 간과했나요?

참고: 동일한 컴퓨터(루프백 인터페이스에 127.0.0.1 사용)에서 실험을 수행해도 동일한 결과가 관찰됩니다.

답변1

레이어 L4(UDP) 및 L3(IP)에 대한 오버헤드만 공제하는 것입니다. 프리앰블, MAC 주소 지정, 유형 필드 및 체크섬이 있는 이더넷 프레임(L2)의 오버헤드가 나머지를 설명할 것이라고 추측합니다.

http://www.doc.ic.ac.uk/~nd/surprise_97/journal/vol4/mhl/ether01.gif

관련 정보