编程知识 cdmana.com

[réseau informatique] couche transport - TCP

TCP Est l'un des protocoles de réseau les plus importants,Il garantit une transmission fiable des données sur le réseau,Utilisation équitable des ressources du réseau avec les connexions réseau.

  • Cet article est un article de type record et inductif,Toutes les conclusions sont tirées de livres faisant autorité et de vérifications de la pratique personnelle,En cas d'erreur,Je vous en prie.,Merci beaucoup.
  • Veuillez indiquer la source au début du texte:【Réseau informatique】Niveau de transport - TCP - Nuggets (juejin.cn)
  • L'article n'est pas encore terminé,Merci beaucoup.

Série d'articles:

Généralités

TCP Au - dessus des exigences de base du niveau de transportTCP Plusieurs services supplémentaires sont disponibles,C'est - à - dire:Service duplex completTransmission fiable des donnéesEtContrôle de la congestion.

  • Service duplex completPermettre aux processus de se connecter les uns aux autres dans la même connexion、Envoyer des données à l'autre en même temps.
  • Transmission fiable des données Est orienté vers le processus ,Ça fait TCP C'est vrai. 、Transfert ordonné des données du processus émetteur au processus récepteur.
  • Contrôle de la congestion Est orienté vers Internet ,Il permet à chaque connexion via une liaison réseau congestionnée de partager également la largeur de bande de la liaison réseau.

TCP Message

TCP_Segment.jpg

TCP En - tête du segment de message par Port SourcePort de destinationNuméro de sérieNuméro de confirmationDécalage des donnéesPlace réservéeBit de drapeauFenêtre de réceptionInspection etPointeur d'urgenceOptionsEtRemplissage des donnéesComposition.

  • 16 BitwisePort SourceEtPort de destination Est une exigence pour le niveau de transport .
  • 32 BitwiseNuméro de sérieEt 32 BitwiseNuméro de confirmationPour un transfert de données fiable.
  • 4 BitwiseDécalage des données Utilisé pour enregistrer la longueur de la tête ,Parce qu'il y a des options dans cette zone de la tête,Donc la longueur de la tête n'est pas fixe.
  • 6 BitsPlace réservée Pour les extensions futures .
  • 6 BitsBit de drapeauUtilisé pour représenter TCP Type et état du message .
  • 16 BitsFenêtre de réceptionLe nombre d'octets que vous souhaitez recevoir.
  • 16 BitsChecksum Pour le contrôle des erreurs .
  • 16 BitsPointeur d'urgenceUtilisé pour pointer vers le réglage appliqué à“Urgent”Données, Parce que la longueur maximale de la fenêtre est 16 Bits, Donc C'est pareil. 16 Bits.

Les options suivantes sont utilisées pour effectuer des opérations supplémentaires, Remplir parce que TCP L'Unit é de tête est 32 Bits, Remplir la longueur de la tête de 32 Multiple de bits . Les options sont généralement vides ,Donc, TCP La longueur normale de la tête est 20 Octets.

6 Les bits de drapeau sont: ACKRSTSYNFINCWR Et ECE.ACK Indique que la valeur du champ de confirmation est valide.RSTSYN Et FIN Pour l'établissement et la résiliation de la connexion.CWR Et ECE Pour le contrôle de la congestion .

Numéro de série et numéro de confirmation

Le numéro de séquence est basé sur le flux d'octets transmis,Au lieu d'être construit sur une séquence de segments transmis.Ainsi, le numéro de séquence d'un segment de message est le numéro de flux d'octets du premier octet de données dans ce segment de message. Par exemple, le segment de message actuel transmet le paragraphe 4000 À 5000 Bits,Le numéro de séquence actuel est le numéro de séquence de départ + 4000.

Le numéro de confirmation est le numéro de séquence de l'octet suivant que le destinataire s'attend à recevoir de l'expéditeur.Si le numéro de séquence reçu est 4000, La longueur du contenu des données est 1000,Le numéro de confirmation dans le datagramme de confirmation retourné est 5001.

