Maison Opération et maintenance exploitation et maintenance Linux Comprendre le principe de transmission fiable de TCP dans un article

Comprendre le principe de transmission fiable de TCP dans un article

Dec 19, 2020 pm 12:52 PM
tcp

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.

Comprendre le principe de transmission fiable de TCP dans un article

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

Comprendre le principe de transmission fiable de TCP dans un article

Comprendre le principe de transmission fiable de TCP dans un article

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.

Comprendre le principe de transmission fiable de TCP dans un article

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.

Comprendre le principe de transmission fiable de TCP dans un article

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.

Comprendre le principe de transmission fiable de TCP dans un article

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.

Comprendre le principe de transmission fiable de TCP dans un article

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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. Vous avez un jeu croisé?
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment réinitialiser le protocole TCP/IP dans Win10 ? Comment réinitialiser la pile de protocole TCP/IP dans Windows 10 Comment réinitialiser le protocole TCP/IP dans Win10 ? Comment réinitialiser la pile de protocole TCP/IP dans Windows 10 Mar 16, 2024 am 11:07 AM

Comment réinitialiser le protocole TCP/IP dans Win10 ? En fait, la méthode est très simple. Les utilisateurs peuvent entrer directement dans l'invite de commande, puis appuyer sur la combinaison de touches ctrl+shift+enter pour effectuer l'opération, ou exécuter directement la commande de réinitialisation pour configurer. aux utilisateurs une introduction détaillée sur la façon de réinitialiser la pile de protocoles TCP/IP dans Windows 10. Méthode 1 pour réinitialiser la pile de protocole TCP/IP dans Windows 10. Autorisations d'administrateur 1. Nous utilisons la touche de raccourci win+R pour ouvrir directement la fenêtre d'exécution, puis saisissons cmd et maintenons la combinaison de touches ctrl+shift+enter enfoncée. 2. Ou nous pouvons rechercher directement l’invite de commande dans le menu Démarrer et cliquer avec le bouton droit

Comment utiliser TCP pour implémenter une conversation entre client et serveur en python Comment utiliser TCP pour implémenter une conversation entre client et serveur en python May 17, 2023 pm 03:40 PM

Client TCP Un exemple de code client qui utilise le protocole TCP pour établir un dialogue continu : importationsocket#Configuration du client HOST='localhost'PORT=12345#Créez un socket TCP et connectez-vous au serveur client_socket=socket.socket(socket.AF_INET,socket . SOCK_STREAM)client_socket.connect((HOST,PORT))whileTrue:#Get user input message=input("Veuillez saisir le message à envoyer :&

À bientôt! TCP fait deux vagues, l'avez-vous vu ? Et les quatre poignées de main ? À bientôt! TCP fait deux vagues, l'avez-vous vu ? Et les quatre poignées de main ? Jul 24, 2023 pm 05:18 PM

Le « orienté connexion » mentionné ici signifie que vous devez établir une connexion, utiliser la connexion et libérer la connexion. L'établissement d'une connexion fait référence à la célèbre négociation à trois voies TCP. Lors de l'utilisation d'une connexion, les données sont transmises sous la forme d'un envoi et d'une confirmation. Il y a aussi la libération de la connexion, qui est notre TCP commun à quatre ondes.

Utilisation de Netty4 pour la communication TCP dans le développement d'API Java Utilisation de Netty4 pour la communication TCP dans le développement d'API Java Jun 17, 2023 pm 11:18 PM

TCP est un type de protocole de communication sur réseau informatique et un protocole de transmission orienté connexion. Dans le développement d'applications Java, la communication TCP est largement utilisée dans divers scénarios, tels que la transmission de données entre client et serveur, la transmission audio et vidéo en temps réel, etc. Netty4 est un cadre de programmation réseau hautes performances, hautement évolutif et performant qui peut optimiser le processus d'échange de données entre le serveur et le client pour le rendre plus efficace et fiable. Les étapes de mise en œuvre spécifiques de l'utilisation de Netty4 pour la communication TCP sont les suivantes : Introduction

