Answers:
last_ack状态(如果我能正确地调用TCP堆栈,则是您收到FIN消息以关闭邻居的连接时的状态),但是您仍然需要刷新和关闭连接。您自己发送最终的FIN并等待ACK。
通常挂在last_ack中意味着即使另一端完成了数据发送,您的应用程序仍保持套接字打开。发生这种情况有多种原因。可能有防火墙或其他负载平衡器丢失了来自客户端的最后一个ACK,并使您陷入了last_ack状态。如果几分钟(大约10分钟)后连接仍未超时,则可能是错误。
在http://tangentsoft.net/wskfaq/articles/debugging-tcp.html上查看状态图
LAST_ACK是关闭TCP连接之前的最后一个状态。
我相信@lmo的正确说法是“关闭TCP连接之前的最后一个状态”,但是除此之外,根据我对Wikipedia页面的阅读,值得注意的是,这不是“ “主动关闭”机制(据我理解)是大多数行为良好的连接的结尾,而是“被动关闭”序列的一部分,“被动关闭”序列可能与发生问题的情况有关。
(FWIW,我是语言,而不是网络。对于网络人员的澄清,我很高兴。)