La couche IP sous TCP est une livraison au mieux et n'est pas fiable, donc TCP doit effectuer lui-même une transmission fiable. Ensuite, nous commençons par un simple protocole d’arrêt et d’attente pour expliquer comment mettre en œuvre une transmission fiable. Nous devons prêter attention à plusieurs caractéristiques d’une transmission fiable : pas de perte, pas de duplication et arrivée dans l’ordre.
Notez que TCP n'utilise pas le protocole stop-and-wait pour obtenir une transmission fiable.
Stop Waiting Protocol
L'unité de transmission de données de la couche de transport est appelée un segment. Ci-dessous, pour plus de commodité, ils sont tous appelés groupes.
Le principe du protocole stop-and-wait est très simple. Après l'envoi d'un paquet, il arrête l'envoi, attend la confirmation du paquet précédent, puis continue d'envoyer les paquets suivants.
Ce qui suit est analysé à travers plusieurs situations différentes :
Aucune situation d'erreur
La situation sans erreur est très simple , comme indiqué ci-dessous. Après l'envoi de chaque paquet, il arrête l'envoi et attend la confirmation du paquet avant de continuer à envoyer les paquets suivants.
Une erreur se produit
Il existe deux situations dans lesquelles une erreur se produit. La première est que le. Le paquet envoyé n'est pas envoyé. La livraison réussit à l'adresse de destination. Une autre situation est qu'il y a une erreur dans le paquet de données transmis. A travers l'illustration, analysons les deux situations
Regardons d'abord le fonctionnement de B : A envoie le paquet M1 Si le. Si le paquet est erroné, B rejettera le paquet après l'avoir reçu, puis ne fera rien (A ne sera pas averti qu'il a reçu le mauvais paquet). Si B ne reçoit pas le paquet M1, alors il ne sait rien et ne prendra aucune mesure.
Voyons ce que A fait ensuite : après que A envoie le paquet, mais ne parvient pas à recevoir la confirmation de B du paquet M1, lorsque le délai d'attente expire, le paquet M1 doit être renvoyé. Pour implémenter la retransmission avec délai d'attente, vous devez définir un délai d'attente. Lorsqu'un paquet envoyé est confirmé avant le délai d'expiration, le délai d'attente est réinitialisé, sinon le paquet doit être retransmis.
Il y a plusieurs points à noter :
A Après l'envoi d'un paquet, vous devez également enregistrer une copie du paquet afin d'expirer et de retransmettre. Lorsqu'un accusé de réception pour ce paquet est reçu, la copie du paquet peut être rejetée.
Vous devez numéroter chaque groupe afin de pouvoir connaître le statut d'arrivée de chaque groupe.
Le délai d'attente doit être réglé légèrement plus long que le temps de transmission moyen pour éviter les retransmissions inutiles.
Perte de confirmation et confirmation tardive
En plus des erreurs lors de la transmission des paquets, lorsque la confirmation est renvoyée, des erreurs cela se produira également - confirmations perdues et confirmations tardives.
Regardez d'abord la situation de perte de confirmation. Le paquet B de A l'a reçu et a envoyé une confirmation à A, mais la confirmation a été perdue et A ne l'a pas reçue. Parce que A n'a pas reçu la confirmation de M1, il retransmettra M1 à B après avoir attendu plus que le délai d'attente. A ce moment, B reçoit le paquet en double M1 et doit effectuer deux opérations :
Rejeter le paquet en double M1
Envoyer M1 à A confirmation. Car puisque A a retransmis M1, cela veut dire que A n’a pas reçu le paquet de M1. B doit donc continuer à envoyer des confirmations à M1.
En regardant une autre situation, la confirmation de groupe pour M1 est en retard (reçue après le délai mort). Après avoir reçu la confirmation en double, A la supprimera et ne fera rien d’autre.
Grâce au mécanisme de retransmission avec délai d'attente ci-dessus, une transmission fiable peut être obtenue sur une transmission réseau peu fiable.
Utilisation des canaux
Le protocole d'arrêt et d'attente ci-dessus est simple, mais il présente un très gros inconvénient : l'utilisation des canaux l'est également faible . Pendant le temps d'attente de la confirmation, la chaîne est complètement inactive, ce qui représente un gaspillage considérable.
Afin d'améliorer l'utilisation des canaux, la transmission par pipeline peut être utilisée. La transmission par pipeline peut envoyer en continu plusieurs paquets, ce qui peut considérablement améliorer l'utilisation des canaux.
Les protocoles qui utilisent la transmission par pipeline incluent le Protocole ARQ continu et le Protocole coulissant de fenêtre. TCP utilise le protocole de fenêtre glissante pour effectuer une transmission fiable.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!