Comment envoyer plusieurs fichiers en utilisant une seule connexion TCP en Java ? Comment envoyer plusieurs fichiers en utilisant une seule connexion TCP en Java ? Apr 27, 2023 am 08:49 AM

Pourquoi existe-t-il ce blog sur l'utilisation d'une seule connexion TCP pour envoyer plusieurs fichiers ? J'ai lu récemment des choses connexes. Il n'y a aucun problème à simplement utiliser Socket pour la programmation, mais cela n'établit que quelques concepts de base. On ne peut toujours rien faire pour résoudre le véritable problème. Lorsque j'ai besoin de transférer des fichiers, il me semble que je viens d'envoyer les données (données binaires), mais certaines informations sur le fichier sont perdues (l'extension du fichier). Et chaque fois que je ne peux utiliser qu'un seul Socket pour envoyer un fichier, il n'y a aucun moyen d'envoyer des fichiers en continu (car je compte sur la fermeture du flux pour terminer l'envoi des fichiers, ce qui signifie que je ne connais pas la longueur du fichier, donc je ne peux utiliser qu'une seule connexion Socket qui représente un fichier).

Signal Linux SIGPIPE Signal Linux SIGPIPE Feb 19, 2024 pm 04:00 PM

Parmi les parties à la communication TCP, pour faciliter la description, les parties à la communication sont remplacées par A et B dans ce qui suit. Selon le protocole TCP, si B continue d'envoyer des données après que A ait fermé la connexion, B recevra la réponse RST de A. Si B continue d'envoyer des données, le système enverra un signal SIGPIPE pour informer que la connexion a été déconnectée et arrêtera l'envoi. Le comportement de traitement par défaut du système pour le signal SIGPIPE est de laisser le processus B se terminer. Le comportement de traitement par défaut du système d'exploitation pour le signal SIGPIPE est très hostile. Analysons-le. La communication TCP est un canal full-duplex, qui équivaut à deux canaux simplex, et chaque extrémité de la connexion en est responsable. Lorsque l'extrémité opposée « se ferme », bien que l'intention soit de fermer les deux canaux dans leur intégralité, l'extrémité locale ne reçoit que le paquet FIN. Selon les dispositions du protocole TCP, lorsqu'un

L'intervieweur a demandé : combien de requêtes HTTP une connexion TCP peut-elle envoyer ? L'intervieweur a demandé : combien de requêtes HTTP une connexion TCP peut-elle envoyer ? Feb 22, 2023 pm 12:00 PM

Il était une fois une question d’entretien classique : que se passe-t-il dans le processus depuis la saisie de l’URL dans le navigateur jusqu’à l’affichage de la page ? Je pense que la plupart des étudiants qui se sont préparés peuvent y répondre, mais si vous continuez à demander : si le HTML reçu contient des dizaines de balises d'image, de quelle manière, dans quel ordre, combien de connexions sont établies et quel protocole est utilisé pour télécharger ces images ?

Compétences en matière de traitement de connexions longues TCP à haute concurrence pour la fonction de développement Swoole Compétences en matière de traitement de connexions longues TCP à haute concurrence pour la fonction de développement Swoole Aug 25, 2023 pm 10:01 PM

[Titre] Techniques de traitement de connexions longues TCP hautement concurrentes pour les fonctions de développement Swoole [Introduction] Avec le développement rapide d'Internet, les applications ont des exigences de plus en plus élevées en matière de traitement simultané. En tant que moteur de communication réseau hautes performances basé sur PHP, Swoole offre de puissantes capacités asynchrones, multi-processus et coroutine, qui améliorent considérablement les capacités de traitement simultané des applications. Cet article présentera comment utiliser la fonction de développement Swoole pour gérer les techniques de traitement des connexions longues TCP à haute concurrence et fournira des explications détaillées avec des exemples de code. 【Texte】1.

See all articles