当前位置:网站首页>[au cours de l'entrevue] - Comment expliquer le mécanisme de transmission fiable de TCP

[au cours de l'entrevue] - Comment expliquer le mécanisme de transmission fiable de TCP

2022-07-06 13:35:00 Li jihuan

        Un..Généralités

        La transmission fiable signifie que l'informationExpéditeur et destinataireExact、Transmission précise.TCPPrincipalement fourniInspection et、Numéro de série/Réponse de confirmation、Délai de retransmission、Fenêtre coulissante、Contrôle de la congestion et Contrôle du débitEt ainsi de suite. Transmission sexuelle.

  • Inspection et:Par inspection et,Le récepteur peut détecter s'il y a des donnéesErreurs et anomalies,S'il y a une erreur, elle sera perdue. Laisse tomber.TCPParagraphes,Resend.
  • Numéro de série/Réponse de confirmation: Le rôle du numéro de série n'est pas seulement celui de la réponse,Avec un numéro de série, les données reçues peuvent être triées par numéro de série,Et enlever le poids Données du numéro de série complexe. TCPPendant la transmission,Chaque fois que le destinataire reçoit les données,Le transporteur sera accusé de réception.C'est - à - dire envoyerACKMessage, C'estACKMessage avecNuméro de série de confirmation correspondant,Dites à l'expéditeur,Quelles données ont été reçues,Où commencer la prochaine fois?.
  • Fenêtre coulissante:La fenêtre coulissante améliore l'efficacité de la transmission des messages,L'exception que l'expéditeur envoie trop de données et que le récepteur ne peut pas gérer correctement est également évitée..
  • Délai de retransmission:Timeout retransmission signifie que le Paquet envoyé est reçuSac de confirmationLe temps entre,Si ce délai est dépassé, il sera J'ai perdu mon sac.,Retransmission requise.Le temps d'arrêt maximal est calculé dynamiquement.
  • Contrôle de la congestion:Pendant la transmission des données,Peut - être en raison d'un problème d'état du réseau,Congestion du réseau,À ce stade, le mécanisme de contrôle de la congestion est introduit.,En promettantTCPTout en étant fiable,Amélioration des performances.
  • Contrôle du débit:Si l'hôteA Tout droit vers l'hôte BEnvoyer des données, Sans tenir compte de l'hôte B La capacité d'accepter , L'hôte peut BAcceptation Le tampon est plein et ne peut plus accepter les données , Cela peut entraîner une perte massive de paquets , Déclenche le mécanisme de retransmission . Et pendant la retransmission , Si l'hôteB L'état du tampon de réception n'a pas encore été amélioré , Vous perdrez beaucoup de temps à retransmettre les données , Réduire l'efficacité de la transmission des données . Donc l'introduction d'un mécanisme de contrôle du débit ,HôteB En disant à l'hôte A Recevoir la taille du tampon vous - même , Pour que l'hôte A Contrôle envoyé Volume des données. Contrôle du débit et TCP La taille de la fenêtre dans l'en - tête du Protocole est liée à .

        2..Détails

         UnTCPSegment de message parLa têteEtCharge de donnéesDeux parties constituent,TCP Toutes les fonctions de En haut de chaque champ Le rôle de,D'abord, regardonsTCPFormat d'en - tête du segment de message(Minimum20Octets,Max.60Octets):

Les champs ont la signification suivante::

(1) Ports source et destination:Parts respectives2Octets. Le port source est utilisé pour identifier EnvoyerLeTCPSegment de messageProcessus d'application, Le port de destination est utilisé pour identifier RéceptionLeTCPSegment de messageProcessus d'application.Les fonctions de multiplexage et de multiplexage de la couche transport sont réalisées par le port.

(2) Numéro de série:Pourcentage4Octets.TCPEst orienté versFlux d'octetsDe,Alors...TCP Dans le flux de données transmis dans la connexion Chaque octet est numéroté ( Pas le contenu ). Le champ Numéro de série est utilisé pour indiquer TCP Numéro de séquence du premier octet de la charge de données du segment de message ,Comme le montre la figure ci - dessous, La valeur du champ Numéro de série est 166.

(3) Numéro de confirmation:Pourcentage4Octets, Je m'attendais à recevoir l'autre Segment suivant Charge de données de Numéro de séquence du premier octet,Et c'est vrai. Confirmation de toutes les données reçues antérieurement .Si le numéro de confirmation estN,Avant indicationN-1 Toutes les données ont été reçues correctement , Et le numéro de série attendu est NDonnées,Seulement siACK = 1Le champ de confirmation est valide,Sinon, il est invalide..

(4) Données offset:Pourcentage4Bits,Et4Octets en unités,Il a noté que:TCP Distance au début de la charge de données du segment de message TCPJusqu'où commence le segment de message,En fait, ça indiqueIndique la longueur de la tête.La longueur fixe de la tête est20Octets,Jusqu'à60Octets,Le binaire est représenté par0101Et1111.

(5) Réserve:Pourcentage6Bits,Pas actuellement utilisé,Donc C'est réglé à0.

(6) Position d'urgence URG:Lorsque sa valeur est1Heure,Indique que le champ du pointeur d'urgence est valide. Il indique au système qu'il y a des données d'urgence dans ce segment de message ,Il devrait être transmis dès que possible.MaisURGDoit être utilisé avec le pointeur d'urgence, C'est - à - dire que les octets du premier octet au pointeur d'urgence sont des données d'urgence .

(7) Confirmez le BIT ACK:Seulement siACK=1Heure,Le champ Numéro de confirmation est valide.TCPLe règlement,Après l'établissement de la connexion, tous les segments de message transmis doiventACKSet As1.

(8) Position de poussée PSH:TCPBien reçu.PSH=1Segment du message, Recevoir le processus de demande pour livraison rapide ,Au lieu d'attendre que tout le cache soit plein avant de le livrer.

(9) Réinitialiser RST:QuandRST=1Heure,Ça veut direTCP Une grave erreur s'est produite dans la connexion ,La connexion doit être libérée,Puis rétablir la connexion de transport.

(10) Synchroniser les bits SYN:SYN=1Indique qu'il s'agit d'une demande de connexion ou d'un message de réception de connexion.SYN = 1 Et ACK = 1PourTCPSection du message de confirmation de la demande de connexion.

(11) Bit de terminaison FIN:Pour libérer une connexion.FIN=1Indique que les données de l'expéditeur de ce segment de message ont été envoyées,Et demande la libération de la connexion de transmission.

(12) Fenêtre:Pourcentage2Octets. Il indique la partie qui a envoyé ce paragraphe Fenêtre de réception,L'espace de cache de données du récepteur est limité, Alors utilisez la valeur de la fenêtre comme La base sur laquelle le destinataire demande à l'expéditeur de définir sa fenêtre d'envoi ,Il s'agit de contrôler la capacité de transmission de l'expéditeur en fonction de la capacité de réception du récepteur.,AppeléContrôle du débit. La taille de la fenêtre d'envoi est la taille minimale de la fenêtre de congestion et de la fenêtre de réception .

(13) Checksum:Pourcentage2Octets. Son champ d'inspection comprend la tête et les données . Le calcul doit être effectué à TCP Le segment du message est précédé de 12Fausse tête d'octet.

(14) Pointeur d'urgence:Pourcentage16Bits,Indiquez le nombre total d'octets de données d'urgence dans ce paragraphe.

(15) Options:Longueur variable.TCPAu départ, une seule option était prévue,C'est - à - dire la longueur maximale du segment de message(MSS).

(16) Remplissage:C'est pour que toute la longueur de la tête soit4Nombre entier d'octets.
       

         Comment déterminer le temps de retransmission du délai ?

        Délai de retransmissionRTOQuand on sera sûrsTCPUne des questions les plus complexes, Si le réglage est trop petit, une retransmission inutile peut augmenter la charge du réseau , Et trop grand réduit le taux de transmission , Comme le montrent les deux figures suivantes

          Dans les deux cas susmentionnés , Nous pouvons tirer la conclusion suivante ,Délai de retransmissionRTO La valeur de doit être légèrement supérieure au temps aller - retour RTTValeur de. Mais le temps aller - retour RTT En raison de la complexité du réseau peut fluctuer considérablement . Nous devons donc calculer un temps aller - retour représentatif RTT,Aussi appeléTemps de trajet en douceur, La formule de calcul n'est pas collée ,Vous pouvez le trouver vous - même., Rappelez - vous les concepts ci - dessus .

        Pour en savoir plus sur les fenêtres coulissantes :

        Lors du transfert de données,Si les données transférées sont plus grandes,Doit être divisé en plusieurs paquets pour l'envoi.TCP Une fois que le Protocole exige la confirmation des données,Pour envoyer le paquet suivant(Une question, une réponse.).C'est comme ça.,Vous perdrez du temps en attendant la confirmation du paquet de réponse. Pour éviter cela,TCPLe concept de fenêtre a été introduit.La taille de la fenêtre est le nombre maximum de paquets qui peuvent être envoyés sans attendre le paquet de réponse de confirmation(Plus de questions plus de réponses).

         L'image ci - dessus montre à gauche de la fenêtre coulissante Groupes envoyés et confirmés , À droite de la fenêtre coulissante se trouve Les groupes qui n'ont pas encore eu leur tour . La fenêtre coulissante est également divisée en deux parties,Un morceau. Paquets envoyés mais non confirmés , L'autre est dans la fenêtre Paquets à envoyer .Au fur et à mesure que les paquets envoyés sont confirmés,Les paquets en attente d'envoi dans la fenêtre sont également envoyés en continu.Toute la fenêtre se déplace vers la droite, Jean n'a pas encore Les groupes à tour de rôle entrent dans la fenêtre . Vous pouvez voir que la fenêtre coulissante agit comme un limiteur de courant,C'est - à - dire Taille actuelle de la fenêtre coulissante A décidé pour le moment TCP Taux d'envoi des paquets,.La taille de la fenêtre coulissante dépend de la valeur minimale entre la fenêtre de contrôle de la congestion et la fenêtre de contrôle du débit. 

          Plus de détails sur le contrôle de la congestion :

  • S'il y a beaucoup de ressources dans le réseau qui sont sous - alimentées en même temps , Les performances du réseau vont changer considérablement , Le débit de l'ensemble du réseau diminuera à mesure que la charge d'entrée augmentera , C'est la congestion .
  • Le contrôle de la congestion empêche l'injection de trop de données dans le réseau,Cela permet de ne pas surcharger les routeurs ou les liens du réseau.

        TCP Quatre algorithmes ont été utilisés pour contrôler la congestion:

  • Démarrage lent (slow-start);
  • Prévention de la congestion (congestion avoidance);
  • Retransmission rapide (fast retransmit);
  • Récupération rapide (fast recovery).

        L'expéditeur maintient une fenêtre de congestion(cwnd)Variable d'état pour. Sa taille dépend du degré de congestion du réseau ,Et dynamiquement en train de changer. L'expéditeur laisse sa fenêtre d'envoi inférieure ou égale à la fenêtre congestionnée .
L'idée d'un algorithme à démarrage lent est :

  1.   La fenêtre d'envoi est réglée en premier cwnd = 1,Envoyer le premier segment de message, Confirmation de chaque segment de message reçu par la suite ,cwndPlus1
  2. Chaque fois qu'une transmission passe,Fenêtre de congestioncwndDouble juste( C'est une croissance exponentielle )
  3. QuandcwndPlus grand quessthresh Au seuil ,Passer à l'algorithme d'évitement de la congestion1(Augmentation Additive)
  4. Supposons qu'il augmente à une certaine valeur (Par exemple:24),Le réseau a expiré,À ce stade,ssthresh La valeur devient la moitié de la valeur (Par exemple:12)(Réduction multiplicative),Après avoir laissécwndPosition1, Réintroduire l'algorithme de démarrage lent ,Répétez les étapes ci - dessus.

L'idée de l'algorithme d'évitement de la congestion est:Laissez la fenêtre de congestioncwnd Croissance linéaire lente  

 

L'idée de l'algorithme de retransmission rapide est :

  1. Exiger que la partie réceptrice envoie un accusé de réception répété immédiatement après avoir reçu chaque segment de message séquentiel , Au lieu d'attendre que les données soient envoyées pour une confirmation de transfert
  2. L'expéditeur ne reçoit que trois confirmations répétées en même temps,Les segments de message qui n'ont pas été reçus par l'autre partie sont immédiatement retransmis., Sans attendre l'expiration du minuteur de retransmission

L'idée d'un algorithme de récupération rapide est :

  1. Lorsque l'expéditeur reçoit trois confirmations répétées consécutives,Exécution“Réduction multiplicative”Algorithmes, Seuil de démarrage lent ssthreshRéduire de moitié
  2. Puis ne pas exécuter slow Start , Mais à partir du nouveau seuil ssthreshDébut de l'algorithme d'évitement de la congestion(Augmentation Additive)

 

原网站

版权声明
本文为[Li jihuan]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/187/202207060916514340.html