在我们的某个服务器中,许多连接都在CLOSE_WAIT中。据我所知,这意味着连接的另一端已关闭,现在由服务器发送FIN并将状态更改为LAS_ACK并关闭连接。
我的问题是 1.如果客户端在服务器处于CLOSE_WAIT状态时发送RST怎么办? 2.客户端发送FIN后,如果服务器仍想发送更多数据,那么在这种情况下服务器的状态是什么?
提前感谢您的帮助。
答案 0 :(得分:1)
如果客户端在服务器处于CLOSE_WAIT状态时发送RST怎么办?
服务器仍然会打开套接字,因此状态不会改变。 CLOSE_WAIT表示本地TCP正在等待本地应用程序关闭套接字。
客户端发送FIN后,如果服务器仍想发送更多数据,那么在这种情况下服务器的状态是什么?
FIN表示客户端已停止发送。这并不意味着客户端无法接收。如果服务器尝试发送,则:
它会成功,这意味着客户端只关闭输出,或
它会从客户端激发RST,这意味着客户端关闭了套接字。由于TCP缓冲,RST可能不会在第一次发送时发生,而是在后续发送时发生。