在我们的一台服务器中,许多连接位于CLOSE_WAIT
中。我知道这意味着连接的另一端已关闭,现在由服务器来发送FIN
并将状态更改为LAST_ACK
并关闭连接。
我的问题是:
RST
状态时客户端发送CLOSE_WAIT
怎么办?FIN
之后,如果服务器仍要发送更多数据,在这种情况下服务器的状态是什么?如果服务器处于CLOSE_WAIT状态时客户端发送RST怎么办?
服务器仍将打开套接字,因此状态不会改变。 CLOSE_WAIT表示本地TCP正在等待本地应用程序关闭套接字。
在客户端发送FIN之后,如果服务器仍想发送更多数据,在这种情况下服务器的状态是什么?
FIN表示客户端已停止发送。这并不意味着客户端无法接收。如果服务器尝试发送,则:
它将成功,这意味着客户端仅关闭输出,或
它将从客户端发出RST,这意味着客户端已关闭套接字。由于TCP缓冲,RST可能不会在第一次发送时发生,而在随后的发送中发生。