【发布时间】:2010-09-26 22:39:29
【问题描述】:
假设我已经接受()到我的服务器(在 Solaris 上运行)的连接,并且客户端已经关闭了连接。在服务器端关闭()它之前,服务器端的套接字(在 netstat 类别中)的状态是什么?绑定了吗?
【问题讨论】:
标签: sockets tcp solaris netstat
假设我已经接受()到我的服务器(在 Solaris 上运行)的连接,并且客户端已经关闭了连接。在服务器端关闭()它之前,服务器端的套接字(在 netstat 类别中)的状态是什么?绑定了吗?
【问题讨论】:
标签: sockets tcp solaris netstat
将会是 CLOSE_WAIT,看 tcp 状态图,e.g.在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辅助
lsof -a -p [server_process_id]
你会得到:袜子 0,8
状态 8:TCP_CLOSE
【讨论】:
我猜,TIME_WAIT。
你可以在 Linux 上用“netstat”查看它,不知道在 Solaris 上是怎么做的。
【讨论】: