Maximale UDP-Segmentgröße

Maximale UDP-Segmentgröße

Umgebung: Ich schreibe eine UDP-Client-Server-Anwendung. Die Pfad-MTU zwischen Client und Server beträgt 1500 Byte (da zwischen ihnen nur eine drahtlose Verbindung besteht, ist dieser Wert ziemlich stabil). Mein Systemset fragmentiert standardmäßig kein Bit, und sowohl auf dem Client als auch auf dem Server beträgt SO_SENDBUF 16384 und SO_RECVBUF = 87380.

Frage: Der Client verwendet sendto, um 8192 Bytes auf einmal an den Server zu senden. Ich verwende Wireshark, um zu sehen, wie diese 8192 Bytes in vielen Paketen gesendet werden, und stelle fest, dass jedes Paket maximal 1023 Bytes UDP-Daten enthält. Aber sollte ich bei einem Pfad-MTU von 1500 nicht in der Lage sein, 1500-20(IP-Header)-8(UDP-Header) = 1472 Bytes Daten in jedem Paket zu senden? Wenn ich dasselbe mit TCP mache, ist das Ergebnis das erwartete. Jedes TCP-Paket kann bis zu 1448 Bytes enthalten, also 1500-20(IP-Header)-32(TCP-Header mit Zeitstempeloption). Meine Frage ist: Warum fügt UDP nicht 1472 Bytes in jedes Paket ein, anstatt 1023 Bytes? Ist das nur ein kleines Implementierungsdetail? Oder habe ich einige Systemeinschränkungen übersehen?

Anmerkung: Dasselbe Ergebnis kann beobachtet werden, auch wenn ich das Experiment auf derselben Maschine durchführe (mit 127.0.0.1 auf der Loopback-Schnittstelle).

Antwort1

Sie ziehen nur den Overhead für die Schichten L4 (UDP) und L3 (IP) ab. Ich vermute, der Overhead im Ethernet-Frame (L2) mit Präambel, MAC-Adressierung, Typfeld und Prüfsumme würde den Rest ausmachen?

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

verwandte Informationen