Traitement des pertes de segments
Qu'un réseau soit bien conçu ou non, il arrive que des données se perdent. Par conséquent, le protocole TCP fournit des méthodes de gestion des pertes de segments. Parmi elles se trouve un mécanisme de retransmission des segments contenant des données sans accusé de réception.
En général, un service sur l'hôte de destination utilisant le protocole TCP ne génère d'accusé de réception que pour les séquences contiguës d'octets. Si un ou plusieurs segments sont manquants, seules les données dans la première séquence contiguë d'octets sont reconnues. Par exemple, si les segments avec des numéros allant de 1500 à 3000 et de 3400 à 3500 sont reçus, le numéro ACK est 3001. Cela est dû au fait qu'il existe des segments avec les numéros SEQ 3001 à 3399 qui n'ont pas été reçus.
Lorsque le protocole TCP sur l'hôte source ne reçoit pas d'accusé de réception après un délai prédéterminé, il revient au dernier numéro ACK reçu et retransmet les données à partir de ce point. Le processus de retransmission n'est pas spécifié par le document RFC, mais il incombe à l'implémentation particulière du protocole TCP de le déterminer.
Dans une implémentation TCP classique, un hôte peut transmettre un segment, placer une copie du segment dans une file d'attente de retransmission et lancer un minuteur. Quand l'accusé de réception des données est reçu, le segment est supprimé de la file d'attente. Si l'accusé de réception n'est pas reçu avant l'écoulement du délai prévu, le segment est retransmis.
Cliquez sur le bouton Lecture de la figure pour voir l'animation expliquant la retransmission des segments perdus.
Aujourd'hui, les hôtes peuvent également utiliser une fonction facultative appelée « accusés de réception sélectifs » (SACK). Si les deux hôtes prennent en charge les accusés de réception sélectifs, la destination peut accuser réception des octets de segments ne se suivant pas et l'hôte ne retransmettra que les données manquantes.