当前位置:网站首页>Comment TCP gère - t - il les exceptions lors de trois poignées de main et de quatre vagues?
Comment TCP gère - t - il les exceptions lors de trois poignées de main et de quatre vagues?
2022-06-25 11:31:00 【Bonjour, C + +!】
1、TCP Exception lors de trois poignées de main
Voyons d'abord TCP C'est comme serrer la main trois fois.
1.1、La première poignée de main a été perdue.,Que se passe - t - il??
Quand le client veut construire avec le serveur TCP Lors de la connexion,Le premier est SYN Message,Et entre dans SYN_SENT
Statut.
Après ça,Si le client tarde à recevoir le serveur SYN-ACK Message(Deuxième poignée de main),Déclenche le mécanisme de retransmission du délai.
Différentes versions du système d'exploitation peuvent avoir des temps d'arrêt différents,Oui. 1 Second,Il y en a aussi. 3 Second,Ce timeout est écrit mort dans le noyau,Si vous voulez changer, vous devez recompiler le noyau,C'est plus compliqué..
Lorsque le client 1 Le serveur n'a pas été reçu après quelques secondes SYN-ACK Après le message,Le client sera redirigé SYN Message,Combien de fois??
In Linux - Oui.,Client SYN Nombre maximal de retransmissions du message par tcp_syn_retries
Contrôle des paramètres du noyau,Ce paramètre peut être personnalisé,La valeur par défaut est généralement 5.
En général,La première retransmission timeout a eu lieu à 1 Dans quelques secondes.,La deuxième retransmission timeout a eu lieu à 2 Secondes,La troisième retransmission timeout a eu lieu à 4 Dans quelques secondes.,La quatrième retransmission timeout a eu lieu à 8 Dans quelques secondes.,La cinquième fois, c'est une retransmission en retard. 16 Dans quelques secondes..C'est vrai,Chaque timeout est le dernier 2 X.
Après le cinquième délai de retransmission,Continue d'attendre. 32 Secondes,Si le serveur ne répond toujours pas ACK,Le client n'envoie plus SYN Sac,Et déconnecter TCP Connexion.
Alors...,Le temps total est 1+2+4+8+16+32=63 Secondes,Environ 1 Environ une minute..
1.2、La deuxième poignée de main a été perdue.,Que se passe - t - il??
Lorsque le serveur reçoit la première poignée de main du client,Je reviens. SYN-ACK Message au client,C'est la deuxième poignée de main.,Le serveur entre SYN_RCVD
Statut.
Deuxième poignée de main SYN-ACK
Le message a deux objectifs. :
- Dans la deuxième poignée de main ACK, C'est un message de confirmation pour la première poignée de main;
- Dans la deuxième poignée de main SYN,Est la création initiée par le serveur TCP Message connecté;
Alors...,Si vous perdez votre deuxième poignée de main,Envoie quelque chose de plus intéressant,Que se passe - t - il exactement??
Parce que le deuxième message de poignée de main contient la première poignée de main au client ACK Message de confirmation,Alors...,Si le client tarde à recevoir une deuxième poignée de main,Alors le client se sent peut - être SYN Message(Première poignée de main)Perdu.,Et donc,Le client déclenchera le mécanisme de retransmission des délais,Retransmission SYN Message.
Et puis,Parce que la deuxième poignée de main contient SYN Message,Donc quand le client reçoit,Doit être envoyé au serveur ACK Message de confirmation(Troisième poignée de main),Le serveur pensera que SYN Message reçu par le client.
Alors,Si la deuxième poignée de main est perdue,Le serveur ne reçoit pas la troisième poignée de main,Et donc,Le mécanisme de retransmission timeout est déclenché du côté serveur,Retransmission SYN-ACK Message.
In Linux En bas.,SYN-ACK Le nombre maximum de retransmissions du message est de tcp_synack_retries
Détermination des paramètres du noyau,La valeur par défaut est 5.
Donc,,Quand la deuxième poignée de main a été perdue,Le client et le serveur sont retransmis:
- Le client est retransmis SYN Message,C'est la première poignée de main.,Nombre maximum de retransmissions par
tcp_syn_retries
Détermination des paramètres du noyau.; - Le serveur se redirige SYN-AKC Message,C'est la deuxième poignée de main.,Nombre maximum de retransmissions par
tcp_synack_retries
Détermination des paramètres du noyau.
1.3、La troisième poignée de main a été perdue.,Que se passe - t - il??
Le client reçoit le SYN-ACK Après le message,Le serveur en reçoit un ACK Message,C'est la troisième poignée de main.,L'état du client entre dans ESTABLISH
Statut.
Parce que cette troisième poignée de main ACK C'est la deuxième poignée de main. SYN Message de confirmation,Donc quand la troisième poignée de main a été perdue,Si la partie serveur tarde à recevoir ce message de confirmation,Déclenche le mécanisme de retransmission du délai,Retransmission SYN-ACK Message,Jusqu'à la troisième poignée de main,Ou atteindre le nombre maximum de retransmissions.
Attention!,ACK Il n'y aura pas de retransmission.,Quand ACK Perdu.,Le message correspondant est retransmis par l'autre partie.
2、TCP Anomalies lors des quatre vagues
Revenons voir TCP Le processus des quatre vagues.
2.1、La première vague a été perdue.,Que se passe - t - il??
Quand le client(Fermeture active)Appelez close Après la fonction,Sera envoyé au serveur FIN Message,Tentative de déconnexion du serveur,La connexion du client entre maintenant dans FIN_WAIT_1
Statut.
Dans des conditions normales,Si vous recevez le serveur à temps(Fermeture passive)De ACK,Et bientôt FIN_WAIT2
Statut.
Si la première vague est perdue,,Alors le client ne reçoit pas le côté passif ACK Et si,Il déclenche également le mécanisme de retransmission des délais,Retransmission FIN Message,Nombre de retransmissions par tcp_orphan_retries
Contrôle des paramètres.
Lors de la retransmission du client FIN Le nombre de messages dépasse tcp_orphan_retries
Après,Ne pas envoyer FIN Message,Accès direct close
Statut.
2.2、La deuxième vague a été perdue.,Que se passe - t - il??
Quand le serveur reçoit la première vague du client,Il y en aura un d'abord. ACK Message de confirmation,La connexion du serveur entre maintenant dans CLOSE_WAIT
Statut.
On en a parlé plus tôt.,ACK Le message ne sera pas retransmis.,Donc si le serveur perd sa deuxième vague,Le client déclenchera le mécanisme de retransmission des délais,Retransmission FIN Message,Jusqu'à ce que vous receviez une deuxième vague du serveur,Ou le nombre maximum de retransmissions.
Je vais te le dire.,Quand le client reçoit une deuxième vague,C'est - à - dire que le serveur a envoyé ACK Après le message,Le client sera dans FIN_WAIT2
Statut,Dans cet état, vous devez attendre que le serveur envoie une troisième vague,C'est le serveur. FIN Message.
Pour close Connexion fermée par la fonction,Comme les données ne peuvent plus être envoyées et reçues,Alors...FIN_WAIT2
L'état ne peut pas durer longtemps,Et tcp_fin_timeout
Contrôle la durée de la connexion dans cet état,La valeur par défaut est 60 Secondes.
Cela signifie que pour les appels close Connexion fermée,Si dans 60 Pas encore reçu dans quelques secondes. FIN Message,Client(Fermeture active)La connexion sera fermée directement.
2.3、Troisième vague perdue.,Que se passe - t - il??
En tant que serveur(Fermeture passive)Client reçu(Fermeture active)De FIN Après le message,Le noyau répond automatiquement ACK,Connexion simultanée à CLOSE_WAIT
Statut,Comme son nom l'indique,Cela signifie attendre que le processus d'application appelle close Fonction pour fermer la connexion.
En ce moment,Le noyau n'a pas le droit de remplacer le processus pour fermer la connexion,Doit être invoqué activement par le processus close Fonction pour déclencher l'envoi côté serveur FIN Message.
Le serveur est dans CLOSE_WAIT Dans l'état,Appelé close Fonctions,Le noyau émet FIN Message,Connexion simultanée à l'entrée LAST_ACK Statut,Attendre le retour du client ACK Pour confirmer que la connexion est fermée.
Si vous n'obtenez pas ça plus tard ACK,Le serveur sera redirigé FIN Message,Le nombre de retransmissions est toujours tcp_orphan_retrie
s Contrôle des paramètres,Ceci est retransmis avec le client FIN Le nombre de retransmissions d'un message est contrôlé de la même manière.
2.4、Quatrième vague perdue.,Que se passe - t - il??
Quand le client reçoit la troisième vague du serveur FIN Après le message,Je reviens. ACK Message,C'est la quatrième fois.,La connexion client entre maintenant TIME_WAIT
Statut.
In Linux Système,TIME_WAIT L'état durera 60 L'état d'arrêt ne sera pas activé avant quelques secondes.
Et puis,Serveur(Fermeture passive)Non reçu. ACK Avant le message,Toujours dans LAST_ACK Statut.
Si la quatrième vague ACK Le message n'est pas arrivé au serveur,Le serveur sera redirigé FIN Message,Le nombre de retransmissions est encore décrit par tcp_orphan_retries
Contrôle des paramètres.
C'est vrai.,TCP C'est malin.!
边栏推荐
- ZABBIX distributed system monitoring
- At 16:00 today, Mr. sunxiaoming, a researcher of the Institute of computing, Chinese Academy of Sciences, took you into the quantum world
- SystemVerilog (XIII) - enumerate data types
- c盘使用100%清理方法
- Niuke: rotation array
- Shichuang energy rushes to the scientific innovation board: it plans to raise 1.1 billion yuan, with an annual revenue of 700million yuan and a 36% decrease in net profit
- Semaphore source code analysis
- 基于C语言的图书信息管理系统 课程论文+代码及可执行exe文件
- Crawler scheduling framework of scratch+scratch+grammar
- GC
猜你喜欢
基于SSH的高校实验室物品管理信息系统的设计与实现 论文文档+项目源码及数据库文件
CFCA Anxin sign access
An interesting logic SRC mining
Leetcode 1249. Remove invalid brackets (awesome, finally made)
How to start the phpstudy server
c盘使用100%清理方法
Redis6 note02 configuration file, publish and subscribe, new data type, jedis operation
Technical practice and development trend of video conference all in one machine
4 life distributions
Double buffer transparent encryption and decryption driven course paper + project source code based on minifilter framework
随机推荐
Builder pattern
C disk uses 100% cleaning method
try-catch-finally
Geographic location system based on openstreetmap+postgis paper documents + reference papers + project source code and database files
手机上股票开户安全吗?找谁可以开户啊?
Spark history server performance improvement (I) -- Application List
贝叶斯
金仓数据库 KingbaseES 插件dbms_session
Source code analysis of AQS & reentrantlock
Netease's open source distributed storage system curve officially became the CNCF sandbox project
金仓KFS数据集中场景(多对一)部署
SystemVerilog (XIII) - enumerate data types
Spark Tuning common configuration parameters
Daily 3 questions (2) - find out the lucky numbers in the array
Introduction to JVM principle
基于SSH的高校实验室物品管理信息系统的设计与实现 论文文档+项目源码及数据库文件
Kingbasees plug-in DBMS of Jincang database_ RANDOM
金仓数据库 KingbaseES 插件DBMS_OUTPUT
Keywords serializable serialization and deserialization
基于OpenStreetMap+PostGIS的地理位置系统 论文文档+参考论文文献+项目源码及数据库文件