La position actuelle:Accueil du site>Dix problèmes dans la famille de protocoles TCP / IP

Dix problèmes dans la famille de protocoles TCP / IP

2022-07-23 01:25:59Les poissons salés ont aussi des rêves.

De:https://www.toutiao.com/i6570218601117123080/

Cet article rassemble quelquesTCP/IPLes dix principaux problèmes de la famille des Protocoles,Est une question d'entrevue à haute fréquence,Encore une fois, les compétences de base des programmeurs.

「Partage quotidien」À propos deTCP/IP,Dix points de connaissance à connaître

 

Un.、TCP/IPModèle

TCP/IPModèle de protocole(Transmission Control Protocol/Internet Protocol),Contient une série de protocoles de réseau qui constituent la base de l'internet,- Oui.InternetLe Protocole de base de.

Basé surTCP/IPLe modèle de référence divise le Protocole en quatre niveaux,Ce sont des couches de liens、Couche réseau、Couche transport et couche application.La figure ci - dessous montreTCP/IPModèles etOSIRelations de contrôle entre les couches du modèle.

「Partage quotidien」À propos deTCP/IP,Dix points de connaissance à connaître

 

TCP/IPResponsable de la communication entre les ordinateurs adjacents,Emballage stratifié.En haut se trouve la couche d'application,Il y en a ici.http,ftp,Attendez un peu, le Protocole que nous connaissons.Et la deuxième couche est la couche de transmission,CélèbreTCPEtUDPLe Protocole est à ce niveau.La troisième couche est la couche réseau,IPL'accord est là.,Il est chargé d'ajouterIPAdresses et autres données pour déterminer la destination du transfert.La quatrième couche est la couche liaison de données,Ce niveau ajoute un en - tête de protocole Ethernet aux données à transmettre,Et procéderCRCCodage,Préparation de la transmission finale des données.

「Partage quotidien」À propos deTCP/IP,Dix points de connaissance à connaître

 

L'image ci - dessus montre clairementTCP/IPLe rôle de chaque couche dans le Protocole,EtTCP/IPLe processus de communication du Protocole correspond en fait au processus d'entrée et de sortie des données.Processus d'empilage,L'expéditeur des données emballe continuellement la tête et la queue de chaque couche,Ajouter quelques informations transmises,Assurez - vous qu'il peut être transféré à destination.Processus de sortie de la pile,Le récepteur de données démonte continuellement la tête et la queue à chaque niveau,Obtenir les données finalement transférées.

「Partage quotidien」À propos deTCP/IP,Dix points de connaissance à connaître

 

Ci - dessusHTTPExemple d'accord,Précisez.

2.、Couche de liaison de données

La couche physique est responsable de0、1Débit binaire et tension de l'équipement physique、L'échange entre les éclairs de lumière. La couche liaison de données est chargée de0、1La séquence est divisée en cadres de données transmis d'un noeud à un autre noeud adjacent,Ces noeuds passent parMACPour identifier de façon unique(MAC,Adresse physique,Un hôte aura unMACAdresse).

「Partage quotidien」À propos deTCP/IP,Dix points de connaissance à connaître

 

  • Encapsulé dans un cadre: Ajouter des en - têtes et des queues aux données de la couche réseau,Encapsulé dans un cadre,Inclure la source dans l'en - tête du cadreMACAdresse et objetMACAdresse.
  • Transmission transparente:Remplissage zéro bit、Caractère d'évasion.
  • Transmission fiable: Très peu utilisé sur les liaisons à faible taux d'erreur,Mais les liaisons sans filWLANUne transmission fiable sera garantie.
  • Détection des erreurs(CRC):Erreur de détection du récepteur,Si une erreur est détectée,Jeter le cadre.

Trois、Couche réseau

1.IPAccord

