Zusammenfassung

  • RFC 1185 errechnete bei 1 Gbit/s etwa 17 Sekunden für die kritische Hälfte des TCP-Sequenznummernraums. Ein verspätetes Duplikat konnte zurückkehren, wenn seine Nummer wieder plausibel erschien.
  • PAWS nach RFC 1323 verglich empfangene Zeitstempel mit TS.Recent und hielt alte Duplikate aus einer offenen Verbindung heraus. Nach mehr als 24 Tagen Untätigkeit musste dieser gespeicherte Vergleichswert ungültig werden, damit neuer Verkehr die Verbindung wiederbeleben konnte.

TCP nummeriert Bytes und beginnt nach einer vollständigen Runde wieder von vorn. Bei einem langsamen Transportweg ist das alte Paket meist verschwunden, wenn seine Nummer erneut gebraucht wird. Auf einer sehr schnellen Strecke holt der Nummernkreis das verspätete Paket ein. Der Wachposten prüft den Ausweis und verwechselt einen Besucher von gestern mit einem von heute.

RFC 1185 vom Oktober 1990 machte das Problem messbar. Seine Tabelle gab für 1 Gbit/s rund 17 Sekunden bis zur kritischen halben Umrundung des Sequenznummernraums an. Im Vergleich stand eine angenommene maximale Lebensdauer von TCP-Segmenten von zwei Minuten. Die Kennung kehrte schnell zurück; das Netz konnte noch ein altes Segment tragen. Es war eine technische Rechnung über einen möglichen Hochgeschwindigkeitspfad, keine Zählung tatsächlich fehlgeleiteter Pakete. Die Rechnung verlangte einen zweiten Hinweis.

Der RFC 1323 vom Mai 1992 setzte auf die TCP-Timestamp-Option. Sie erfüllte zwei Aufgaben: Messung der Umlaufzeit und PAWS, den Schutz gegen umgelaufene Sequenznummern. Innerhalb einer bestehenden Verbindung hielt der Empfänger einen kürzlich gesehenen Wert als TS.Recent fest. Traf ein Segment mit einem kleineren TSval ein, während die gespeicherte Referenz gültig war, schickte er eine Bestätigung und verwarf das Segment. Die gewöhnlichen TCP-Fensterregeln prüften die übrigen Segmente weiterhin. Eine alte Nummer konnte erneut passen; der Zeitstempel verriet ihre Herkunft.

Die Endpunkte brauchten keine gleich gestellten Wanduhren. Der Sender musste seine Zeitwerte monoton voranbringen, der Empfänger verglich sie im modularen 32-Bit-Raum. TS.Recent half zugleich bei der Messung der Umlaufzeit; die beiden Verfahren teilten sich also einen Zustand. PAWS prüfte eingehende Daten und Bestätigungen in derselben offenen Verbindung. Der Wächter kannte die Geschichte dieser einen Unterhaltung.

Auch sein Notizbuch hatte ein Verfallsdatum. RFC 1323 ließ Zeitstempeluhren mit einem Tick pro Sekunde bis zu einem Tick pro Millisekunde zu. Beim schnellsten Takt wandert die vorzeichenbehaftete Hälfte des 32-Bit-Zählers in etwa 24,8 Tagen herum. Bleibt eine Verbindung so lange offen, aber stumm, läuft die Uhr des Senders weiter. Sein erstes neues Segment kann beim Wiederbeginn kleiner erscheinen als das alte TS.Recent des Empfängers. Ein Filter, der dieser Aufzeichnung ewig vertraut, weist jeden Neuzugang ab und friert die Verbindung ein.

Darum schrieb RFC 1323 das Vergessen vor. Nach mehr als 24 Tagen ohne Verkehr muss eine PAWS-Implementierung TS.Recent ungültig machen. Erscheint ein neuer Zeitwert kleiner, prüft der Empfänger zuerst die Gültigkeit seines Gedächtnisses. Eine abgelaufene Referenz lässt das Segment durch den PAWS-Test; ein neuer Wert kann gespeichert werden. Die normale Kontrolle des Sequenzfensters bleibt bestehen. Den alten Wachzettel wegzuwerfen heißt nicht, die Tür auszuhängen.

Als Alternative erwogen die Autoren gelegentliche Keepalive-Nachrichten, die den Wert frisch hielten. Sie wählten die Ungültigmachung, weil die TCP-Spezifikation solche Nachrichten nicht vorgeschrieben hatte. Auch die Taktfrequenz der Gegenstelle kennt der Empfänger nicht; die Grenze muss den schnellsten Fall berücksichtigen. Die 24 Tage bezeichnen Ruhezeit, keine Höchstlaufzeit der Verbindung. Ein laufendes Gespräch erneuert seine Hinweise selbst.

Der spätere RFC 7323 behielt die Erklärung und die Regel bei. Von 1990 bis 1992 mussten die TCP-Autoren zwei Arten veralteter Information beherrschen: eine Nummer, die auf schnellen Wegen zu früh wiederkehrte, und ein Zeitgedächtnis, das während einer langen Pause zu alt wurde. Der Wachposten bekam eine Uhr und eine Anweisung, sein eigenes Protokollblatt rechtzeitig zu zerreißen.