Zusammenfassung

  • RFC 6298 startet den Wiederübertragungstimer neu, wenn ein ACK neue Daten bestätigt, nicht bei jedem eintreffenden ACK.
  • Der Timer beginnt beim Senden von Daten, endet nach der Bestätigung aller ausstehenden Daten und wählt bei Ablauf das älteste unbestätigte Segment.

Die Bestätigungsgrenze bestimmt die Frist

Der Timer schützt Daten, die noch offen sind. Wird ein Datenpaket gesendet und läuft kein Timer, beginnt er mit dem aktuellen RTO. Weitere Sendungen verschieben diese Frist nicht automatisch.

Regel 5.3 erlaubt einen Neustart nur dann, wenn das ACK neue Daten bestätigt. Die bekannte Empfangsgrenze ist damit vorgerückt; für das nun älteste ausstehende Segment beginnt ein neues RTO-Intervall.

Ein ACK, das lediglich die alte Grenze wiederholt, erfüllt diese Bedingung nicht. Daraus folgt, dass doppelte ACKs die Frist für ungelöste Daten nicht fortlaufend nach außen schieben können. Das ist keine Aussage, dass doppelte ACKs im TCP allgemein nutzlos wären.

Sind alle ausstehenden Daten bestätigt, wird der Timer abgeschaltet. Läuft er ab, sendet der Absender das älteste noch unbestätigte Segment erneut.

Verbindliche Grenze und empfohlener Ablauf

RFC 6298 verlangt, dass ein Segment nicht früher als ein RTO nach seiner vorherigen Übertragung erneut gesendet wird. Den Ablauf aus Start, Stopp und Neustart beschreibt sie als empfohlenen Algorithmus. Diese verbindliche Zeitvorgabe ist daher von der empfohlenen Umsetzung zu unterscheiden.

Die Quelle belegt nicht das Verhalten jeder heutigen Implementierung. Sie behandelt hier auch weder verzögerte ACKs noch RTT-Messungen, Fast Retransmit, SACK, Congestion Control oder die Rückkehr nach einem Timeout.

Quellen