当前位置:网站首页>Connexion et déconnexion TCP, détails du diagramme de migration de l'état
Connexion et déconnexion TCP, détails du diagramme de migration de l'état
2022-06-26 06:14:00 【Le petit étang à poissons d'Ajay】
Un.、Généralités
Cet article traite principalementTCPTrois poignées de main et quatre vagues dans le diagramme de transition d'état pour résumer,En ce qui concerne le processus de poignée de main et de signe de main, vous pouvez voir ce qui suit:
https://blog.csdn.net/hjlogzw/article/details/122312496
2.、Diagramme détaillé de migration de l'état
Commencez par un graphique classique de migration d'état:
CLOSED:État initial.
LISTEN:C'est - à - dire que le serveur est en état d'écoute,Prêt à recevoir une connexion client,En général, on appellelistenDans cet état après la fonction.
SYN_RCVD:Indique généralement l'état du serveur,Reçu.SYNAprès le message, jusqu'à ce que le client renvoie le dernier des trois poignées de mainACKMessage,Après avoir reçu le clientACKLa connexion est établie après,Entrée dansESTABLISHEDStatut.
SYN_SENT:Indique généralement l'état du client,AvecSYN_RCVDCorrespondant à,Quand le client appelleconnectFonction,Il envoie d'abordSYNMessage,C'est là queSYN_SENTStatut,Et attendre le serveurACKMessage.
ESTABLISHED: Cet état représente une connexion établie .
FIN_WAIT_1: Quand la connexion entre ESTABLISHEDAprès l'état, Si une extrémité veut fermer activement la connexion ,Envoyer de pair à pairFINMessage, C'est là que FIN_WAIT_1Statut, Quand on répond de bout en bout ACKAprès le message,Pour entrer dansFIN_WAIT_2Statut.
FIN_WAIT_2: La connexion dans l'état modifié est dans l'état semi - connecté , Cela signifie qu'une partie demande la fermeture de la connexion , Mais l'autre partie a encore des données à envoyer ,Fermez la connexion plus tard..
TIME_WAIT:Quand vous recevez l'autreFINMessage, Et envoyé ACKAprès le message,C'est devenuTIME_WAITStatut,En attente2MSL Retour à l'état initial CLOSED.Ce qui est remarquable, c'est que,Si dansFIN_WAIT_1Dans l'état, Reçu de l'autre côté en même temps FINMarques etACKLorsque le message est marqué,Pour accéder directement àTIME_WAITStatut,Pas besoin de passer.FIN_WAIT_2Statut,Comme le montre la figure ci - dessous.
CLOSING: Cet état est rare ,En général,EnvoyerFINAprès le message, J'aurais dû recevoir l'autre ACKMessage,- bien reçu.(Ou reçu en même temps)De l'autre côtéFINMessage.Mais...CLOSING L'état indique l'envoi FINAprès le message,Je n'ai pas reçu l'autreACKMessage, Au lieu de cela, j'ai reçu l'autre FINMessage, Ça veut dire que les deux parties veulent close Cette connexion ,Comme le montre la figure ci - dessous:
CLOSE_WAIT: C'est - à - dire attendre la fermeture , Quand on appelle de bout en bout closePostsendFIN Message à cette extrémité ,En réponseACK Et puis il est entré dans CLOSE_WAITStatut, Ensuite, il faut se demander s'il y a encore des données qui n'ont pas été envoyées à l'autre partie , Si ce n'est pas le cas, vous pouvez envoyer FINMessage à l'autre partie, Pour fermer la connexion .
LAST_ACK: C'est - à - dire que la partie passive éteinte envoie FINAprès le message,Attendre l'autreACK État au moment du message , Dès réception, vous entrez dans CLOSEDÉtat initial.
Note::
2MSLRaisons:
- Jean4 Le processus de fermeture de la poignée de main secondaire est plus fiable ;4 La dernière poignée de main ACK Est envoyé par la partie qui ferme activement ,Si çaACKPerdu, L'arrêt passif envoie un autre FINViens là.. Si la partie qui ferme activement peut maintenir un 2MSLDeTIME_WAITStatut, Il y a une plus grande chance de perdre ACK Envoyé de nouveau .
- Empêcher le dernier paquet de réponse d'affecter la nouvelle connexion .
RÉFÉRENCES:
https://blog.csdn.net/qq_32642107/article/details/107289298
https://www.csdn.net/tags/MtTaEg3sMzAxNTI3LWJsb2cO0O0O.html
https://baijiahao.baidu.com/s?id=1707040989071212058&wfr=spider&for=pc
https://wenku.baidu.com/view/d165f05c3b3567ec102d8a2a.html
边栏推荐
- EFK升级到ClickHouse的日志存储实战
- 卷妹带你学jdbc---2天冲刺Day2
- Transaction and message semantics
- 100 cases of go language
- E-commerce seeks growth breakthrough with the help of small program technology
- numpy. log
- Status mode, body can change at will
- Soft power and hard power in program development
- Yamaha robot splits visual strings
- numpy.log
猜你喜欢

MVC source code sharing

Introduction to canal deployment, principle and use

Architecture design method

Adapter mode

Selective Search for Object Recognition 论文笔记【图片目标分割】

GoF23—抽象工厂模式

Library management system

数据可视化实战:实验报告

Solve the problem that Cmdr cannot use find command under win10

Pychart cannot run designer Exe (this application failed to start because no Qt platform plugin could be I appears)
随机推荐
Print bit information of numbers
Selective search for object recognition paper notes [image object segmentation]
Selective Search for Object Recognition 论文笔记【图片目标分割】
Import / export function implementation
Install pyinstaller
跨域的五种解决方案
PyTorch使用多GPU并行训练及其原理和注意事项
NPM private server problem of peanut shell intranet penetration mapping
How to design a good technical scheme
MySQL 索引底层原理
String class learning
Architecture design method
ES6的搭配环境
Efk upgrade to Clickhouse log storage practice
Getting started with Python
The interviewer with ByteDance threw me an interview question and said that if I could answer it, other companies would have an 80% chance of passing the technical level
Design and practice of low code real-time data warehouse construction system
SQL Server 函数
GoF23—建造者模式
University Information Management System