3.1. Packet Loss (Perdita di pacchetti)
3.1. Packet Loss (Perdita di pacchetti)
DTLS utilizza un semplice timer di ritrasmissione per gestire la perdita di pacchetti. La figura 1 dimostra il concetto di base utilizzando la prima fase dell'handshake DTLS:
Client Server
------ ------
ClientHello ------>
X<-- HelloRetryRequest
(lost)
[Timer Expires]
ClientHello ------>
(retransmit)
Figura 1: Esempio di ritrasmissione DTLS
Una volta che il client ha trasmesso il messaggio ClientHello, si aspetta di vedere un HelloRetryRequest o un ServerHello dal server. Tuttavia, se il timer scade, il client sa che o il ClientHello o la risposta dal server è stata persa, il che fa sì che il client ritrasmetta il ClientHello. Quando il server riceve la ritrasmissione, sa di dover ritrasmettere il suo HelloRetryRequest o ServerHello.
Il server mantiene anche un timer di ritrasmissione per i messaggi che invia (diversi da HelloRetryRequest) e ritrasmette quando quel timer scade. Non applicare ritrasmissioni al HelloRetryRequest evita la necessità di creare stato sul server. L'HelloRetryRequest è progettato per essere abbastanza piccolo da non essere esso stesso frammentato, evitando così preoccupazioni sull'interleaving di più HelloRetryRequest.
Per maggiori dettagli sui timeout e sulla ritrasmissione, vedere la sezione 5.8.