Maison >Opération et maintenance >Sécurité >Explication détaillée de la poignée de main à trois voies et de la vague à quatre voies de TCP
1. TCP (Transmission Control Protocol)
TCP est orienté connexion. -protocole de communication vers le processus
TCP fournit un service full-duplex, c'est-à-dire que les données peuvent être transmises dans les deux sens en même temps
2. Segment TCP ( encapsulation) Dans datagramme IP)
1. Numéro de port
1) Numéro de port source : Le numéro de port correspondant à l'expéditeur. process , la fonction de l'IP source et du port est de marquer l'adresse de retour du message.
2) Numéro de port cible : correspond au processus de l'extrémité réceptrice. Après avoir reçu le segment de données, l'extrémité réceptrice mappe les données à l'interface de l'application en fonction de ce port.
Remarque : Le numéro de port source et le numéro de port de destination dans l'en-tête TCP sont les mêmes que l'IP source et l'IP de destination dans le datagramme IP, qui déterminent de manière unique une connexion TCP.
2. Numéro de séquence : l'extrémité émettrice numérote chaque octet pour faciliter un réassemblage correct à l'extrémité réceptrice.
3. Numéro de confirmation : utilisé pour confirmer les informations de l'expéditeur.
4. Bits de contrôle
1) URG : Bit valide du pointeur d'urgence.
2) ACK : Bit de confirmation du numéro de séquence Lorsque ce bit est à 1, il est utilisé pour confirmer les données de l'expéditeur.
3) PSH : lorsque le bit d'indicateur est à 1, l'amplificateur de réception doit transmettre les données à la couche application dès que possible.
4) RST : Rétablir la connexion TCP lorsqu'elle est à 1
5) SYN : Bit du numéro de séquence de synchronisation, lorsque TCP doit établir une connexion, définir la valeur sur 1
6) FIN : Lorsque Déconnexions TCP Définissez cette position sur 1
5. Valeur de la fenêtre : Utilisée pour indiquer le nombre de segments de données pouvant être reçus localement. La taille de la fenêtre est variable. Cela contrôle la vitesse à laquelle l'expéditeur envoie des données, réalisant ainsi un contrôle de flux.
6. Somme de contrôle : utilisée pour le contrôle des erreurs
7. Pointeur d'urgence : Le pointeur d'urgence n'est valide que lorsque l'indicateur URG est défini sur 1.
8. Options : 40 octets d'informations facultatives situées dans l'en-tête TCP. Le champ facultatif le plus courant est la taille du message la plus longue.
Remarque : Les plus importants des 8 champs sont le numéro de port, le numéro de séquence, le numéro de séquence de confirmation et les trois bits de contrôle ACK, SYN et FIN.
3. Prise de contact TCP à trois voies (analysée via la capture de paquets Wireshark)
PC1 est Pour une machine réelle, PC2 est une machine virtuelle CentOS PC1 et PC2 sont liés à la même carte réseau virtuelle VNet8. L'adresse IP de PC1 est 192.168.90.10 et l'adresse IP de PC2 est 192.168.90.40. Créez un site Web sur CentOS à l'avance, PC1 accède à PC2, puis utilise l'outil de capture de paquets pour capturer les rapports TCP, comme indiqué ci-dessous :
1 Première poignée de main
.Comme le montre l'image ci-dessus, grâce à l'outil de capture de paquets, on constate que l'adresse source (source) est 192.168.90.10, le numéro de port source (port source) est 55604, l'adresse de destination (destination) est 192.168. .168.90.40 et le numéro de port de destination (port de destination) est 80. Le numéro de séquence initial (numéro de séquence) et le numéro de séquence de confirmation (numéro d'accusé de réception) sont tous deux 0. Lors de la première négociation, PC1 utilise un numéro de port aléatoire pour envoyer une demande d'établissement de connexion au port 80 de PC2. La représentation la plus typique de ce processus est que le bit de contrôle TCP SYN est 1 et les cinq autres bits de contrôle sont tous 0.
2. La deuxième poignée de main
Comme indiqué ci-dessus, la deuxième poignée de main, l'adresse source, le numéro de port, l'adresse de destination et le port sont les mêmes que ceux du première poignée de main Au lieu de cela, le numéro de séquence initial est 0, le numéro de séquence d'accusé de réception est 1 et ACK et SYN dans les bits de contrôle sont 1. La deuxième poignée de main se déroule en fait en deux parties :
1) PC2 reçoit la demande de PC1 et répond par un message de confirmation à PC1. Le signe de ce processus est que le bit de contrôle TCP ACK est 1 et les cinq autres bits de contrôle. sont tous 0. et confirmez que le numéro de série est le numéro de série initial de PC1 plus 1.
2) PC2 envoie également une demande pour établir une connexion à PC1. Les indicateurs de ce processus sont les mêmes que ceux de la première poignée de main. Le bit de contrôle SYN de TCP est 1 et les cinq autres bits de contrôle sont tous 0.
3. La troisième poignée de main
Comme le montre la figure, l'adresse source, le numéro de port, l'adresse de destination et le numéro de port sont les mêmes que le premier. poignée de main, où le numéro de séquence initial est le numéro de séquence de confirmation 1 de la deuxième poignée de main, et le numéro de séquence de confirmation est le numéro de séquence initial de la deuxième poignée de main plus 1. Une fois que PC1 a reçu la réponse de PC2 (y compris la demande et la confirmation), il doit également répondre avec un message de confirmation à PC2. Le signe le plus typique de ce processus est que le bit de contrôle TCP ACK est à 1, les cinq autres bits de contrôle à 0 et. le numéro de séquence de confirmation est Le numéro de série initial du PC2 est augmenté de 1. Ceci termine la négociation à trois et établit une connexion TCP entre PC1 et PC2.
4. Quatre vagues de terminaison de connexion TCP
À l'heure actuelle, PC1 est CentOS et l'adresse IP correspondante est 192.168.90.40. PC2 est une vraie machine et l'adresse IP correspondante est 192.168.90.10. déconnexion par capture de paquets. Le processus est le suivant :
1. Wave pour la première fois
PC1 (serveur) envoie des bits FIN et ACK de 1. au segment TCP du client PC2.
2. Wave pour la deuxième fois
Le client PC2 renvoie un segment TCP avec un bit ACK de 1 au serveur PC1.
3. Wave pour la troisième fois
Le client PC2 envoie un segment TCP avec FIN et ACK bits 1 au serveur PC1.
4. Wave pour la quatrième fois
Le serveur PC1 renvoie un segment TCP avec un bit ACK de 1 au client PC2, complétant ainsi la terminaison de la connexion. .
5. Le concept semi-fermé de TCP quatre vagues (le côté TCP arrête d'envoyer des données mais peut les recevoir)
1) Segment de message FIN du client PC2, connexion semi-fermée, serveur PC1 Envoyez le segment ACK et recevez à moitié fermé.
2) Le serveur PC1 continue d'envoyer des données, tandis que le client PC2 envoie uniquement une confirmation ACK et n'envoie plus aucune donnée.
3) Lorsque le serveur PC1 a envoyé toutes les données, il envoie un segment FIN, et le client PC2 envoie un segment ACK, fermant ainsi la connexion TCP.
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!