10. Terminazione della connessione
10. Terminazione della connessione
Una connessione QUIC stabilita può essere terminata in uno di tre modi:
- Timeout di inattività (Sezione 10.1)
- Chiusura immediata (Sezione 10.2)
- Reset senza stato (Sezione 10.3)
10.1 Timeout di inattività
Se un max_idle_timeout è specificato da uno degli endpoint nei suoi parametri di trasporto (Sezione 18.2), la connessione viene chiusa silenziosamente e il suo stato viene scartato quando rimane inattiva per un periodo superiore al minimo del valore max_idle_timeout annunciato da entrambi gli endpoint.
10.1.1 Test di vitalità
Un endpoint può utilizzare frame PING (Sezione 19.2) per testare la vitalità di una connessione o per prevenire il timeout di inattività.
10.1.2 Differimento del timeout di inattività
Un endpoint potrebbe dover inviare pacchetti che richiedono acknowledgment per evitare un timeout di inattività se desidera mantenere una connessione.
10.2 Chiusura immediata
Un endpoint invia un frame CONNECTION_CLOSE (Sezione 19.19) per terminare immediatamente la connessione.
10.2.1 Stato di connessione in chiusura
Dopo aver inviato un frame CONNECTION_CLOSE, un endpoint entra nello stato di chiusura.
10.2.2 Stato di connessione in svuotamento
Lo stato di svuotamento viene raggiunto quando un endpoint riceve un frame CONNECTION_CLOSE.
10.2.3 Chiusura immediata durante l'handshake
Gli endpoint possono chiudere una connessione durante l'handshake inviando un frame CONNECTION_CLOSE in pacchetti che utilizzano il livello crittografico appropriato.
10.3 Reset senza stato
Un reset senza stato è fornito come opzione di ultima risorsa per un endpoint che non ha accesso allo stato di una connessione.
10.3.1 Rilevamento di un reset senza stato
Un endpoint rileva un potenziale reset senza stato esaminando i 16 byte finali di un datagramma.
10.3.2 Calcolo di un token di reset senza stato
Il token di reset senza stato DEVE essere difficile da indovinare.
10.3.3 Cicli
Il design di un reset senza stato è tale che senza la conoscenza del token di reset senza stato, un reset senza stato non può essere generato da un endpoint.