当前位置:网站首页>Six photos vous montrent pourquoi TCP serre la main trois fois?
Six photos vous montrent pourquoi TCP serre la main trois fois?
2022-06-30 17:22:00 【Xinyi 2002】
Trois poignées de main


Deux poignées de main.(La situation1)

Deux poignées de main.(La situation2)

OK,Voici une réponse sérieuse à cette question.,Pour comprendre ce problème,Il faut d'abord comprendreTCP Comment assurer une transmission fiable .

PS:TCPDans l'Accord,Une extrémité de la demande active est appelée『Client』,Une extrémité d'une connexion passive est appelée『Serveur』.Qu'il s'agisse d'un client ou d'un serveur,TCPEnvoyer et recevoir des données une fois la connexion établie.
Au début,Le serveur et le client sontCLOSEDStatut.Avant le début de la communication, Les deux parties doivent créer leurs propres blocs de contrôle de transmission (TCB).Création du serveur terminéeTCBAprès l'entréeLISTENStatut,Prêt à recevoir les demandes de connexion des clients.
Première poignée de main
Le client envoie un segment de message de demande de connexion au serveur.Dans l'en - tête du segmentSYN=1,ACK=0,seq=x.Après l'envoi de la demande,Le client entre dansSYN-SENTStatut.
PS1:SYN=1,ACK=0Indique que le segment de message est un message de demande de connexion.
PS2:xPour cette foisTCPNuméro de séquence initial du flux d'octets pour la communication.TCPLe règlement:SYN=1Le segment de message ne peut pas avoir de données,Mais il faut un numéro de série..
Deuxième poignée de main
Lorsque le serveur reçoit le segment de message de demande de connexion,Si la connexion est acceptée,Une réponse est envoyée:SYN=1,ACK=1,seq=y,ack=x+1.Une fois la réponse envoyée, entrezSYN-RCVDStatut.
PS1:SYN=1,ACK=1Indique que le segment de message est un message de réponse avec consentement de connexion.
PS2:seq=yIndique que lorsque le serveur est l'expéditeur,Envoyer le numéro de séquence initial du flux d'octets.
PS3:ack=x+1Indique que le serveur souhaite que le prochain datagramme envoie un numéro de séquence dex+1Octets de départ.
Troisième poignée de main
Lorsque le client reçoit une réponse de consentement à la connexion,Envoyer également un segment de message de confirmation au serveur,Représentation:La réponse de consentement à la connexion envoyée par le serveur a été reçue avec succès.L'en - tête de ce segment de message est:ACK=1,seq=x+1,ack=y+1.Après avoir envoyé ce segment de message, le client entre dansESTABLISHEDStatut,Le serveur entre également après avoir reçu cette réponseESTABLISHEDStatut,La connexion est maintenant terminée!
Pourquoi faut - il trois poignées de main pour établir une connexion,Au lieu de serrer la main deux fois?
Empêcher le segment de message de demande de connexion invalide d'être reçu par le serveur,Ce qui donne lieu à une erreur.
PS:Demande de connexion invalide:Si la demande de connexion envoyée par le client au serveur est perdue,Le client envoie à nouveau la demande de connexion après le délai d'attente de la réponse,En ce moment,La dernière demande de connexion était『Échec』.
Si vous n'avez besoin que de deux poignées de main pour établir une connexion,Le client n'a pas beaucoup changé,Vous devez toujours obtenir une réponse du serveur avant d'entrerESTABLISHEDStatut,Le serveur entre après avoir reçu la demande de connexionESTABLISHEDStatut.
Si le réseau est congestionné,La demande de connexion envoyée par le client a été retardée jusqu'au serveur,Le client a expiré pour renvoyer la demande,Si le serveur reçoit et confirme correctement la réponse,Double commodité pour commencer la communication,Relâchez la connexion lorsque la communication est terminée.En ce moment,Si la demande de connexion invalide arrive au serveur,Comme il n'y a que deux poignées de main,Le serveur entre sur demandeESTABLISHEDStatut,En attente d'envoi de données ou d'envoi actif de données.Mais le client est déjà entréCLOSEDStatut,Le serveur attendra toujours,Cela gaspille les ressources de connexion côté serveur.
TCPQuatre fois.

