
Ich schaue mir einen Wireshark-Datensatz an, den mir jemand zur Verfügung gestellt hat, um etwas für ihn zu analysieren. Wireshark hat praktischerweise 3 TCP-Segmente neu zusammengesetzt, die alle ein einzelnes TLS-Paket transportierten. Das TLS-Paket passte nicht in die 1460 Byte MSS, daher hat der Host 3 TCP-Segmente daraus gemacht und Wireshark hat Folgendes erkannt:
[3 Reassembled TCP Segments (5914 bytes): #8(1440), #10(1440), #12(3034)]
[Frame: 8, payload: 0-1439 (1440 bytes)]
[Frame: 10, payload: 1440-2879 (1440 bytes)]
[Frame: 12, payload: 2880-5913 (3034 bytes)]
[Segment count: 3]
[Reassembled TCP length: 5914]
[Reassembled TCP Data: ... ]
Das ist großartig, aber was ich nicht verstehe, ist, warum das 3. Segment eine Größe hat, die den MSS dieser TCP-Verbindung überschreitet, der beim SYN/SYN+ACK mit 1460 Bytes ausgehandelt wurde.
Antwort1
Den Grund dafür habe ich dann selbst gefunden: Das liegt anGroßes Empfangs-Offloadwie erklärt unterhttp://rtoodtoo.net/generic_segmentation_offload_and_wireshark/. Die Netzwerkschnittstellenkarte oder der Kernel des Hosts hat mehrere TCP-Segmente gesammelt und zu einem einzigen großen Segment zusammengeführt, bevor sie an den Benutzerbereich weitergegeben wurden.
Daher erschien es Wireshark so, als würde es den Datenverkehr als ein einzelnes TCP-Segment/IP-Paket aufzeichnen, das die zulässige MTU und MSS überschreitet.