Zusammenfassung

  • Die MSS-Option, Typ 2 und Länge 4, wird in einem SYN übertragen und nennt die größte TCP-Datenmenge, die ihr Absender in einem Segment empfangen kann.
  • Die Richtungen sind unabhängig. IP- und TCP-Header zählen nicht zur Zahl; beim Senden müssen tatsächliche Header und Pfadgrenzen zusätzlich berücksichtigt werden.

Zwei SYNs, zwei Empfangsgrenzen

„Verhandlung“ ist eine irreführende Kurzform. A beschreibt mit seinem Wert den Empfang von A, B den Empfang von B. Unterschiedliche Werte sind deshalb kein Widerspruch, sondern betreffen entgegengesetzte Datenströme.

Das Format ist eindeutig: Kind 2, Länge 4 und ein 16-Bit-MSS-Wert. RFC 9293 führt MSS im verpflichtend zu unterstützenden TCP-Optionssatz, erlaubt die Option in einer anfänglichen Anfrage mit SYN und nicht in späteren Segmenten. Sie setzt beim Aufbau eine Grenze, statt fortlaufend neue Kapazitätswerte zu melden.

MSS zählt TCP-Datenoktette ohne IP- und TCP-Header. Es ist weder die Größe eines IP-Datagramms noch die MTU einer Schnittstelle oder die Größe eines Anwendungsschreibvorgangs. Der Sender kombiniert den Wert des Partners mit eigenen Pfadkenntnissen und den tatsächlich verwendeten Headern.

RFC 879 erklärte bereits 1983, dass MSS oft fälschlich als Verhandlung bezeichnet werde. Der Empfänger nennt seine Grenze; der Sender entscheidet über die konkrete Paketbildung.

Warum 536 ein Standardwert war

Im von RFC 879 beschriebenen IPv4-Fall musste ein Host ein 576-Oktett-Datagramm rekonstruieren können. Nach 20 Oktetten für den minimalen IPv4- und 20 für den minimalen TCP-Header blieben 536 Oktette TCP-Daten.

Diese Rechnung war eine Kompatibilitätsgrundlage, keine Pfadmessung. Sie bewies weder eine MTU von 576 auf jedem Weg noch einen universellen, aus einer bestimmten Netztechnik abgeleiteten Wert.

MSS ist außerdem nicht mit Path-MTU-Discovery gleichzusetzen. PMTUD untersucht eine veränderliche Eigenschaft des Weges; MSS wird beim Aufbau ausgetauscht und beschreibt die Empfangsfähigkeit eines Endpunkts.

Die Korrektur für Optionen

Manche Implementierungen verringerten das angekündigte MSS, um Platz für mögliche IP- oder TCP-Optionen zu reservieren. RFC 6691 stellte klar: Der Empfänger soll die größte TCP-Nutzlast ankündigen, die er rekonstruieren kann, ohne hypothetischen Headerplatz abzuziehen.

Beim Erstellen eines konkreten Pakets passt der Sender die Daten an die tatsächlich vorhandenen Optionen und die geltende IP-Größe an. Ein großes MSS erlaubt nicht, die Pfadgrenze zu überschreiten; ein kleines MSS beweist keine bestimmte MTU an jedem Hop.

Was ein Zwischengerät umschreiben kann

Eine Middlebox kann MSS in einem SYN ändern, etwa wegen eines Tunnels. Dadurch verändert sich die dem Partner präsentierte Empfangsgrenze, nicht aber MSS zu einer autoritativen Messung der Pfadkapazität.

Ein Mitschnitt belegt nur den Wert am Beobachtungspunkt. Er zeigt nicht zwingend die ursprüngliche Ankündigung, die MTU aller Hops oder den Grund für eine kleinere Nutzlast.

Die historische Lehre lautet: Der Empfänger nennt seine Grenze, der Sender baut das Paket, und der Pfad bleibt eine externe Einschränkung.

Quellen