Каково состояние сокета TCP после удаленного закрытия?

Скажем, я принял () соединение с моим сервером (который работает на Solaris), и клиент закрыл соединение. Каково состояние сокета (в категориях netstat) сокета на стороне сервера, прежде чем я закрою () его на стороне сервера? Это ОБЯЗАТЕЛЬНО?

15.12.2008 10:04:28
5 ОТВЕТОВ

Я думаю, TIME_WAIT.

Вы можете проверить это с помощью «netstat» в Linux, не знаю, как это сделать в Solaris.

-1
15.12.2008 10:15:46
Нет, TIME_WAIT после закрытия сокета () на локальном конце. Я спросил о состоянии перед закрытием () дескриптора.
tadeusz 15.12.2008 10:29:59

Это будет CLOSE_WAIT, см. Диаграмму состояния tcp, например, на http://en.wikipedia.org/wiki/File:Tcp_state_diagram_new.svg

7
15.12.2008 10:44:21

В этой ситуации сокет на клиенте будет находиться в TIME_WAIT, а сокет на сервере будет проходить через CLOSE_WAIT и довольно быстро перейдет в CLOSED, так что вы можете не поймать его в netstat, пока он полностью не исчезнет из списка.

1
16.12.2008 12:27:50

Это должно быть CLOSE_WAITс конца, который инициирует, FINидет к TIME_WAIT---> CLOSEDпервому.

В этом клиент инициирует первым. Таким образом, сервер будет идти к CLOSE_WAIT.

0
24.11.2012 06:41:49

CLOSE_WAIT

Вы можете проверить по:

PS auxf

lsof -a -p [server_process_id]

вы получите: носок 0,8

состояние 8: TCP_CLOSE

0
13.06.2016 20:36:06