Si le destinataire reçoit 0 ~ 533 Et 900 ~ 1024 Message de portée ,Le numéro d'accusé de réception dans le datagramme d'accusé de réception du récepteur continuera d'être 534,Confirmer seulement le premier octet manquant dans le flux,Donc, TCP Appelé fournir Confirmation cumulative(Cumulative Acknowledgement).

Établissement TCP Connexion

TCP Liens avec TCP Déconnecter les deux sections ,Les segments de message sont directement appelés messages.

TCP Il faut au moins trois TCP Le message peut être créé ,Et ces trois messages sont envoyés alternativement,Donc ce processus est aussi appelé“Trois poignées de main”,Mais en fait, ce n'est pas du tout figuratif et pertinent. Mais parce que trop de gens l'utilisent , Facile à exprimer , C'est parti. .

Processus

Le client est prêt à se connecter au serveur,À ce stade, le client TCP In CLOSED Statut,Serveur TCP In LISTEN Statut.

  1. Le client envoie un message de connexion au serveur, En - tête du message SYN La position du drapeau est 1,Donc appelé SYN Message.SYN Numéro de séquence initial dans le message client_isn Est généré et stocké au hasard par le client.SYN Message envoyé, client entré SYN_SENT Statut.

  2. Le serveur obtient SYN Message, Et pour cela, TCP Allocation de connexion TCP Cache et variables,Et envoyer un message permettant la connexion au client. Dans ce message SYN Le BIT de drapeau est réglé à 1,ACK Le BIT du drapeau est 1, Le champ Numéro de confirmation est client_isn + 1, Numéro de série initial server_isn Généré au hasard par le serveur . Le message est donc appelé SYNACK Message.SYNACK Message envoyé, serveur entré SYN_RCVD Statut.

  3. Le client obtient SYNACK Message, Le client commence à assigner TCP Cache et variables,Et envoyer un message pour confirmer le serveur. Parce que la connexion est déjà établie ,Le message SYN Le BIT du drapeau est 0,ACK Le BIT du drapeau est 1,Le numéro de confirmation est server_isn + 1,Le numéro de série est client_isn + 1. À ce stade, le client TCP Entrée ESTABLISHED Statut.

  4. Réception du serveur ACK Message, Pas de réponse ,Entrée ESTABLISHED Statut.

image.png

Idées de conception

TCP La connexion est conçue pour trois fois TCP Raison du paquet ,Oui.Comment construire un canal duplex complet au moindre coût?

Réfléchis d'abord. Comment construire un canal simplex au moindre coût? La réponse est très simple. ,Hôte A Vers l'hôte B Envoyer une demande de création ,Hôte B Accord sur la création .Besoin 2 Mise en œuvre des messages .

Si nous voulons construire un canal duplex, Il faut donc que l'hôte A Créer un hôte B Canal simplex pour , Laissez l'hôte B Créer un hôte A Canal simplex pour .L'implémentation la plus simple est quatre messages.Respectivement. A À B,B À A;B À A,A À B. Parce qu'il y aura deux B À A Message de,Pour qu'ils puissent être optimisés et combinés,C'est la solution la plus simple pour construire un canal duplex complet.

Il n'est donc pas possible d'établir un canal de connexion duplex complet avec seulement deux poignées de main,Seuls les canaux unidirectionnels peuvent être établis.

D'un autre point de vue, Lorsque le serveur envoie SYNACK Après le message,Le client sait que le serveur fonctionne correctement,À ce stade, seul le client est connecté à l'état établi,Le serveur ne sait pas si le client est toujours en ligne、Reçu ou non SYNACK Message,Il n'est pas encore possible d'établir une connexion avec le client.Mais l'essence est que deux messages ne peuvent pas construire un canal duplex complet.

Il n'est pas juste de discuter du point de vue de la poignée de main,Parce que la poignée de main est une mauvaise métaphore.

SYN Inondations

