Co to są stany CLOSE_WAIT i TIME_WAIT?


166

Gdy robię to netstat -ana moim komputerze z systemem Windows, otrzymuję listę portów z jednym z czterech stanów:

- LISTENING
- CLOSE_WAIT
- TIME_WAIT
- ESTABLISHED

Co CLOSE_WAITi co TIME_WAIToznacza / oznacza?



zobacz „man netstat”, przewiń w dół do sekcji stanu: linux.die.net/man/8/netstat
MaQleod

1
Bezwstydna wtyczka do odpowiedzi na temat błędu serwera naszej witryny .
Hennes

Odpowiedzi:


179

Ze względu na sposób działania protokołu TCP / IP połączeń nie można natychmiast zamykać. Pakiety mogą przychodzić poza kolejnością lub być retransmitowane po zamknięciu połączenia. CLOSE_WAIT wskazuje, że zdalny punkt końcowy (druga strona połączenia) zamknął połączenie. TIME_WAIT wskazuje, że lokalny punkt końcowy (po tej stronie) zamknął połączenie. Połączenie jest utrzymywane, aby wszelkie opóźnione pakiety mogły zostać dopasowane do połączenia i odpowiednio obsługiwane. Połączenia zostaną usunięte, gdy przekroczą limit czasu w ciągu czterech minut. Więcej informacji na stronie http://en.wikipedia.org/wiki/Transmission_Control_Protocol .


Ale czy nie oznacza to, że nawet jeśli pakiety dotrą po zwróceniu funkcji, nadal zostaną odrzucone przez aplikację?
MonsterMMORPG

@MonsterMMORPG Pakiety, które przychodzą nieczynne po zamknięciu połączenia, będą obsługiwane przez stos sieciowy. Zazwyczaj można je bezpiecznie usunąć zgodnie z normalnymi regułami dla duplikatów pakietów. Pakiety, które wydają się być powiązane z nieznanym aktywnym połączeniem, są zwykle odrzucane i generują odpowiedź. Stany WAIT chronią przed tym ruchem.
BillThor

29

Zasadniczo stany „WAIT” oznaczają, że jedna strona zamknęła połączenie, ale oczekuje się na ostateczne potwierdzenie zamknięcia.

Zobacz np. Ten schemat stanów TCP, aby uzyskać szczegółowe informacje:

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


14
To dokładnie opisuje CLOSE_WAIT, ale nie TIME_WAIT. TIME_WAIT wskazuje, że lokalna aplikacja zamknęła połączenie, a druga strona potwierdziła i wysłała własny FIN. Teraz czekamy na jakiekolwiek bezpańskie duplikaty pakietów, które mogą zdenerwować nowego użytkownika tego samego portu.
Chris Smowton

1
@ChrisSmowton, więc kto używa właściwej terminologii? Schemat czy netstat? ( por. )
Pacerier

@Pacerier Myślę, że pasują do siebie - jak myślisz, gdzie się nie zgadzają?
Chris Smowton,

@ChrisSmowton Więc to oznacza, że ​​następny właściciel portu może otrzymać dodatkowe bajty, co może przerwać odpowiedź, jeśli ustawimy TIME_WAIT = 0?
MonsterMMORPG

Możliwe, ale bardzo mało prawdopodobne, ponieważ numery sekwencji musiałyby pasować do aplikacji, aby zobaczyć nieuczciwy pakiet splatany do strumienia, lub odbiornik musiałby buforować pozornie niedziałający pakiet, dopóki nie pojawi się właściwy numer sekwencji. Nie wiem wystarczająco dużo o praktycznych wdrożeniach, aby powiedzieć, czy te ostatnie są realizowane w praktyce.
Chris Smowton,

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.