TCP Il faut quatre étapes pour libérer la connexion ,Donc appelé『Quatre fois.』.
Nous savons que,TCPLa connexion est bidirectionnelle,Donc dans les quatre mains,Les deux premiers coups de main sont utilisés pour déconnecter la connexion dans une direction,Les deux dernières vagues sont utilisées pour déconnecter la connexion dans l'autre direction.
Première vague
SiAPensez que la transmission des données est terminée,Alors il a besoin deBEnvoyer une demande de libération de connexion.La requête n'a qu'un en - tête,Les principaux paramètres transportés dans l'en - tête sont:FIN=1,seq=u.En ce moment,AVa entrer dansFIN-WAIT-1Statut.
PS1:FIN=1Indique que le segment de message est une demande de libération de connexion.
PS2:seq=u,u-1- Oui.AVersBNuméro de série du dernier octet envoyé.
Deuxième vague.
BAprès avoir reçu la demande de libération de connexion,La demande correspondante sera informée,Dis - lui.AVersBLa connexion dans cette direction a été libérée.En ce momentBEntréeCLOSE-WAITStatut,Et versAEnvoyer une réponse à la libération de la connexion,Son en - tête contient:ACK=1,seq=v,ack=u+1.
PS1:ACK=1:SaufTCPEn dehors du segment de demande de connexion,TCPTous les datagrammes pendant la communicationACKTous.1,Indique une réponse.
PS2:seq=v,v-1- Oui.BVersANuméro de série du dernier octet envoyé.
PS3:ack=u+1A exprimé le souhait de recevoiru+1Segment de message commençant par les octets,Et a été reçu avec succès avantuOctets.
AReçu cette réponse,EntréeFIN-WAIT-2Statut,Attendez.BEnvoyer une demande de libération de connexion.
Après la deuxième vague,AÀBLa connexion directionnelle a été libérée,BPlus de données reçues,AEt n'envoie plus de données.Mais...BÀALa connexion directionnelle existe toujours,BPeut continuer versAEnvoyer des données.
Troisième vague.
QuandBVersAAprès avoir envoyé toutes les données,VersAEnvoyer une demande de libération de connexion,En - tête de la demande:FIN=1,ACK=1,seq=w,ack=u+1.BC'est parti.LAST-ACKStatut.
Quatrième vague
ADès réception de la demande de libération,VersBEnvoyer une réponse de confirmation,En ce momentAEntréeTIME-WAITStatut.Cet état durera2MSLTemps,S'il n'y a pas deBPour renvoyer une demande,Entrez.CLOSEDStatut,AnnulerTCB.QuandBDès réception de la réponse de confirmation,Et il est entré dansCLOSEDStatut,AnnulerTCB.
Pourquoi A Pour entrer en premierTIME-WAITStatut,Attendez.2MSLIl est temps d'entrerCLOSEDStatut
Pour garantirBBien reçu.ARéponse de confirmation.SiAEntrez directement après avoir envoyé la réponse de confirmationCLOSEDStatut,Si la réponse est perdue,BUne fois le délai écoulé, la demande de libération de connexion sera envoyée à nouveau,Mais en ce moment,AC'est fermé.,Aucune réponse,Donc,BNe jamais fermer normalement.
Source::https://mp.weixin.qq.com/s/oKOjjXm6OcdVT_laAeDp6Q
Lectures recommandées
NO.1
Recommandations antérieures
Historical articles
9 C'est super. JSON Outils de traitement,Améliorer considérablement l'efficacité!
Ça sent bon.!Le plus complet Pycharm Raccourcis clavier couramment utilisés!
Pandas C'est facile pour les débutants 6 Erreurs
PythonHuit scénarios pour réaliser des tâches programmées,Plein de marchandises sèches
Partager、Collection、- Oui.、Je regarde les arrangements.?




边栏推荐
- Pref usage record
- In the past, the industrial Internet we knew only appeared as a substitute for the consumer Internet
- A tough battle for Tencent cloud
- Jsr303 and common validator implementations
- k线图快速入门必读
- New power of data analysis -- the first open source integrated real-time HTAP database in China was released by stonedb
- 基于51单片机的计件器设计
- 高等数学(第七版)同济大学 总习题一 个人解答
- Login box tricks
- Nodejs learning notes II
猜你喜欢

水平视觉错误效果js特效代码

商单视频播放超2000万!农院改造为何屡被催更?

腾讯云的一场硬仗

基于SSM实现毕业设计管理系统

Cesium-1.72 learning (camera tracking)

Course design for the end of the semester: product sales management system based on SSM

24: Chapter 3: develop pass service: 7: user defined exceptions (to represent errors in the program); Create graceexceptionhandler to handle exceptions globally and uniformly (build JSON data of corre

【JVM】一文带你了解JVM中的垃圾回收机制(GC)——内含图解

期未课程设计:基于SSM的产品销售管理系统
![[untitled] write a student achievement and information management system in C language to realize the operation interface, clear screen display of current operation functions, reading and inputting st](/img/5f/cda69a34e93b3697992d576dbf0fae.jpg)
[untitled] write a student achievement and information management system in C language to realize the operation interface, clear screen display of current operation functions, reading and inputting st
随机推荐
The new version of Shangding cloud | favorites function has been launched to meet personal use needs
Property or method “approval1“ is not defined on the instance but referenced during render
网络:服务器网卡组技术原理与实践
canvas鼠标控制重力js特效
Nouvelle version de shangdingyun | la fonction favorite est en ligne pour répondre aux besoins d'utilisation personnelle
[JVM] takes you to learn about the garbage collection mechanism (GC) in the JVM -- including diagrams
腾讯云的一场硬仗
Design of piece counter based on 51 single chip microcomputer
EMQ 助力青岛研博建设智慧水务平台
leetcode:1042. 不邻接植花【随机填入符合要求的 + 后面不会形成矛盾 + set.pop】
addmodule_allmerge_ams_im
Internet R & D efficiency practice qunar core field Devops landing practice
编译丨迅为iTOP4412开发板Makefile编译
期未课程设计:基于SSM的产品销售管理系统
24: Chapter 3: develop pass service: 7: user defined exceptions (to represent errors in the program); Create graceexceptionhandler to handle exceptions globally and uniformly (build JSON data of corre
3D chart effectively improves the level of large data screen
Cesium-1.72 learning (China national boundary)
Nichenet actual silicosis
商单视频播放超2000万!农院改造为何屡被催更?
idea必用插件