Trois poignées de main sont conçues pour être DOS Vulnérabilité exploitée , Le plus célèbre est SYN Inondations.SYN Les attaques d'inondation sont envoyées au serveur par un grand nombre de clients SYN Message,Faire en sorte que le serveur initialise un grand nombre de TCP Les ressources sont épuisées en raison de la connexion . Parce que le serveur reçoit SYN Le message doit être initialisé TCP Cache de connexion et variables ,Envoyer à nouveau SYNACK Message, Le client reçoit maintenant SYNACK Ne pas répondre après le message ,Le serveur n'attend qu'un délai pour les libérer TCP Connexion,De cette façon, les ressources du serveur seront épuisées en peu de temps.

SYN Cookie

SYN Les attaques contre les inondations peuvent passer SYN Cookie Défense efficace . La façon de se défendre est , Non reçu SYN Initialisation immédiate du message TCP Connexion,Attendre la troisième poignée de main du client pour initialiser et établir directement TCP Connexion.Et identifier quel client a fait la troisième poignée de main,C'est par SYN Cookie Réalisé.

Lorsque le serveur reçoit SYN Heure du message,Le serveur ne génère pas ce message TCP Connexion,Ne sauvegardez pas non plus d'informations sur le client,Au lieu de cela, l'information est conservée dans le SYNACK Message .Adoption SYN Source du message IP Adresse、Le numéro de port source et la clé locale génèrent un cookie,Et mettre cookie En tant que SYNACK Numéro de série du message seq Envoyer au client .À ce stade, la réponse du client doit ajouter un numéro de séquence comme ack Dans le message de la troisième poignée de main.Si le serveur reçoit ACK Message,Et découvrir que local n'a pas établi ce TCP Connexion, Les paires de clés sont utilisées ack Pour décrypter, Extraire la source IP Et le numéro de port source dans le message courant IP Par rapport au numéro de port ,Le même message indique que la troisième poignée de main est légale, Le serveur commence à construire TCP Connexion.

Le troisième message est utilisé pour stocker les données

Lorsque le serveur retourne SYNACK Heure du message,Le client peut établir une connexion au serveur, C'est le canal simplex. ,Les données ne peuvent être envoyées au serveur que par le client. Donc à partir de ce moment, ,Tous les messages envoyés par le client sont des messages de transmission de données,Pas avec SYN Message de connexion à la demande du drapeau .Donc le message de la troisième poignée de main est un message de données,Le client peut stocker des données à l'intérieur.

Et pratiquement tout TCP Réalisation, Ils se serreront la main une troisième fois. ACK Début de la transmission des données dans le message .

Déconnecter TCP Connexion

TCP La déconnexion nécessite généralement quatre TCP Réalisation du paquet ,Comme ce processus ressemble à un signe d'adieu,Il est donc appelé“Quatre fois.”,C'est une bonne analogie..

Mais il y a une erreur de beaucoup de gens, Quatre vagues ne sont pas nécessaires. , Au moins trois. TCP Mise en œuvre de la déconnexion du paquet , Et cette situation ,Très fréquent dans la pratique.

Le plus important pour ceux qui apprennent l'informatique est la capacité de penser,Au lieu d'accepter simplement la connaissance et la capacité de réciter. En fait, peu importe ce qu'on apprend, ,Le plus important est la capacité de penser.

Processus

Le processus client est prêt à se déconnecter du processus serveur, Avant la résiliation CONNECTED Statut.

  1. Client TCP Envoyer un message de terminaison au serveur,La tête FIN Le BIT du drapeau est 1,Appelé FIN Message,Indique que le client est prêt à mettre fin à la connexion.Le client entre dans FIN_WAIT_1 Statut,In FIN_WAIT_1 Le client d'état peut encore recevoir des données du serveur, Mais n'envoie pas de données de façon proactive .

  2. Serveur reçu FIN Après le message, Envoyer au message ACK Message de réponse,Indique que le serveur a reçu le signal d'arrêt.Le serveur entre CLOSE_WAIT Statut.À ce stade, le serveur peut encore avoir des ressources à envoyer au client,In CLOSE_WAIT Le serveur d'état peut encore envoyer des ressources au client.

  3. Envoi des ressources restantes du serveur terminé, Envoyer au client FIN Message,Indique que le serveur est prêt à mettre fin à la connexion. Entrée du serveur LAST_ACK Statut.

  4. Reçu par le client FIN Après le message,Envoyer ACK Message de réponse,Demander au client de se déconnecter.Le client entre dans TIME_WAIT Statut,Attendez. 2MSL Après, Client déconnecté entrant CLOSED Statut.Si ACK Message manquant,Dans TIME_WAIT Le client peut retransmettre le message pendant l'état.

  5. Serveur reçu ACK Après le message,Fermez la connexion sans aucune réponse,Entrée CLOSE Statut.

Idées de conception

Déconnecter TCP Quatre connexions sont nécessaires TCP Message,Pour discuter de la conception de ces quatre messages,Il faut réfléchir à la façon dont la déconnexion devrait fonctionner. Déconnexion du canal duplex complet , Nécessité de déconnecter les deux parties , C'est - à - dire déconnecter A À B Direction et B À A Connexion directionnelle .

Déconnecter un A À B Connexion à,C'est tout. A Vers B Envoyer un avis de déconnexion ,B Envoyer un avis de confirmation .B Pas le droit de refuser , Parce que les données sont A À B De,A Ne pas envoyer de données sans envoyer de données.

La déconnexion de la double connexion nécessite donc deux opérations ci - dessus,

  1. A Notification B.
  2. B Confirmation A Déconnecter.
  3. B Notification A.
  4. A Confirmation B Déconnecter.

TCP Il y a un point dans l'accord. ,Même si l'appareil n'est pas construit TCP Connexion,C'est vrai. TCP Réponse du paquet ,C'est - à - dire ACK,Alors... A Déconnecter B Après ça, ça ira. B Confirmer.

Alors, puisque 2 Et 3 Toutes les étapes sont B Envoyé par,Pourquoi ne pas fusionner?

La réponse est oui. !TCP Le Protocole ne l'interdit pas.La raison pour laquelle la conception par défaut est en quatre étapes,Parce que A Déconnecter B Après,C'est juste un signe. A Aucune donnée envoyée à B C'est,B Peut - être qu'il reste des données à envoyer à A.Donc, dans 2 Et 3 Entre les étapes ,B Les données peuvent être envoyées en continu à A,C'est juste... A Impossible d'envoyer les données à B C'est tout..En ce moment A Je peux toujours répondre. ,Parce que la réponse n'exige pas de connexion.Attendez. B Aucune donnée à envoyer après, Déconnecter à nouveau A Connectez - vous à .

Trois vagues

Si A Déconnecter B Après la connexion,B Et il n'y a pas de données à envoyer,B Vous pouvez FIN Messages et ACK Message combiné envoyé à A,C'est devenu trois vagues.

La plupart des noyaux du système TCP Les implémentations supportent trois vagues, Et en réalité, la grande majorité TCP La déconnexion de la connexion se fait par trois coups de main.Parce qu'en général, le serveur n'envoie pas de données au client., Ni déconnecter activement .Et quand un client se déconnecte activement,Le serveur n'a pas de données à envoyer..

image.png

TIME_WAIT Statut

TIME_WAIT Le sens de l'existence de l'état est ,Client ACK Le message n'a peut - être pas été transmis au serveur,Il doit donc s'assurer que le serveur reçoit ACK Message.Parce que si le répondeur ne reçoit pas ACK Message,Je le rediffuserai. FIN Message,Si le client reçoit une retransmission FIN Message, Je répète. ACK Message.

Et réglé à 2MSL La raison pour laquelle, Serveur retransmis ACK L'heure d'arrivée maximale du message est 2MSL.MSL Est la durée de vie la plus longue d'un message dans le réseau. De l'expéditeur ACK Le message est le plus long 1MSL Section des services d'arrivée , Par conséquent, le serveur 1MSL Il revient. FIN Message,En ce moment FIN Message aussi long que nécessaire 1MSL Atteindre le client ,Donc, TIME_WAIT Attendez. 2MSL.

MSL Est la durée de vie maximale du message(Maximum Segment Lifetime),Est la durée de vie maximale de tout message sur le réseau.IP Il y a un en - tête de datagramme TTL(Time to Live), Durée de vie ,Oui. IP Nombre maximum de routes que les paquets peuvent traverser,Chaque itinéraire est réduit d'un,Pour 0 Est rejeté ,Envoyer simultanément ICMP Message notifying source host.MSL Est supérieur à TTL De, Pour s'assurer que plus de MSL Le message du temps doit disparaître. .

Transmission fiable des données

TCP In IP De Le meilleur service possible Un service fiable de transmission de données a été créé au - dessus de.Assurez - vous que les données lues du cache d'envoi d'un processus au cache de réception d'un autre processus ne sont pas corrompues、 Sans discontinuité 、Flux de données non redondants et séquentiels.

TCP Adoption Livraison séquentielle Confirmation de la redondance EtDélai de retransmissionDe manière à assurer un service fiable de transmission de données.

  • Livraison séquentielle
    TCP Livraison séquentielle par numéro de série et numéro de confirmation, Mécanisme de confirmation par accumulation ,Le récepteur indique toujours que le prochain octet des données séquentielles a été accepté.

  • Confirmation de la redondance
    Lorsque l'extrémité réceptrice reçoit un segment de message plus grand que le numéro de série de données requis,L'accusé de réception du message précédent du message manquant sera envoyé à plusieurs reprises,Faire savoir à l'expéditeur qu'un segment de message manquant se produit au moyen d'un mécanisme de confirmation redondant,À ce stade, l'expéditeur retransmettra le segment manquant.

    Parce que TCP Utiliser le mécanisme de confirmation de l'accumulation ,Après que l'expéditeur a envoyé plusieurs messages consécutifs,Si un message précédent est perdu,Le destinataire envoie à plusieurs reprises une confirmation du message précédent du message manquant, Ce message de confirmation répété est appelé Redondance ACK.

  • Délai de retransmission
    L'expéditeur démarre le minuteur chaque fois qu'un segment de message est envoyé,Si le minuteur n'a pas reçu l'accusé de réception du segment de message dans le délai imparti,L'expéditeur retransmettra le segment.

Plusieurs détails méritent d'être notés,Hypothèses A、B、C Est le segment de message que l'expéditeur envoie en continu:

  • Message de confirmation manquant
    Si le destinataire A Segment de message de confirmation manquant pour ,Si l'expéditeur n'a pas envoyé B,Il sera là. A Après le délai A Effectuer une retransmission en retard . Si l'expéditeur continue d'envoyer B、C, La partie réceptrice A Effectuer une confirmation de redondance .

  • Double intervalle de temps
    TCP Retransmission par Timeout ,Le temps d'arrêt suivant est fixé au double du temps d'arrêt précédent.Cela permet en fait de contrôler la congestion sous une forme limitée,Parce que les temps d'arrêt sont probablement dus à la congestion du réseau, Si les paquets sont retransmis fréquemment ,Cela aggravera la congestion du réseau.

  • Retransmission rapide
    Lorsque l'expéditeur reçoit une paire A Trois redondances ACK Heure, L'expéditeur sera B Retransmission avant expiration du segment de message B.

  • Sélectionner la confirmation
    Si l'expéditeur envoie continuellement A、B、C,Exactement. B Segment manquant, Le récepteur enregistre A Cache simultané C,Et oui. A Effectuer une confirmation de redondance . L'envoi est retransmis B. Lorsque le récepteur reçoit B Après, Oui. C Confirmation de,Skip B.

Contrôle du débit

TCP OffreServices de contrôle du débit(Flow-control Service)Pour éliminer la possibilité que l'expéditeur déborde le cache du récepteur.Le contrôle du débit est un service de correspondance de vitesse,C'est - à - dire que le taux d'envoi de l'expéditeur correspond au taux d'acceptation du récepteur.

Fenêtre de réception

TCP En faisantExpéditeurMaintenir unFenêtre de réception(Receive Window) Pour fournir des services de contrôle du débit .

Taille du cache de réception du récepteur moins la taille du cache utilisée,Est la taille restante de la fenêtre de réception.Comme la taille du cache receive a été utilisée, seule la partie réceptrice sait,La taille de la fenêtre de réception est donc calculée par le destinataire,Récepteur en plaçant la valeur de la fenêtre de réception dans TCP Head 16 Dans les champs de fenêtre de bits ,Aviser l'expéditeur de la taille des fenêtres de réception restantes.La quantité de données que l'expéditeur envoie à chaque fois doit rester inférieure à la taille de la fenêtre de réception.

Lorsque la taille de la fenêtre de réception est 0 Heure,Si rien n'est fait,Une fois que le cache de réception a été entièrement lu,Le destinataire ne peut pas rappeler à l'expéditeur que la taille de la fenêtre a été mise à jour,L'expéditeur est bloqué et ne peut pas envoyer de données.Donc, TCP La fenêtre de réception spécifiée est 0 Heure,L'expéditeur continuera d'envoyer un segment de message avec seulement un octet de données,Ces segments de message seront reconnus lorsque la fenêtre de réception sera élargie,La nouvelle taille de la fenêtre de réception sera portée dans le message de confirmation.

Contrôle de la congestion

Le taux de transmission de l'expéditeur peut également être freiné par la congestion de la couche réseau, Ce comportement de contrôle est appelé Contrôle de la congestion.

Le contrôle de la congestion est différent du contrôle du débit,Le but du contrôle de la congestion est de résoudre le problème que le taux de transmission est supérieur au taux de liaison de propagation,.Le but principal du contrôle du débit est d'équilibrer les taux de l'expéditeur et du récepteur.

Raisons

Le débit par liaison dans le réseau est limité. La congestion du réseau 4 Effets négatifs :

  1. Délai de mise en file d'attente:Lorsque le taux de paquets approche de la capacité de liaison,Les paquets subiront d'énormes retards de file d'attente.
  2. Groupe manquant:Lorsque les paquets sont rejetés en raison de la congestion,Toute la capacité de transmission utilisée par chaque routeur amont pour transmettre le paquet est gaspillée.
  3. Retransmission fréquente :Lorsque les paquets sont rejetés en raison de la congestion, L'expéditeur doit effectuer une retransmission .
  4. Pression de routage : Le paquet a rencontré un retard important ,L'expéditeur fera une retransmission inutile,Provoque le routeur à utiliser sa bande passante de liaison pour transmettre des copies de paquets inutiles.

Méthodes de contrôle de la congestion

Face à la congestion du réseau , La solution fondamentale est Utilisez certaines méthodes pour que l'expéditeur détecte la congestion du réseau,Laisser l'expéditeur réduire le taux d'envoi.Il y a généralement deux façons:

  1. Contrôle de la congestion de bout en bout .Le système terminal surveille le comportement du Réseau pour voir si le lien est bloqué.
  2. Contrôle de la congestion assisté par le réseau .La couche réseau fournit à l'expéditeur des informations sur l'état de congestion.

TCP Contrôle de la congestion

TCP Utilisation du contrôle de la congestion de bout en bout,Parce que IP La couche réseau ne fournit pas de rétroaction explicite sur la congestion du réseau au système Final, C'est une violation du Protocole de hiérarchie. .

TCP L'expéditeur maintient un Fenêtre de congestionLa variable limite la vitesse à laquelle l'expéditeur peut envoyer du trafic au réseau. Pour réaliser le mécanisme de contrôle de la congestion .

Perception de la congestion

Quand TCP L'expéditeur reçoit l'événement de perte de paquets trouvé,L'expéditeur détermine que la liaison de propagation est congestionnée. Les événements de perte de paquets comprennent: Délai de confirmation Et Confirmation répétée ,Plus précisément, trois mêmes ACK.

On peut donc dire que TCP L'accusé de réception est utilisé pour déclencher le contrôle de la congestion, De cette façon, TCP On dit que oui. Auto - chronométrage (Self-clocking)De.

Algorithme de contrôle de la congestion

