Answers:
除了传输数据的那一侧外,TCP不会尝试检测无效连接。这是应用程序代码调用TCP堆栈的责任。这里涉及什么协议?(TCP之上的那个。)
这是一个非常丑陋的“解决方案”,但是您可以启用TCP keepalive。本文还有更多内容。
对的,这是可能的。正如David和Paul在回答中所指出的那样,TCP中没有检测到半开连接的机制(TCP保持活动除外,TCP保持活动是可选的)。由应用程序供应商确定连接状态并采取相应的措施。
就TCP而言,没有检测到半开连接和长空闲连接之间的区别。
从OSI模型的第1层(物理)到第7层(应用程序),您将必须开始对此进行故障排除,以找出问题出在哪里。我的建议是在一个受影响的客户端上安装并运行一个数据包捕获程序,直到出现问题为止,然后分析捕获以尝试确定是什么原因导致客户端无法关闭连接。
当工作站想要关闭与服务器的连接时,它将发送TCP FIN。如果客户端行为不正常且未关闭其连接,则实际上它们仍可以在服务器上保持建立状态。您可以为服务器上的打开连接设置超时以清除这些超时-虽然最好查找原因。开放连接进入哪个端口?一旦知道要访问什么服务,您就可以确定正在访问服务器的客户端应用程序。