Frage Was sind die Zustände CLOSE_WAIT und TIME_WAIT?


Wenn ich es tue netstat -a Auf meiner Windows-Maschine erhalte ich eine Liste der Ports mit einem der vier Zustände:

- LISTENING
- CLOSE_WAIT
- TIME_WAIT
- ESTABLISHED

Was tun? CLOSE_WAIT und TIME_WAIT bedeuten / anzeigen?


147
2017-08-08 19:23


Ursprung


Sehen webmaster.stackexchange.com/q/22946 - Dheeraj V.S.
Siehe 'man netstat', scrollen Sie nach unten zum Statusbereich: linux.die.net/man/8/netstat - MaQleod
Schamloser Stecker zu einer Antwort auf unserer Schwesternseite Serverfehler. - Hennes
Draußen vor Ort: askubuntu.com/questions/538443/ ... - Mokubai♦


Antworten:


Aufgrund der Funktionsweise von TCP / IP können Verbindungen nicht sofort geschlossen werden. Pakete können außerhalb der Reihenfolge ankommen oder erneut gesendet werden, nachdem die Verbindung geschlossen wurde. CLOSE_WAIT gibt an, dass der Remote-Endpunkt (andere Seite der Verbindung) die Verbindung geschlossen hat. TIME_WAIT gibt an, dass der lokale Endpunkt (diese Seite) die Verbindung geschlossen hat. Die Verbindung wird beibehalten, sodass alle verzögerten Pakete an die Verbindung angepasst und entsprechend behandelt werden können. Die Verbindungen werden entfernt, wenn sie innerhalb von vier Minuten eine Zeitüberschreitung aufweisen. Sehen http://en.wikipedia.org/wiki/Transmission_Control_Protocol für mehr Details.


155
2017-08-08 19:42



Die Wieselwörter "andere Seite" und "diese Seite" sind verwirrend. Können wir das (richtig) mit "source" und "destination" umschreiben lassen? - ADTC
@ADTC Nein, weil das keinen Sinn ergeben würde - TCP ist Vollduplex, jede Seite kann die Quelle oder das Ziel sein. Die korrekten Wörter wären "lokaler Endpunkt" und "entfernter Endpunkt". - Jonathon Reinhart
@ JonathonReinhart, Es ist nur "lokal" und "Fernbedienung"." Endpunkt "ist redundant. - Pacerier
@Pacerier Außer "Endpunkt" ist ein Substantiv und "lokal" ist nicht. - Jonathon Reinhart
@ JonathonReinhart, beide "lokal" und "Fernbedienung"Das können Substantive sein. Abgesehen davon habe ich hier eine andere Diskussion gefunden, die besagt, dass es" lokal / Peer"statt" lokal / remote ": stackoverflow.com/questions/14388706/ ... - Pacerier


Im Grunde bedeutet der Zustand "WAIT", dass eine Seite die Verbindung geschlossen hat, aber die endgültige Bestätigung des Abschlusses steht noch aus.

Siehe z.B. Dieses Diagramm der TCP-Zustände für Details:

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


27
2017-08-08 19:44



Dies beschreibt genau CLOSE_WAIT, aber nicht TIME_WAIT. TIME_WAIT gibt an, dass die lokale Anwendung die Verbindung geschlossen hat und die andere Seite ein eigenes FIN bestätigt und gesendet hat. Wir warten jetzt auf irgendwelche verirrten doppelten Pakete, die einen neuen Benutzer desselben Ports verärgern könnten. - Chris Smowton
@ChrisSmowton, Wer benutzt also die richtige Terminologie? Das Diagramm oder netstat? (vgl.) - Pacerier
@Pacerier Ich denke, sie passen zusammen - wo denkst du, dass sie nicht übereinstimmen? - Chris Smowton
@ChrisSmowton Das bedeutet also, dass der nächste Port-Besitzer zusätzliche Bytes bekommen kann, und das kann die Antwort unterbrechen, wenn wir TIME_WAIT = 0 setzen? - MonsterMMORPG
Möglich, aber sehr unwahrscheinlich, da die Sequenznummern für die Anwendung übereinstimmen müssten, um das in den Stream gespleißte Rogue-Paket zu sehen, oder der Empfänger müsste das scheinbar außer Betrieb gesetzte Paket puffern, bis die richtige Sequenznummer kam. Ich weiß nicht genug über praktische Implementierungen, um Ihnen zu sagen, ob dies in der Praxis geschieht. - Chris Smowton


TIME_WAIT stellt das Warten auf genügend Zeit dar, um sicherzustellen, dass das entfernte TCP das ACK seiner FIN-Anfrage empfangen hat. Sehen en.wikipedia.org/wiki/Transmission_Control_Protocol (und auch RFC 793)


-1
2018-05-20 11:39



Was fügt dies den Informationen aus den vorhandenen Antworten hinzu? - fixer1234
Fügt einen Verweis auf RFC 793 hinzu - Denio Mariz