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
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
