


Exemple d'analyse d'une poignée de main TCP à trois voies pour établir un lien et d'une vague à quatre voies pour rompre le lien
Pas à pas.
Tout d’abord, présentons brièvement le protocole TCP.
TCP (Transmission Control Protocol) est un protocole de couche de transport fiable, orienté connexion et basé sur le flux d'octets. C'est compliqué, mais c'est une compétence de base que les programmeurs et le personnel d'exploitation et de maintenance doivent connaître.
Orienté objet - Les deux parties doivent établir une connexion à l'avance avant de communiquer. C'est comme passer un appel téléphonique dans la vraie vie. Le numéro du téléphone doit être composé avant que la communication puisse avoir lieu.
Fiable - Il existe de nombreuses règles dans le protocole TCP pour garantir la fiabilité des liens de communication, notamment la séparation des données d'application, le mécanisme de retransmission, la vérification des en-têtes et des données, le tri des données reçues, puis leur transmission à la couche application, la couche de réception. end supprimera les données en double et pourra effectuer un contrôle de flux.
Les données TCP sont encapsulées dans un datagramme IP au format suivant :
Contient : numéro de port [16 bits], numéro de séquence [32 bits], décalage [4 bits], réservé [6 bits], indicateur [6 bits], fenêtre taille (fenêtre) [16 bits], somme de contrôle [16 bits], pointeur d'urgence [16 bits], options TCP
Choses à noter ici :
Les paquets TCP n'ont pas d'adresse IP, ils sont sur la couche IP, mais le le port source et le port de destination.
Une connexion TCP nécessite quatre tuples pour représenter la même connexion (src_ip, src_port, dst_ip, dst_port Pour être précis, il s'agit d'un cinq-tuple, et l'un est le protocole). Mais comme nous ne parlons ici que du protocole TCP, je ne parle ici que de quadruples.
Sequence Number est le numéro de séquence du paquet, est utilisé pour résoudre le problème de la réorganisation des paquets réseau.
Le numéro d'accusé de réception est un ACK - utilisé pour confirmer la réception, utilisé pour résoudre le problème de ne pas perdre de paquets.
Window est également appelée Advertised-Window, qui est également la célèbre fenêtre coulissante (Sliding Window), utilisée pour résoudre le contrôle de flux.
-
TCP Flag, qui est le type de paquet, est principalement utilisé pour contrôler la machine à états TCP.
URG : Le pointeur d'urgence est valide
ACK : Confirmez que le numéro de séquence est valide
PSH : Le récepteur doit transmettre ce segment à la couche application dès que possible
RST : Rétablir la connexion
SYN : Synchronisation numéro de séquence, utilisé pour initier une connexion
FIN : L'expéditeur termine la tâche d'envoi (ferme activement)
Poignée de main à trois pour établir le lien
1 L'extrémité requérante (client) envoie un SYN=1. pour indiquer le port du serveur auquel le client a l'intention de se connecter. TCP stipule SYN=1 Il ne peut pas transporter de données, mais il consomme un numéro de séquence, déclarez donc votre numéro de séquence initial seq comme un nombre aléatoire, en supposant seq=x.
2. Le serveur confirme le segment du message client et définit le numéro de séquence de confirmation sur ACK=x+1. En même temps, il demande également de se connecter au client, envoie SYN=1 et envoie le numéro de séquence initial en supposant que seq=y.
3. Le client confirme le segment de message du serveur, envoie le numéro de séquence de confirmation et accepte d'établir une connexion avec le serveur ACK=y+1.
Ces trois segments de message complètent l'établissement de la connexion. Ce processus est également appelé poignée de main à trois
Agitez quatre fois pour déconnecter le lien
1 L'hôte 1 (peut être un client ou un serveur), définissez le numéro de séquence et le numéro d'accusé de réception et envoyez le message à l'hôte 2. Envoyez un segment de message FIN ; à ce moment, l'hôte 1 entre dans l'état FIN_WAIT_1 ; cela signifie que l'hôte 1 n'a aucune donnée à envoyer à l'hôte 2 ; 1 Un segment de message ACK, le numéro d'accusé de réception est le numéro de séquence plus 1 ; l'hôte 1 entre dans l'état FIN_WAIT_2 ; l'hôte 2 indique à l'hôte 1 que je n'ai aucune donnée à envoyer et que je peux fermer la connexion
3. 1 segment de message FIN, demandant la fermeture de la connexion, et l'hôte 2 entre dans l'état CLOSE_WAIT ;
4. L'hôte 1 reçoit le segment de message FIN envoyé par l'hôte 2, envoie un segment de message ACK à l'hôte 2, puis l'hôte 1 entre dans le segment de message FIN. État TIME_WAIT ; après que l'hôte 2 a reçu le segment ACK de l'hôte 1, il ferme la connexion à ce moment ; l'hôte 1 ne reçoit toujours pas de réponse après avoir attendu 2MSL, ce qui prouve que le serveur a été fermé normalement. peut également fermer la connexion.
À ce stade, les quatre ruptures de TCP se sont heureusement achevées.
Les icônes permettant d'établir et de déconnecter des liens sont les suivantes :
Voyons pourquoi il s'agit d'une poignée de main à trois ?
Afin d'éviter que le segment de demande de lien invalide ne soit soudainement transmis au serveur, provoquant une erreur. Donnez une châtaigne.
Le premier segment de demande de connexion envoyé par le client n'a pas été perdu, mais est resté longtemps sur un certain nœud de réseau, de sorte qu'il a été retardé pour atteindre le serveur quelque temps après la libération de la connexion. Il s’avère qu’il s’agit d’un segment de message qui a expiré depuis longtemps. Cependant, une fois que le serveur a reçu ce segment de demande de connexion invalide, il pense à tort qu'il s'agit d'une nouvelle demande de connexion envoyée à nouveau par le client. Il envoie donc un segment de message de confirmation au client et accepte d'établir la connexion. En supposant que la « prise de contact à trois » n'est pas utilisée, tant que le serveur envoie une confirmation, une nouvelle connexion est établie. Étant donné que le client n'a pas émis de demande d'établissement de connexion, il ne prêtera pas attention à la confirmation du serveur et n'enverra pas de données au serveur. Mais le serveur pense qu'une nouvelle connexion de transport a été établie et attend que le client envoie des données. De cette façon, de nombreuses ressources du serveur sont gaspillées. La méthode de la « poignée de main à trois » peut empêcher le phénomène ci-dessus de se produire. Par exemple, dans la situation actuelle, le client n'enverra pas de confirmation à la confirmation du serveur. Puisque le serveur ne peut pas recevoir la confirmation, il sait que le client n'a pas demandé d'établir une connexion. "
C'est très clair, cela empêche le serveur d'attendre et de gaspiller des ressources.
Alors pourquoi y a-t-il quatre vagues ?
Le protocole TCP est un protocole de communication de couche de transmission fiable, orienté connexion et basé sur un flux d'octets. TCP est un mode full-duplex, ce qui signifie que lorsque l'hôte 1 envoie un segment FIN, cela signifie uniquement que l'hôte 1 n'a aucune donnée à envoyer. Cependant, à ce moment-là, l'hôte 1 peut le faire. accepte toujours les données de l'hôte 2 ; lorsque l'hôte 2 renvoie le segment de message ACK, cela signifie qu'il sait déjà que l'hôte 1 n'a aucune donnée à envoyer, mais l'hôte 2 peut toujours envoyer des données à l'hôte 1. Lorsque l'hôte 2 envoie également un segment FIN ; , cela signifie que l'hôte 2 n'a aucune donnée à envoyer et dira à l'hôte 1 que je n'ai aucune donnée à envoyer, puis les deux parties se feront un plaisir d'interrompre la connexion TCP. il faut comprendre les changements de statut au cours des quatre ruptures
.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!

Outils d'IA chauds

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

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

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

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

Sujets chauds



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

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

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 :&

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.

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

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).

TCP et IP sont deux protocoles différents sur Internet : 1. TCP est un protocole de couche transport, tandis qu'IP est un protocole de couche réseau ; 2. TCP fournit des fonctions telles que la segmentation, le tri, la confirmation et la retransmission des paquets de données, ainsi que l'IP. Le protocole est chargé de fournir les adresses source et de destination des paquets de données ; 3. TCP est un protocole orienté connexion, tandis que le protocole IP est sans connexion ; 4. TCP fournit également un contrôle de flux et un contrôle de congestion.

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 ?