IPL'accord estTCP/IPLe coeur de l'Accord,Tous lesTCP,UDP,IMCP,IGMPLes données deIPTransmission des formats de données.Notez que,IPPas un protocole fiable,Ça veut dire...,IPLe Protocole ne prévoit pas de mécanisme de traitement ultérieur lorsque les données ne sont pas communiquées,C'est considéré comme un Protocole de haut niveau:TCPOuUDPCe qu'il faut faire.

1.1 IPAdresse

Dans la couche liaison de données, nous passons généralement parMACAdresses pour identifier les différents noeuds,EtIPOn a besoin d'une adresse similaire.,C'est ça.IPAdresse.

32BitsIPLes adresses sont divisées en bits réseau et en bits d'adresse,Cela réduit le nombre d'enregistrements de table de routage dans le routeur,Avec l'adresse réseau,Vous pouvez limiter les terminaux qui ont la même adresse réseau à la même plage,Alors la table de routage n'a besoin que de maintenir une seule direction pour cette adresse réseau,Vous trouverez les terminaux correspondants.

  • ACatégorieIPAdresse: 0.0.0.0~127.255.255.255
  • BCatégorieIPAdresse:128.0.0.0~191.255.255.255
  • CCatégorieIPAdresse:192.0.0.0~239.255.255.255

1.2 IPEn - tête du Protocole

「Partage quotidien」À propos deTCP/IP,Dix points de connaissance à connaître

 

Voici seulement:Huit chiffresTTLChamp.Ce champ indique combien de routes le paquet doit traverser avant d'être rejeté.UnIPChaque fois qu'un paquet passe par un routeur,De ce paquetTTLLa valeur diminue1,Quand ce paquetTTLDevenir zéro,Il sera automatiquement abandonné.

La valeur maximale de ce champ est255,C'est - à - dire qu'un paquet de protocole passe à travers le routeur255Le second sera abandonné,Selon le système,Ce nombre est différent,En général32Ou64.

2.ARPEtRARPAccord

ARP C'est basé surIPAcquisition d'adressesMACUn protocole d'adresse.

ARP(Résolution des adresses)Un protocole est un protocole analytique,L'ordinateur central n'en savait rien.IPQuelle interface correspond à quel hôte,Lorsque l'hôte envoie unIPAu moment du sac,Je vais d'abord vérifier.ARPCache(Juste un.IP-MACL'adresse correspond au cache de table).

Si la requêteIP-MACLa paire de valeurs n'existe pas,Alors l'hôte envoie unARPPaquet de diffusion du Protocole,Ce paquet de radio est en attente de rechercheIPAdresse,Et tous les hôtes qui reçoivent directement ce paquet de diffusion se renseigneront sur eux - mêmesIPAdresse,Si un hôte qui reçoit un paquet de diffusion se trouve admissible,Alors préparez - vous à unMACAdresseARPLe paquet est envoyé à envoyerARPL'hôte de l'émission.

Et l'hôte Radio aARPLe paquet sera mis à jour aprèsARPCache(C'est le stockage.IP-MACOù correspond le tableau).L'hôte qui envoie l'émission utilisera le nouveauARPLes données mises en cache sont prêtes pour l'envoi de paquets au niveau de la liaison de données.

RARPL'accord fonctionne à l'opposé,Ne pas répéter.

3. ICMPAccord

IPLe Protocole n'est pas fiable,Il ne garantit pas la livraison des données,Alors,Naturel,Les travaux visant à garantir la livraison des données devraient être effectués par d'autres modules.Un des modules importants estICMP(Message de contrôle du réseau)Accord.ICMPPas un accord de haut niveau.,Mais...IPProtocole de couche.

Quand la transmissionIPErreur de paquet.Par exemple, l'ordinateur central n'est pas accessible,Route inaccessible, etc,ICMPLe Protocole encapsulera les messages d'erreur,Puis il est retourné à l'hôte.Donner à l'hôte une chance de traiter les erreurs,Voilà. C'est pour ça qu'il est construit surIPLe Protocole au - dessus de la couche est la raison pour laquelle la sécurité est possible.

Quatre、ping

pingOn peut dire que oui.ICMPL'application la plus célèbre de,- Oui.TCP/IPUne partie de l'accord.Utilisation“ping”La commande vérifie si le réseau est connecté,Peut nous aider à analyser et à déterminer les défaillances du réseau.

Par exemple:Quand l'un de nos sites Web ne va pas.Normalement,pingRegardez ce site.pingIl y aura des informations utiles.Les informations générales sont les suivantes:

「Partage quotidien」À propos deTCP/IP,Dix points de connaissance à connaître

 

pingCe mot vient du positionnement sonar,Et il en va de même pour le rôle de ce programme,Il utiliseICMPPaquet de protocole pour détecter si un autre hôte est accessible.Le principe est que le Code de type est0DeICMPS'il vous plaît. S'il te plaît.,L'hôte demandé utilise le Code de type8DeICMPRéponse.

pingProgramme pour calculer l'intervalle de temps,Et calculer combien de paquets ont été livrés.L'utilisateur peut juger de l'état général du réseau.Nous pouvons voir, pingÇa donne l'heure de la transmission etTTLDonnées.

Cinq、Traceroute

TracerouteEst un outil important pour détecter le routage entre l'hôte et l'hôte de destination,Et l'outil le plus pratique.

TracerouteLe principe est très, très intéressant,Il a reçuIPAprès,Envoyez d'abord un message à l'hôte de destinationTTL=1DeUDPPaquet de données,Et quand le premier routeur qui passe reçoit ce paquet,Il va automatiquementTTLMoins1,EtTTLDevient0Plus tard,Le routeur a abandonné ce paquet,Et en même temps Un hôte inaccessibleICMPDatagramme à l'hôte.L'hôte en enverra un autre après avoir reçu ce datagrammeTTL=2DeUDPDatagramme à l'hôte de destination,Ensuite, le deuxième routeur est activé pour envoyer à l'hôteICMPDonnées Le journal.Jusqu'à ce que l'hôte de destination soit atteint..Voilà.,tracerouteJ'ai tous les routeurs.IP.

「Partage quotidien」À propos deTCP/IP,Dix points de connaissance à connaître

 

Six、TCP/UDP

TCP/UDPCe sont tous des protocoles de couche transport,Mais les deux ont des caractéristiques différentes,Il existe également différents scénarios d'application,On trouvera ci - après une analyse comparative sous forme de diagramme.

「Partage quotidien」À propos deTCP/IP,Dix points de connaissance à connaître

 

Message orienté

Le mode de transmission orienté message est le transfert de la couche application àUDPCombien de messages?,UDPEnvoyez comme ça,C'est - à - dire envoyer un message à la fois.Donc,,La demande doit sélectionner un message de taille appropriée.Si le message est trop long,EtIPLes couches doivent être divisées,Réduire l'efficacité.Si c'est trop court,Oui.IPTrop petit..

Flux orienté octet

Face au flux d'octets,Bien que l'application etTCPL'interaction est un bloc à la fois(Taille inégale),Mais...TCPConsidérez l'application comme une série de flux d'octets non structurés.TCPIl y a un tampon,Lorsque l'application transmet un bloc de données trop long,TCPOn peut le diviser en morceaux plus courts et le transmettre.

À propos du contrôle de la congestion,Contrôle du débit,- Oui.TCPL'accent mis sur,Explication à l'arrière.

TCPEtUDPQuelques applications du Protocole

「Partage quotidien」À propos deTCP/IP,Dix points de connaissance à connaître

 

Quand utiliserTCP?

Lorsque la qualité des communications réseau est requise,Par exemple,:L'ensemble des données doit être transmis à l'autre partie avec exactitude,Ceci est souvent utilisé pour des applications qui nécessitent une fiabilité,Par exemple,HTTP、HTTPS、FTP.Attendre le Protocole de transfert des fichiers,POP、SMTPProtocole d'attente pour le transfert de courrier.

Quand utiliserUDP?

Lorsque la qualité de la communication réseau n'est pas élevée,Il faut que le réseau communique aussi vite que possible,Vous pouvez utiliserUDP.

Sept、DNS

DNS(Domain Name System,Système de noms de domaine),En tant que nom de domaine etIPUne base de données distribuée avec des adresses cartographiées les unes aux autres,Permettre aux utilisateurs d'accéder plus facilement à Internet,Au lieu de se souvenir de ce qui peut être lu directement par la machineIPNombre de chaînes.Par nom d'hôte,Le nom d'hôte correspondant est finalement obtenuIPLe processus d'adresse est appelé résolution de nom de domaine(Ou résolution du nom d'hôte).DNSLe Protocole fonctionne àUDPAu - dessus de l'accord,Utiliser le numéro de port53.

Huit、TCPÉtablissement et résiliation de la connexion

1.Trois poignées de main

TCPEst orienté connexion,Avant que l'une ou l'autre des Parties envoie des données à l'autre partie,Il faut d'abord établir un lien entre les deux parties.InTCP/IPDans l'Accord,TCPLe Protocole fournit un service de connexion fiable,La connexion est initialisée par trois poignées de main.Le but des trois poignées de main est de synchroniser les numéros de série et d'accusé de réception des deux côtés de la connexion et d'échanger TCPInformations sur la taille de la fenêtre.

「Partage quotidien」À propos deTCP/IP,Dix points de connaissance à connaître

 

Première poignée de main: Établir une connexion.Le client envoie le segment de demande de connexion,Oui.SYNEmplacement:1,Sequence NumberPourx;Et puis,Entrée du clientSYN_SENDStatut,En attendant la confirmation du serveur;

Deuxième poignée de main: Reçu par le serveurSYNSegment de message.Le serveur a reçu le clientSYNSegment de message,J'ai besoin deSYNSegment du message pour confirmation,ParamètresAcknowledgment NumberPourx+1(Sequence Number+1);En même temps,J'envoie moi - mêmeSYNDemande d'information,Oui.SYNEmplacement:1,Sequence NumberPoury;Le serveur place toutes les informations ci - dessus dans un segment de message(C'est - à - dire:SYN+ACKSegment de message)Moyenne,Envoyé au client en même temps,Le serveur entreSYN_RECVStatut;

Troisième poignée de main: Le client a reçuSYN+ACKSegment de message.Et ensuite,Acknowledgment NumberSet toy+1,Envoyer au serveurACKSegment de message,Une fois ce segment envoyé,Le client et le serveur sont entrésESTABLISHEDStatut,Terminé.TCPTrois poignées de main.

Pourquoi serrer la main trois fois??

Afin d'éviter que le segment de demande de connexion invalide ne soit soudainement transféré au serveur,Une erreur s'est produite.

Exemples concrets:“Segment de demande de connexion invalide”Dans ce cas:clientLe premier segment de message de demande de connexion envoyé n'a pas été perdu,C'est un long séjour dans un noeud réseau.,Jusqu'à ce que la connexion soit libéréeserver.C'était un message périmé..Mais...serverAprès avoir reçu ce segment de demande de connexion invalide,Je l'ai pris pourclientUne nouvelle demande de connexion.Alors il est allé àclientEnvoyer un segment de message de confirmation,Accepter d'établir une connexion.Supposons qu'il ne soit pas utilisé“Trois poignées de main”,Alors, tant queserverEnvoyer une confirmation,Une nouvelle connexion est établie.Parce que maintenantclientAucune demande de connexion n'a été faite,Pour ne pas l'ignorerserverConfirmation de,Ni àserverEnvoyer des données.Mais...serverEn pensant que de nouvelles liaisons de transport ont été établies,Et j'ai attenduclientEnvoyez les données.Voilà.,serverBeaucoup de ressources ont été gaspillées pour rien.Adoption“Trois poignées de main”Les moyens de prévenir ce phénomène.Par exemple, dans ce cas,clientNon.serverConfirmation de l'envoi de la confirmation.serverImpossible de recevoir la confirmation,Je le savais.clientAucune connexion requise.”

2.Quatre fois.

Quand le client et le serveur se serrent la main trois foisTCPAprès connexion,Quand le transfert de données est terminé,Ça doit être pour déconnecterTCPConnecté..C'est vrai.TCPDéconnecter de,Il y a un mystère“Quatre ruptures.”.

「Partage quotidien」À propos deTCP/IP,Dix points de connaissance à connaître

 

Première rupture: Hôte1(Permet au client,Ou côté serveur),ParamètresSequence Number,Vers l'hôte2Envoyer unFINSegment de message;En ce moment,Hôte1EntréeFIN_WAIT_1Statut;Cela signifie que l'hôte1Aucune donnée à envoyer à l'hôte2C'est;

Deuxième rupture: Hôte2J'ai reçu l'hôte1Envoyé parFINSegment de message,Vers l'hôte1Un de plus.ACKSegment de message,Acknowledgment NumberPourSequence NumberPlus1;Hôte1EntréeFIN_WAIT_2Statut;Hôte2Dites à l'hôte1,- moi.“D'accord.”Votre demande de fermeture;

Troisième rupture: Hôte2Vers l'hôte1EnvoyerFINSegment de message,Demande de fermeture de la connexion,En même temps, l'hôte2EntréeLAST_ACKStatut;

Quatrième rupture: Hôte1Hôte reçu2Envoyé parFINSegment de message,Vers l'hôte2EnvoyerACKSegment de message,Et l'hôte1EntréeTIME_WAITStatut;Hôte2Hôte reçu1DeACKAprès le segment du message,Fermez la connexion;En ce moment,Hôte1Attendez.2MSLAucune réponse n'a été reçue depuis,Pour prouverServerL'extrémité est normalement fermée,D'accord.,Hôte1Vous pouvez également fermer la connexion.

Pourquoi quatre ruptures?

TCPLe Protocole est orienté connexion、Fiable、Protocole de communication de la couche transport basé sur le flux d'octets.TCPC'est le mode duplex complet,Ça veut dire,Quand l'hôte1EnvoyerFINSegment de message,Ça veut juste dire que l'hôte1Il n'y a plus de données à envoyer.,Hôte1Dites à l'hôte2,Toutes ses données ont été envoyées;Mais,L'ordinateur central1Toujours acceptable de l'hôte2Données;Quand l'hôte2RetourACKSegment de message,Indique qu'il connaît déjà l'hôte1Aucune donnée envoyée,Mais l'hôte2Il est toujours possible d'envoyer des données à l'hôte1De;Quand l'hôte2Envoyé aussiFINSegment de message,Ça veut dire que l'hôte2Et il n'y a pas de données à envoyer,Il dira à l'hôte1,Je n'ai pas non plus de données à envoyer,Après ça, on s'arrêtera joyeusement cette foisTCPConnexion.

Pourquoi attendre2MSL?

MSL:Durée de vie maximale du segment de message,Il s'agit du temps maximum dans le réseau avant qu'un segment de message ne soit rejeté..

Pour deux raisons::

  • GarantieTCPLa connexion duplex complète du Protocole peut être fermée de façon fiable
  • Assurez - vous que les segments dupliqués de cette Connexion disparaissent du réseau

Premier point:Si l'hôte1DirectCLOSEDC'est,Donc, parce queIPNon - fiabilité du Protocole ou d'autres raisons de réseau,Cause host2Hôte non reçu1Dernière réponseACK.Alors l'hôte2L'envoi se poursuit après le délaiFIN,À ce stade, en raison de l'hôte1DéjàCLOSEDC'est,Je n'ai pas pu trouver leFINConnexion correspondante.Alors...,Hôte1Pas directementCLOSED,Mais pour garderTIME_WAIT,Quand je l'ai reçu à nouveauFINQuand,Peut garantir que l'autre partie reçoitACK,Dernière fermeture correcte de la connexion.

Deuxième point:Si l'hôte1DirectCLOSED,Et puis à l'hôte2Démarrer une nouvelle connexion,Nous ne pouvons garantir que cette nouvelle connexion est différente du numéro de port de la connexion qui vient d'être fermée.C'est - à - dire qu'il est possible que les numéros de port des connexions nouvelles et anciennes soient les mêmes.En général, il n'y a pas de problème,Mais il y a des circonstances particulières:Supposons que la nouvelle connexion ait le même numéro de port que l'ancienne connexion qui a été fermée,Si certaines données de la connexion précédente restent dans le réseau,Ces données de latence n'atteignent l'hôte qu'après l'établissement d'une nouvelle connexion2,Comme le numéro de port de la nouvelle connexion est le même que celui de l'ancienne connexion,TCPLe Protocole considère les données retardées comme appartenant à la nouvelle connexion,Cela crée une confusion avec les paquets réellement connectés.Alors...TCPLa connexion est toujours enTIME_WAITÉtat d'attente2XMSL,Cela garantit que toutes les données de cette Connexion disparaissent du réseau.

Neuf、TCPContrôle du débit

Si l'expéditeur envoie les données trop rapidement,Le destinataire peut être en retard pour recevoir,Il en résulte une perte de données.Ce qu'on appelle le contrôle du débit, c'est que le taux d'envoi de l'expéditeur n'est pas trop rapide.,Pour que le destinataire ait le temps de recevoir.

Grâce au mécanisme de fenêtre coulissante, il est facile deTCPContrôle du débit de l'expéditeur sur la connexion.

Mise en placeAVersBEnvoyer des données.Quand la connexion est établie,BJ'ai ditA:“Ma fenêtre de réception est rwnd = 400 ”(Ici. rwnd Représentation receiver window) .Donc,,La fenêtre d'envoi de l'expéditeur ne peut pas dépasser la valeur de la fenêtre de réception donnée par le destinataire.Votre attention, s'il vous plaît.,TCPLa fenêtre est en octets,Pas un segment de message.Supposons que chaque segment de message soit100Longueur des octets,Et la valeur initiale du numéro de séquence du segment de message de données est fixée à1.En majusculesACKIndique le BIT de confirmation dans l'en - têteACK,MinusculeackIndique la valeur du champ de confirmationack.

「Partage quotidien」À propos deTCP/IP,Dix points de connaissance à connaître

 

Comme le montre la figure,BLe contrôle du débit a été effectué trois fois.Pour la première fois, réduisez la fenêtre à rwnd = 300 ,Pour la deuxième fois, il est réduit à rwnd = 100 ,Enfin réduit à rwnd = 0 ,C'est - à - dire que l'expéditeur n'est plus autorisé à envoyer des données.Cet état de suspension de l'expéditeur se poursuivra jusqu'à l'hôteBJusqu'à ce qu'une nouvelle valeur de fenêtre soit rééditée.BVersALes trois segments envoyés sont réglés ACK = 1 ,Seulement siACK=1Le champ Numéro de confirmation n'a de sens que lorsque.

TCPUn minuteur continu est prévu pour chaque connexion(persistence timer).Tant queTCPUne partie connectée reçoit un avis de fenêtre zéro de l'autre partie,Démarrer le minuteur de durée.Si le temps de réglage du minuteur de durée expire,Envoyer un segment de message de mesure de contrôle de fenêtre zéro(Transport1Octets de données),Alors la partie qui reçoit ce message réinitialise le minuteur de persistance.

Dix、TCPContrôle de la congestion

1.Démarrage lent et prévention de la congestion

L'expéditeur maintient une fenêtre de congestion cwnd ( congestion window )Variable d'état pour.La taille de la fenêtre de congestion dépend du degré de congestion du réseau,Et ça change dynamiquement.L'expéditeur rend sa fenêtre d'envoi égale à la fenêtre de congestion.

Le principe selon lequel l'expéditeur contrôle la fenêtre de congestion est:Tant que le réseau n'est pas congestionné,La fenêtre de congestion est un peu plus grande,Pour envoyer plus de paquets.Mais tant que le réseau est congestionné,La fenêtre de congestion est réduite,Pour réduire le nombre de paquets injectés dans le réseau.

Algorithme de démarrage lent:

Quand l'hôte a commencé à envoyer des données,Si une grande quantité d'octets de données est injectée immédiatement dans le réseau,Il y a donc un risque de congestion du réseau,Parce que la charge du réseau n'est pas claire.

Donc,,La meilleure façon est Sondez d'abord.,Augmenter progressivement la fenêtre d'envoi de petit à grand,C'est - à - dire,Augmenter progressivement la valeur de la fenêtre de congestion de petite à grande.

Habituellement, au début de l'envoi d'un segment de message,D'abord la fenêtre de congestion cwnd Définir à un segment maximumMSSLa valeur de.Et après chaque accusé de réception d'un nouveau segment de message,Ajouter au plus une fenêtre de congestionMSSLa valeur de.Augmenter progressivement la fenêtre de congestion de l'expéditeur de cette façon cwnd ,Peut rendre le taux d'injection de paquets dans le réseau plus raisonnable.

「Partage quotidien」À propos deTCP/IP,Dix points de connaissance à connaître

 

Chaque fois qu'une transmission passe,Fenêtre de congestion cwnd Double juste.Le temps qu'un cycle de transmission passe est en fait le temps aller - retourRTT.Mais“Transmission de la roue”Plus d'emphase:La fenêtre de congestioncwndLes segments de message autorisés sont envoyés en continu,Et reçu la confirmation du dernier octet envoyé.

Autre,Ça commence lentement“Doucement”Ça ne veut pas direcwndCroissance lente de,Mais ça veut dire queTCPDéfinir avant de commencer à envoyer un segment de messagecwnd=1,Faire en sorte que l'expéditeur n'envoie qu'un seul segment de message au début(L'objectif est de tester la congestion du réseau),Et puis ça s'agranditcwnd.

Pour éviter la congestion des fenêtrescwndCroissance excessive entraînant une congestion du réseau,Un seuil de démarrage lent est également nécessairessthreshVariables d'état.Seuil de démarrage lentssthreshL'utilisation de:

  • Quand cwnd < ssthresh Heure,En utilisant l'algorithme de démarrage lent décrit ci - dessus.
  • Quand cwnd > ssthresh Heure,Arrêtez d'utiliser l'algorithme de démarrage lent et passez à l'algorithme d'évitement de la congestion.
  • Quand cwnd = ssthresh Heure,L'algorithme de démarrage lent peut être utilisé,Un algorithme d'évitement de la congestion peut également être utilisé.

Prévention de la congestion

Laissez la fenêtre de congestioncwndAugmente lentement,C'est - à - dire chaque fois qu'un aller - retour est passéRTTJuste la fenêtre de congestion de l'expéditeurcwndPlus1,Au lieu de doubler.Ça encombre les fenêtrescwndCroissance lente selon la loi linéaire,La croissance de la fenêtre de congestion est beaucoup plus lente que celle de l'algorithme de démarrage lent.

「Partage quotidien」À propos deTCP/IP,Dix points de connaissance à connaître

 

Que ce soit dans la phase de démarrage lent ou dans la phase d'évitement de la congestion,Tant que l'expéditeur juge qu'il y a congestion du réseau(Il est basé sur le fait qu'aucune confirmation n'a été reçue),Le seuil de démarrage lentssthreshSet to send when congestion occurs La moitié de la valeur de la fenêtre carrée(Mais pas moins de2).Et puis la fenêtre de congestioncwndRéinitialiser à1,Effectuer un algorithme de démarrage lent.

L'objectif est de réduire rapidement le nombre de paquets envoyés par l'hôte au réseau,Pour que ça arrive. Les routeurs encombrés ont suffisamment de temps pour éliminer l'arriéré de paquets dans la file d'attente.

Comme le montre la figure ci - dessous:,Le processus de contrôle de la congestion décrit ci - dessus est illustré par des valeurs spécifiques.La fenêtre d'envoi est maintenant aussi grande que la fenêtre congestionnée.

「Partage quotidien」À propos deTCP/IP,Dix points de connaissance à connaître

 

2.Retransmission rapide et récupération rapide

Rediffusion rapide

L'algorithme de retransmission rapide exige d'abord que le récepteur envoie un accusé de réception répété immédiatement après avoir reçu un segment de message désordonné(Afin de permettre à l'expéditeur de savoir rapidement qu'un segment de message n'est pas arrivé à l'autre partie)Au lieu d'attendre que vous envoyiez vos données avant de prendre la confirmation.

「Partage quotidien」À propos deTCP/IP,Dix points de connaissance à connaître

 

Le destinataire a reçuM1EtM2Les confirmations ont été envoyées séparément après.Supposons maintenant que le destinataire n'a pas reçuM3Mais ensuite, j'ai reçuM4.

Apparemment.,Le destinataire ne peut pas confirmerM4,Parce queM4Est le segment de message hors séquence reçu.Selon Principe de transmission fiable,Le destinataire peut ne rien faire.,Peut également être envoyé une fois au bon momentM2Confirmation de.

Mais selon l'algorithme de retransmission rapide,La partie réceptrice envoie rapidement une réponse àM2Confirmation répétée pour,Cela permet L'expéditeur connaît rapidement le segment du messageM3Ne pas atteindre le destinataire.L'expéditeur a ensuite envoyéM5EtM6.Lorsque le destinataire reçoit ces deux messages,Encore une fois.M2Confirmation répétée pour.Voilà.,L'expéditeur a reçu Quatre paires de récepteursM2Confirmation de,Les trois derniers sont des confirmations répétées.

L'algorithme de retransmission rapide spécifie également,Dès réception de trois confirmations répétées, l'expéditeur retransmet immédiatement les segments de message non encore reçus par l'autre partie.M3,Pas besoin. Continue d'attendre.M3Le minuteur de retransmission défini expire.

Parce que l'expéditeur retransmet le segment de message non confirmé le plus tôt possible,Par conséquent, le débit de l'ensemble du réseau peut être augmenté d'environ20%.

Récupérez!

L'algorithme de récupération rapide est également utilisé avec la retransmission rapide,Le processus comporte deux points clés::

  • Lorsque l'expéditeur reçoit trois confirmations répétées consécutives,Exécution“Réduction multiplicative”Algorithmes,Seuil de démarrage lentssthreshRéduire de moitié.
  • Contrairement au démarrage lent, l'algorithme de démarrage lent n'est pas exécuté maintenant(Fenêtre de congestioncwndNe pas définir pour le moment1),C'est de mettrecwndLa valeur est fixée à Seuil de démarrage lentssthreshValeur réduite de moitié,Puis commencer à exécuter l'algorithme d'évitement de la congestion(“Augmentation Additive”),Augmente lentement et linéairement la fenêtre de congestion.

「Partage quotidien」À propos deTCP/IP,Dix points de connaissance à connaître

Mentions de copyright
Auteur de cet article [Les poissons salés ont aussi des rêves.],Réimpression s’il vous plaît apporter le lien vers l’original, merci
https://fra.chowdera.com/2022/204/202207221451090132.html

Recommandé au hasard