Zusammenfassung

  • Eine TCP-Keep-Alive-Sonde fordert einen untätigen Peer auf, aus seinem Sequenzzustand zu antworten; sie prüft nicht die Gesundheit der Anwendung.
  • Reine ACK-Segmente werden nicht zuverlässig übertragen. Eine einzelne unbeantwortete Sonde beweist daher keinen Ausfall der Verbindung.

Wenn lange kein eingehendes Segment eintrifft und weder neue noch unbestätigte Daten zu senden sind, darf eine TCP-Verbindung still bleiben. Das kann bedeuten, dass eine gesunde Anwendung nichts zu sagen hat, oder dass ein Pfad beziehungsweise ein Peer nicht mehr erreichbar ist. Keep-Alive setzt an dieser Grenze an und fordert eine weitere Beobachtung des bestehenden Sequenzzustands an.

Der Mechanismus ersetzt keine Neuübertragung. Solange gesendete Daten unbestätigt sind, entscheiden bereits Neuübertragung und User Timeout darüber, ob die Zustellung fortgesetzt werden kann. Keep-Alive beginnt erst, wenn die Verbindung ansonsten inaktiv ist.

RFC 1122 beschreibt eine Sonde, deren Sequenznummer normalerweise SND.NXT-1 lautet, unmittelbar vor dem nächsten Byte für neue Daten. Ein Peer mit erhaltenem TCP-Zustand kann anhand dieses Zustands antworten. Die Sonde sollte keine Daten enthalten. Für fehlerhafte Implementierungen, die die datenfreie Form nicht korrekt verarbeiten, darf eine Kompatibilitätsform mit einem Oktett angeboten werden. Der Austausch gehört zur Transportsteuerung, nicht zum gewöhnlichen Nachrichtenstrom der Anwendung.

Keep-Alive ist optional. Bei einer Implementierung muss die Anwendung es je Verbindung ein- und ausschalten können; standardmäßig muss es deaktiviert sein. Gesendet werden darf die Sonde nur, wenn keine gesendeten Daten ausstehen und im eingestellten Intervall weder Daten noch eine Bestätigung eingetroffen sind. Das Intervall muss konfigurierbar sein; der normative Standardwert beträgt mindestens zwei Stunden.

RFC 9293 bewahrt die entscheidende Einschränkung aus RFC 1122: TCP überträgt Segmente, die nur aus ACK bestehen, nicht zuverlässig. Der Peer kann die Sonde empfangen und die erwartete Bestätigung erzeugen, die dann unterwegs verloren geht. Deshalb ist das Ausbleiben der Antwort auf eine bestimmte Sonde allein kein Beweis für einen Ausfall. Die zusammengeführte Spezifikation macht Keep-Alive auch nicht zu einem allgemeinen Verfügbarkeitsdienst.

Quellen