Maximum Segment Size
Die Maximum Segment Size (MSS) definiert in einem Rechnernetz die maximale Anzahl von Bytes, die als Nutzdaten in einem TCP-Segment versendet werden können.
Hintergrund
Während des Verbindungsaufbaus teilt zunächst der Client dem Server seinen MSS-Wert mit. Danach antwortet der Server mit seinem MSS-Wert. Beide MSS-Vorgaben werden nicht synchronisiert. Da bei IPv4 der IP- und TCP-Header zusammen mindestens 40 Bytes groß sind, muss die MSS dort um mindestens 40 Bytes kleiner sein als die Maximum Transmission Unit (MTU), um eine Fragmentierung der IP-Pakete zu vermeiden. Bei IPv6 sind IP- und TCP-Header zusammen mindestens 60 Bytes groß, daher muss hier die MSS 60 Bytes kleiner sein als die MTU.
MSS Clamping
Auf Routern, die Netze mit unterschiedlichen MTUs verbinden, wird oft MSS Clamping eingesetzt. Dies ist ein Verfahren, bei dem der Router in dem TCP-Paket für den Verbindungsaufbau die MSS reduziert. Sie wird dabei entweder auf einen vorgegebenen Wert reduziert oder anhand der MTU des Netzes mit der kleineren MTU bestimmt. Durch dieses Verfahren werden bei der TCP-Verbindung in beide Richtungen nur Pakete versendet, die nicht fragmentiert oder verworfen werden müssen, weil sie zu groß wären.
Dieses Verfahren ist allerdings ein Hack.[1] Es verletzt das Schichtenmodell der Internetprotokollfamilie, weil ein Router auf Vermittlungsschicht Daten der Transportschicht verändert. Außerdem funktioniert dieses Verfahren nur bei TCP, da andere Protokolle wie UDP keine MSS verwenden.
Bei DSL-Routern wird MSS Clamping eingesetzt, da durch das PPPoE die MTU der Internetverbindung verringert wird.
Siehe auch
- RFC 879 The TCP Maximum Segment Size and Related Topics
Referenzen
- RFC 4459 – MTU and Fragmentation Issues with In-the-Network Tunneling