假设我接受了()与我的服务器(在Solaris上运行)的连接,并且客户端已关闭连接 . 服务器端的socket(在netstat类别中)在服务器端关闭()之前的状态是什么?它是绑定的吗?
我想,TIME_WAIT .
您可以在Linux上使用“netstat”进行检查,不知道它是如何在Solaris上进行的 .
它将是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
FIN
TIME_WAIT
CLOSED
在这里,它是首先启动的客户端 . 所以服务器将转到 CLOSE_WAIT .
你可以检查:
ps auxf
lsof -a -p [server_process_id]
你会得到:袜子0,8
状态8:TCP_CLOSE
5 回答
我想,TIME_WAIT .
您可以在Linux上使用“netstat”进行检查,不知道它是如何在Solaris上进行的 .
它将是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