如何调查计算机停止 TCP 连接的原因?

如何调查计算机停止 TCP 连接的原因?

我刚刚写过这个问题在另一个 StackExchange 网站上,但我被建议在这里提出同样的问题。

我想扩大这个问题:我如何知道为什么主机关闭另一个主机请求的 TCP 套接字连接?((事件)日志、网络监控......)

答案1

对于这个宽泛的问题,有一些宽泛的答案,因为这些是我在相同情况下执行的典型步骤:

  1. /var/log/{messages,secure}客户端连接尝试期间的尾部
  2. 检查/etc/hosts.deny客户端的 IP
  3. 在两端执行数据包捕获(tcpdump、wireshark),以确保服务器收到客户端 SYN,并且不是拒绝/阻止请求的中间跳
  4. 在客户端尝试连接之前,查找服务器端(netstat或类似端)上打开并监听的套接字
  5. 检查客户端和服务器防火墙规则(如果在云端,包括安全组等),以确保在尝试的 IP/端口对上允许入站/出站连接
  6. 尝试相同的连接,但使用完善的工具(例如nc/netcat) - 是您的代码/工具无法在该 IP /端口或其他工具上建立连接?

关于您在其他网站上提出的原始问题,您是否能够建立完整的三向 TCP 握手,但发送数据后就会断开连接(RST/FIN 数据包?)?如果是这样,这可能表明 TCP 上方的应用程序协议不喜欢发送的数据并决定终止连接。

相关内容