Zum Hauptinhalt springen

10. Verbindungsbeendigung

10. Verbindungsbeendigung​

Eine etablierte QUIC-Verbindung kann auf eine von drei Arten beendet werden:

  • Idle-Timeout (Abschnitt 10.1)
  • Sofortiges Schließen (Abschnitt 10.2)
  • Zustandsloser Reset (Abschnitt 10.3)

10.1 Idle-Timeout​

Wenn ein max_idle_timeout von einem der Endpunkte in seinen Transportparametern angegeben wird (Abschnitt 18.2), wird die Verbindung stillschweigend geschlossen und ihr Zustand verworfen, wenn sie länger inaktiv bleibt als der Mindestwert des von beiden Endpunkten angekündigten max_idle_timeout-Werts.

10.1.1 Lebenszeittest​

Ein Endpunkt kann PING-Frames (Abschnitt 19.2) verwenden, um die Lebendigkeit einer Verbindung zu testen oder ein Idle-Timeout zu verhindern.

10.1.2 Verzögerung des Idle-Timeouts​

Ein Endpunkt muss möglicherweise ACK-auslösende Pakete senden, um ein Idle-Timeout zu vermeiden, wenn er eine Verbindung aufrechterhalten möchte.

10.2 Sofortiges Schließen​

Ein Endpunkt sendet einen CONNECTION_CLOSE-Frame (Abschnitt 19.19), um die Verbindung sofort zu beenden.

10.2.1 Schließender Verbindungszustand​

Nach dem Senden eines CONNECTION_CLOSE-Frames wechselt ein Endpunkt in den Schließzustand.

10.2.2 Entwässernder Verbindungszustand​

Der Entwässerungszustand wird betreten, wenn ein Endpunkt einen CONNECTION_CLOSE-Frame empfängt.

10.2.3 Sofortiges Schließen während des Handshakes​

Endpunkte können eine Verbindung während des Handshakes schließen, indem sie einen CONNECTION_CLOSE-Frame in Paketen mit der entsprechenden kryptografischen Ebene senden.

10.3 Zustandsloser Reset​

Ein zustandsloser Reset wird als letzte Option für einen Endpunkt bereitgestellt, der keinen Zugriff auf den Zustand einer Verbindung hat.

10.3.1 Erkennung eines zustandslosen Resets​

Ein Endpunkt erkennt einen potenziellen zustandslosen Reset, indem es die letzten 16 Bytes eines Datagramms untersucht.

10.3.2 Berechnung eines zustandslosen Reset-Tokens​

Das zustandslose Reset-Token MUSS schwer zu erraten sein.

10.3.3 Schleifen​

Das Design eines zustandslosen Resets ist so gestaltet, dass ohne Kenntnis des zustandslosen Reset-Tokens ein zustandsloser Reset nicht von einem Endpunkt generiert werden kann.