Zusammenfassung

  • RFC 2001 wertete drei Duplicate ACKs als starkes Indiz für ein fehlendes Segment, nicht als Beweis seiner Ursache, und erlaubte eine Wiederholung vor Ablauf des Timers.
  • Fast Recovery setzte cwnd vorübergehend auf ssthresh + 3 Segmente, erhöhte es für jedes weitere Duplicate ACK und entfernte die Aufblähung beim ersten ACK für neue Daten.
  • Die Rückmeldungen stützen nur eine eng begrenzte Schlussfolgerung des Senders. Sie belegen weder Pfadkapazität noch Identität des Peers oder Anwendungszustellung.

Der dritte Hinweis änderte die Handlungsbefugnis

Ein TCP-Sender sieht keine Warteschlange und keinen ausgefallenen Link. Er sieht Sequenzräume und Bestätigungen. Wenn dreimal dieselbe nächste erwartete Sequenznummer zurückkommt, bleibt die kumulative Grenze stehen, obwohl spätere Segmente beim empfangenden TCP angekommen sein müssen. RFC 2001 machte aus diesem dritten Hinweis eine Handlungsregel.

Die Regel war bewusst probabilistisch. Ein außerhalb der Reihenfolge eintreffendes Segment kann einen sofortigen ACK mit unverändertem RCV.NXT auslösen. Ein oder zwei Wiederholungen konnten daher bloße Umordnung bedeuten. Drei aufeinanderfolgende Wiederholungen galten dem Dokument als starkes Indiz für eine Lücke, stark genug für Fast Retransmit vor dem Retransmission Timeout.

Damit ist weder der Ort des Verlusts gefunden noch seine Ursache klassifiziert. Der Sender erhält lediglich eine vertretbare Hypothese über ein fehlendes Segment. Die Beobachtung reicht bis zur TCP-Unterhaltung, nicht bis zur physischen Geschichte jedes Pakets.

Warum zwei Fenster getrennt bleiben

Das vom Empfänger angekündigte Fenster beschreibt dessen Aufnahmekapazität. cwnd beschreibt die vom Sender angenommene Netzverträglichkeit. Gesendet werden darf nur bis zum kleineren Wert. Freier Speicher am Ziel ist folglich kein Nachweis dafür, dass der Weg dorthin denselben Burst tragen kann.

ssthresh trennt schnelles Wachstum von vorsichtiger Congestion Avoidance. Nach einem Timeout fällt cwnd auf ein Segment, denn Stille liefert kaum Evidenz für fortgesetzten Verkehr. Duplicate ACKs liefern ein anderes Muster: Die Grenze steckt fest, aber nachfolgende Daten bewegen sich weiterhin. Fast Recovery bewahrt diese Information.

So werden die vier Verfahren von RFC 2001 zu einer Zustandskette. Slow Start erkundet, Congestion Avoidance begrenzt das Wachstum, Fast Retransmit füllt die vermutete Lücke, und Fast Recovery hält das ACK-Taktwerk am Laufen, ohne den Verlust zu ignorieren.

Aufblähung als Buchung, nicht als Kapazitätsschätzung

Beim dritten Duplicate ACK halbiert RFC 2001 die aktuelle cwnd zu ssthresh, mit einer Untergrenze von zwei Segmenten. Danach wird das offenbar fehlende Segment erneut übertragen. Schließlich wird cwnd auf ssthresh + 3*segsize gesetzt.

Die drei zusätzlichen Segmente sind keine Belohnung für den Pfad. Jeder Duplicate ACK setzt voraus, dass ein weiteres späteres Segment den Empfänger erreicht hat. Das Verfahren verbucht diese drei Segmente als aus dem Netz abgeflossen und beim Empfänger gepuffert. Der dadurch frei gehaltene Spielraum verhindert, dass die Sendeseite während der Reparatur unnötig verstummt.

Für jedes weitere Duplicate ACK wächst cwnd um ein Segment. Falls das Fenster es erlaubt, darf ein neues Paket folgen. Auch dieser Schritt bleibt an Evidenz gebunden: Eine weitere Ankunft hat einen weiteren Platz im Flugmodell freigemacht. Aus einem temporären Ersatzrecht wird keine dauerhafte höhere Rate.

Ein ACK für neue Daten zieht den Kredit ein

Sobald ein ACK neue Daten bestätigt, setzt RFC 2001 cwnd auf ssthresh. Die drei anfänglichen Einheiten und alle späteren Zuschläge verschwinden. Übrig bleibt ungefähr die Hälfte der vorherigen Congestion Window, nun im Modus Congestion Avoidance.

Diese Deflation ist keine Nebensache, sondern die Beweisgrenze des Verfahrens. Die Sonderbefugnis bestand nur, solange wiederholte ACKs auf abgeflossene spätere Segmente hindeuteten. Mit dem Schließen der Lücke endet sie.

Auch der voranschreitende ACK ist kein universeller Erfolgsnachweis. RFC 793 begrenzt seine Bedeutung auf die Verantwortung des empfangenden TCP; die Zustellung an den Endnutzer ist damit nicht garantiert. Der ACK verrät ebenso wenig, welchen Pfad eine Kopie nahm oder warum das Original die kumulative Grenze nicht voranbrachte.

Welche Spur erhalten bleiben muss

Eine prüfbare Aufzeichnung enthält ACK-Nummer, Duplicate-Zähler, offene Sequenzbereiche, cwnd, ssthresh, den erneuten Versand, jeden temporären Zuschlag und den ersten ACK mit Grenzfortschritt. Wer all das zu einem Ereignis „Recovery erfolgreich“ verdichtet, löscht den Übergang von Beobachtung zu Inferenz, Befugnis und Ergebnis.

Der RFC-Editor-Eintrag führt W. Richard Stevens’ Dokument vom Januar 1997 als Proposed Standard und als durch RFC 2581 überholt. HTML und Text enthalten den Algorithmus; der Datatracker dokumentiert den Status. RFC 1122 liefert den Kontext für ACKs bei ungeordnetem Eingang, RFC 2581 hier ausschließlich die Nachfolgelinie.

Der Beitrag behauptet nicht, heutige TCP-Stacks führten RFC 2001 wörtlich aus. Er bewertet keine späteren Algorithmen, erzählt keine Timer-Geschichte und leitet keine Aussagen über 1997 aus moderner Implementierungsleistung ab. Gegenstand ist die damalige Logik aus Empfangshinweis, begrenzter Schlussfolgerung, befristetem Kredit und Deflation.