Question Quels sont les états CLOSE_WAIT et TIME_WAIT?


Quand je fais netstat -a Sur ma machine Windows, je reçois une liste des ports avec l'un des quatre états:

- LISTENING
- CLOSE_WAIT
- TIME_WAIT
- ESTABLISHED

Qu'est-ce que CLOSE_WAIT et TIME_WAIT dire / indiquer?


147
2017-08-08 19:23


origine


Voir webmasters.stackexchange.com/q/22946 - Dheeraj V.S.
voir 'man netstat', faites défiler jusqu'à la section state: linux.die.net/man/8/netstat - MaQleod
Fiche sans vergogne à une réponse sur nos soeurs Erreur de serveur. - Hennes
Cross site dupe: askubuntu.com/questions/538443/... - Mokubai♦


Réponses:


En raison du fonctionnement de TCP / IP, les connexions ne peuvent pas être fermées immédiatement. Les paquets peuvent arriver en panne ou être retransmis après la fermeture de la connexion. CLOSE_WAIT indique que le point de terminaison distant (autre côté de la connexion) a fermé la connexion. TIME_WAIT indique que le point de terminaison local (ce côté) a fermé la connexion. La connexion est conservée afin que tous les paquets retardés puissent être associés à la connexion et traités de manière appropriée. Les connexions seront supprimées lorsqu'elles expirent dans les quatre minutes. Voir http://en.wikipedia.org/wiki/Transmission_Control_Protocol pour plus de détails.


155
2017-08-08 19:42



Les mots de la belette "autre côté" et "ce côté" sont déroutants. Pouvons-nous réécrire (correctement) avec "source" et "destination" à la place? - ADTC
@ADTC Non, car cela n'aurait aucun sens - TCP est en duplex intégral, les deux côtés peuvent être la source ou la destination. Les mots corrects seraient "point final local" et "point final distant". - Jonathon Reinhart
@JonathonReinhart, c'est juste "local" et "éloigné"." Endpoint "est redondant. - Pacerier
@Pacerier Except "endpoint" est un nom et "local" ne l'est pas. - Jonathon Reinhart
@JonathonReinhart, Both "local" et "éloigné"peut être des noms. Cela mis à part, j'ai trouvé une autre discussion ici qui dit" local / pair"au lieu de" local / remote ": stackoverflow.com/questions/14388706/ - Pacerier


Fondamentalement, les états "WAIT" signifient qu'un côté a fermé la connexion mais que la confirmation finale de la clôture est en attente.

Voir par exemple ce diagramme d'états TCP pour plus de détails:

http://www.jxos.org/Projects/TCP/tcpstate.html


27
2017-08-08 19:44



Cela décrit avec précision CLOSE_WAIT mais pas TIME_WAIT. TIME_WAIT indique que l'application locale a fermé la connexion et que l'autre côté a accusé réception et envoyé une FIN propre. Nous attendons maintenant les paquets dupliqués qui pourraient perturber un nouvel utilisateur du même port. - Chris Smowton
@ChrisSmowton, Alors, qui utilise la bonne terminologie? Le diagramme ou netstat? (cf.) - Pacerier
@Pacerier Je pense qu'ils correspondent - où pensez-vous qu'ils ne sont pas d'accord? - Chris Smowton
@ChrisSmowton Cela signifie donc que le propriétaire du port suivant peut obtenir des octets supplémentaires et que cela peut casser la réponse si nous définissons TIME_WAIT = 0? - MonsterMMORPG
Possible mais très improbable, car les numéros de séquence doivent correspondre pour que l'application puisse voir le paquet non conforme épissé dans le flux, ou le récepteur doit mettre en mémoire tampon le paquet apparemment hors service jusqu'à ce que le bon numéro de séquence apparaisse. Je ne connais pas assez les implémentations pratiques pour vous dire si ce dernier est fait dans la pratique. - Chris Smowton


TIME_WAIT représente le temps d'attente suffisant pour être sûr que le TCP distant a reçu l'ACK de sa requête FIN. Voir en.wikipedia.org/wiki/Transmission_Control_Protocol (et aussi RFC 793)


-1
2018-05-20 11:39



Qu'est-ce que cela ajoute aux informations fournies par les réponses existantes? - fixer1234
Ajoute une référence à la RFC 793 - Denio Mariz