Zusammenfassung

  • RFC 793 reservierte sechs Bits im TCP-Header und verlangte, dass sie beim Senden null sind.
  • RFC 3168 wies zwei dieser Positionen ECE und CWR für Explicit Congestion Notification zu.
  • RFC 9293 führt vier reservierte Bits weiter: nicht implementierte Bits müssen beim Senden null sein und beim Empfangen ignoriert werden.

Leere mit einer Vorgabe

RFC 793 von 1981 definierte unmittelbar nach Data Offset ein sechs Bit breites Reserved-Feld. Data Offset zeigt den Beginn der Nutzlast an. Die reservierten Bits waren für eine spätere Verwendung vorgesehen und mussten null sein. Sie waren weder eine versteckte Option noch ein Mechanismus zur Verlängerung des Headers.

Damit blieb der grundlegende Aufbau jedes Segments stabil. Ein Sender durfte keine lokale Bedeutung erfinden, und ein Empfänger konnte weiterhin denselben Basisaufbau erkennen. Der Platz war zunächst ungenutzt, blieb aber für eine spätere Standardisierung sichtbar erhalten.

Zwei Positionen erhalten eine Sprache für Überlastung

RFC 3168 wies 2001 Bit 9 ECE und Bit 8 CWR zu. Die Bits 4 bis 7 blieben reserviert. Die Erweiterung nutzte somit den vorhandenen Header, ohne die Grenze des TCP-Basis-Headers zu verschieben.

Die Signalkette besteht aus mehreren Schritten. Ein überlasteter Router kann ein IP-Paket mit Congestion Experienced markieren, statt sich ausschließlich auf Verluste zu stützen. Der Empfänger meldet die Markierung, indem er ECE in einer TCP-Bestätigung setzt. Der Sender reagiert auf die Überlastungsanzeige, verringert sein Congestion Window und setzt anschließend CWR, um diese Verringerung zu melden.

RFC 3168 verlangt außerdem, die ECN-Fähigkeit beim Aufbau der TCP-Verbindung auszuhandeln. Die bloße Existenz einer Bitposition beweist daher keine gemeinsame Unterstützung.

Die heutige Regel schützt beide Richtungen

RFC 9293 beschreibt ein vier Bit breites Reserved-Feld. Unterstützt eine Implementierung eine künftige Funktion nicht, muss sie die entsprechenden Bits in erzeugten Segmenten auf null setzen; beim Empfang muss sie sie ignorieren. Null beim Senden verhindert versehentliche oder private Signale. Ignorieren beim Empfang verhindert, dass ein unbekanntes Bit allein zur Ablehnung eines Segments führt.

Die Zuweisungen werden durch IANAs TCP Header Flags Registry geordnet. RFC 9293 führt CWR und ECE neben den sechs ursprünglichen Flags auf und lässt die Offsets 4 bis 7 für künftige Nutzung frei. Eine reservierte Position ist daher kein Raum für beliebige Deutung, sondern hängt von einer öffentlichen Spezifikation und einer verwalteten Zuweisung ab.

Was die Geschichte nicht belegt

Die ursprüngliche Reservierung beweist nicht, dass die Entwickler von 1981 ECN konkret vorhergesehen hatten. Belegt ist nur: Sie bewahrten Positionen für künftige Kontrollfunktionen, und ein späterer Standard nutzte zwei davon für einen bestimmten Mechanismus zur Überlastungsrückmeldung.

Eine Reservierung garantiert auch keine Verbreitung. Implementierungen können sich verzögern, Zwischenstationen können andere Annahmen treffen, und eine neue Funktion kann Aushandlung, Zustandsänderungen und Betriebserfahrung erfordern. Die genannten RFCs quantifizieren diese Reibungen nicht.

Quellen