TCP L'algorithme de contrôle de la congestion est divisé en trois parties principales:1. Démarrage lent;2.Prévention de la congestion;3. Récupération rapide. Démarrage lent et évitement de la congestion oui TCP Partie obligatoire , La récupération rapide est la partie recommandée , Non requis .

  1. Démarrage lent
    Pendant le démarrage lent ,TCP Le but de l'expéditeur est de trouver rapidement la quantité de bande passante disponible. La fenêtre de congestion commence par 1 Longueur maximale du segment de message(Maximum Segment Size,MSS),Chaque fenêtre de message d'accusé de réception est ajoutée 1MSS.Donc chaque fois qu'un aller - retour est retardé(Round Trip Time,RTT),La taille de la fenêtre de congestion doublera.Ainsi, la taille de la fenêtre de congestion pendant le démarrage lent augmente exponentiellement.

    En cas de perte de paquets ,TCP L'expéditeur réinitialise la fenêtre de congestion à 1 Et redémarrer le démarrage lent ,Et réglez la moitié de la longueur maximale de la fenêtre lors du dernier démarrage lent au seuil de démarrage lent actuel.Lorsque la longueur de la fenêtre de démarrage lent atteint ou dépasse ce seuil, Entrer dans le mode d'évitement de la congestion .

  2. Prévention de la congestion
    En mode d'évitement de la congestion ,La longueur de la fenêtre congestionnée est égale ou supérieure à la moitié de la longueur de la fenêtre au moment de la dernière congestion,Indique qu'il y a maintenant une forte probabilité qu'un blocage se produise.Ainsi, la longueur de la fenêtre ne doublera plus,Au lieu de cela, la fenêtre est agrandie en ajoutant une longueur maximale de segment à chaque délai aller - retour.

    La mise en œuvre se fait généralement par une nouvelle confirmation à chaque arrivée, L'expéditeur agrandit la fenêtre MSS/cwnd (cwnd Longueur de la fenêtre de congestion ) Mode octet ,Quand un RTT Fin,Parce que cwnd * (MSS / cwnd) = MSS,La fenêtre n'ajoute qu'une seule longueur maximale de segment.

    Fenêtre en croissance linéaire, Vous rencontrerez également un événement de perte de paquets ,Il y a différentes décisions pour différents événements de perte de paquets.

    • Pour les événements de temporisation ,Compatible avec le blocage rencontré lors d'un démarrage lent,Réglez la moitié de la taille actuelle de la fenêtre au seuil de démarrage lent actuel, Réinitialiser la longueur de la fenêtre à 1 Et revenir au processus de démarrage lent.
    • Pour redondance ACK Événements,Réduire de moitié la taille actuelle de la fenêtre et ajouter 3(Plus 3 Redondance ACK), Et passer à la phase de récupération rapide .
  3. Récupération rapide
    En phase de récupération rapide , Pour les causes TCP Segment de message manquant entrant dans l'état de récupération rapide,Pour chaque redondance reçue concernant ce segment de message ACK,Augmente la longueur de la fenêtre de congestion 1 - Oui. MSS.Final, Jusqu'à la perte du segment ACK À l'arrivée,L'expéditeur entre dans l'état d'évitement de la congestion après avoir réduit la taille de la fenêtre de congestion. Si un événement de temporisation se produit ,Réglez la moitié de la taille de la fenêtre au seuil de démarrage lent et entrez l'état de démarrage lent.

Vue d'ensemble,TCP Le contrôle de la congestion est principalement : Augmentation retardée par aller - retour 1 Longueur maximale du segment de message , Jusqu'à ce qu'un événement de temporisation se produise , Réduire de moitié la fenêtre .Donc, TCP Le contrôle de la congestion est souvent appeléAugmentation Additive、Moins multiplicatif Mode de contrôle de la congestion .L'avantage de cet algorithme de contrôle de la congestion est qu'il peut maintenir un bon débit tout en évitant la congestion.

Autres caractéristiques

TCP Mécanisme de retry

版权声明
本文为[Génie radiologique]所创,转载请带上原文链接,感谢
https://cdmana.com/2021/09/20210914164725473t.html

Scroll to Top