作为netstat中的一个状态值,LAST_ACK是什么意思?

如果Windows服务器有几千个以LAST_ACK状态打开的端口(如netstat所示),这意味着什么? 是否因为一个端点正在等待对方回应?

last_ack状态(如果我正确地调用了我的TCP堆栈)是在收到FIN消息以closures来自邻居的连接时的状态,但仍然需要刷新并closures连接。 您自己发送最终的FIN并等待ACK。

通常挂在last_ack意味着你的应用程序保持一个套接字打开,即使当另一端已经完成发送数据。 这可能有多种原因。 有可能是防火墙或其他负载平衡器丢失客户端的最后一个ACK,并留下你在last_ack状态。 如果几分钟后(10左右)连接没有超时,你可能有一个错误。

看看http://tangentsoft.net/wskfaq/articles/debugging-tcp.html的状态图

LAST_ACK是在closuresTCP连接之前的最后一个状态。

LAST_ACK表示您的端已经从对端收到了一个FIN,发送了一个ACK,发送了一个FIN,并且正在等待来自对端的最终ACK。 在这一点上,应用程序没有什么可以做的:套接字被closures。 应用程序甚至可能已经退出。 从这里开始,TCP重新发送FIN,直到获得最终的ACK,或者超时。 除了调查他的networking以外,没有太多可以做为pipe理员。

我相信@lmo是正确的,说这是“closuresTCP连接之前的最后一个状态”,但除此之外,根据我对维基百科页面的阅读,值得注意的是,这不是“主动closures“(Active Close)机制(在我的理解中)是大多数行为良好的关系的结局,而是”被动closures“序列的一部分,这大概是与坏事发生相关的。

(FWIW,我是语言,不是networking,我很乐意从networking人员那里得到澄清。)