Aller au contenu principal

3.1. Packet Loss (Perte de paquets)

3.1. Packet Loss (Perte de paquets)

DTLS utilise un simple temporisateur de retransmission pour gérer la perte de paquets. La figure 1 illustre le concept de base en utilisant la première phase de la poignée de main DTLS:

         Client                                   Server
------ ------
ClientHello ------>

X<-- HelloRetryRequest
(lost)

[Timer Expires]

ClientHello ------>
(retransmit)

Figure 1: Exemple de retransmission DTLS

Une fois que le client a transmis le message ClientHello, il s'attend à voir un HelloRetryRequest ou un ServerHello du serveur. Cependant, si le temporisateur expire, le client sait que soit le ClientHello, soit la réponse du serveur a été perdu, ce qui amène le client à retransmettre le ClientHello. Lorsque le serveur reçoit la retransmission, il sait qu'il doit retransmettre son HelloRetryRequest ou ServerHello.

Le serveur maintient également un temporisateur de retransmission pour les messages qu'il envoie (autres que HelloRetryRequest) et retransmet lorsque ce temporisateur expire. Ne pas appliquer de retransmissions au HelloRetryRequest évite la nécessité de créer un état sur le serveur. Le HelloRetryRequest est conçu pour être suffisamment petit pour qu'il ne soit pas fragmenté lui-même, évitant ainsi les préoccupations concernant l'entrelacement de plusieurs HelloRetryRequest.

Pour plus de détails sur les délais d'expiration et la retransmission, voir la section 5.8.