IP Fragmentierung im WAN

Hallo liebe Habo Community,

ich habe schon eine Frage, die mich seit längerem quält, wozu ich bisher keine wirkliche Antwort finden konnte.

Warum können Netzwerkpakete mit einer Größe versendet werden, die die MTU des jeweiligen Interfaces überschreitet, obwohl bei diesen Paketen das Dont Fragment Bit gesetzt ist?

Aufgefallen ist mir dies besonders bei Verbindungen über HTTP bzw. HTTPS. Als Beispiel habe ich einmal folgende Kommunikation mitgeschnitten:

Lokaler PC stellt eine HTTPS Anfrage an meinen Cloud Server.

Azure Cloud Server (Linux):
MTU 1500

Lokaler PC ist ein Windows Client, MTU 1500
Der PC ist an Unitymedia angeschlossen.

Die TCP Verbindung wird ganz normal mit dem Handshake aufgebaut, das Client Hello ist relativ klein, daher auch kein Problem.

Das merkwürdige kann ich beim Server Hello sehen. Der Cloud Server sendet das Server Hello als ein großes Paket mit einer Länge von 1771 bytes auf dem IP Stack los.
SeqNr. 1 und Next Seq Nr.1732

Beim Client kommt dieses Paket als zwei Pakete an.
Eins mit 1500 bytes auf dem IP Stack was der MTU im LAN entsprechen würde. SeqNr. 1 und Next Sq Nr.1461
Und das andere mit 311 auf dem IP Stack SeqNr. 1461 und Next Sq Nr. 1732

Das Dont Fragment Bit ist natürlich gesetzt.

Laut meinem Verständnis nach dürfte dieses Paket eigentlich nicht fragmentiert werden, ja noch nicht mal vom Server in dieser Größe losgeschickt werden. Außerdem müssen die Router sowohl bei Unitymedia als auch im Microsoft RZ das Paket ja kleiner machen, um es überhaupt senden/empfangen zu können.

Ich frage mich also welche Technik dahinter steckt und wie das Ganze überhaupt so funktioniert.

Vielleicht könnt ihr mich aufklären :)
 
Beim Client kommt dieses Paket als zwei Pakete an.
Eins mit 1500 bytes auf dem IP Stack was der MTU im LAN entsprechen würde. SeqNr. 1 und Next Sq Nr.1461
Und das andere mit 311 auf dem IP Stack SeqNr. 1461 und Next Sq Nr. 1732

Das Dont Fragment Bit ist natürlich gesetzt.

Laut meinem Verständnis nach dürfte dieses Paket eigentlich nicht fragmentiert werden, ja noch nicht mal vom Server in dieser Größe losgeschickt werden. Außerdem müssen die Router sowohl bei Unitymedia als auch im Microsoft RZ das Paket ja kleiner machen, um es überhaupt senden/empfangen zu können.

*EDIT* Sorry, nicht gründlich gelesen :)

Die MTU betrifft payload. Du könntest berechnen ob die Protokollheader die Summe der restlichen Bytes ausmachen.


Nochmal: Kannst du tcp-Dumps der Geräte liefern?
 
Ich musste mich jetzt auch erstmal einlesen, aber die Darstellung von Wirehshark, dass tatsächlich ein Paket mit 1771 Bytes zusammenhänged gesendet wird, scheint falsch zu sein. Siehe dazu diesen Link.
PCap greift die Daten offenbar vor dem Netzwerktreiber ab. Dieser (oder die Hardware auf der Netzwerkkarte selber - dazu kann ich jetzt nichts sagen) splittet das Paket dann auf und sendet es separat, was du ja auch richtig bei deinem Client beobachten kannst.

Ich vermute, würdest du einen Laptop zwischen deinen Server und den entsprechenden Router/Switch schalten und damit (raw) die Pakete sniffen, würdest du genauso wie beim Client 2 geteilte Pakete sehen.

Grüße
 
Zurück
Oben