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

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

5 ответов

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

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

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

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

CLOSE_WAIT

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

PS auxf

lsof -a -p [server_process_id]

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

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

Я думаю, TIME_WAIT.

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

Другие вопросы по тегам