Zusammenfassung

  • Data Offset zählt den gesamten TCP-Header in 32-Bit-Wörtern und weist auf den Datenbeginn.
  • EOL beendet die Optionsinterpretation; folgendes Padding bleibt jedoch Headerbestandteil.
  • NOP kann ausrichten, schreibt diese Ausrichtung aber nicht vor.

Der kleinste TCP-Header umfasst fünf 32-Bit-Wörter, also zwanzig Oktette. Optionen machen ihn variabel lang. Deshalb braucht der Empfänger eine äußere Grenze, die nicht davon abhängt, welche Option er versteht. Das vier Bit breite Data-Offset-Feld gibt die Anzahl der Wörter im vollständigen Header an. Mit vier multipliziert ergibt sich das Oktett, an dem die Daten beginnen. Fünf steht für den Basisheader; größere Werte umfassen Optionen und Padding. Direkt darstellbar sind höchstens fünfzehn Wörter oder sechzig Oktette.

Wenn Data Offset größer als fünf ist, beschreibt RFC 9293 den Optionsbereich als (DOffset-5)*32 Bit. Dieser Wert umfasst auch das Padding hinter den eigentlichen Optionen.

EOL beendet die Optionsliste, muss aber nicht am Ende des von Data Offset beschriebenen Headers stehen. Die verbleibenden Oktette müssen nullwertiges Header-Padding sein. NOP ist ein Ein-Oktett-Element und kann eine spätere Option ausrichten; Optionen dürfen jedoch an jeder Oktettgrenze beginnen. Andere Optionen enthalten ein Längenfeld, sodass unbekannte, wohlgeformte Optionen übersprungen werden können.

Data Offset setzt die äußere Grenze des Parsens. Optionen und Padding gehen in die TCP-Prüfsumme ein, sind aber keine Anwendungsdaten. Ungültige Längen müssen behandelt werden; RFC 9293 nennt Zurücksetzen der Verbindung und Protokollieren als vorgeschlagenes Vorgehen.

Quellen