我刚刚写过这个问题在另一个 StackExchange 网站上,但我被建议在这里提出同样的问题。
我想扩大这个问题:我如何知道为什么主机关闭另一个主机请求的 TCP 套接字连接?((事件)日志、网络监控......)
答案1
对于这个宽泛的问题,有一些宽泛的答案,因为这些是我在相同情况下执行的典型步骤:
/var/log/{messages,secure}
客户端连接尝试期间的尾部- 检查
/etc/hosts.deny
客户端的 IP - 在两端执行数据包捕获(tcpdump、wireshark),以确保服务器收到客户端 SYN,并且不是拒绝/阻止请求的中间跳
- 在客户端尝试连接之前,查找服务器端(
netstat
或类似端)上打开并监听的套接字 - 检查客户端和服务器防火墙规则(如果在云端,包括安全组等),以确保在尝试的 IP/端口对上允许入站/出站连接
- 尝试相同的连接,但使用完善的工具(例如
nc/netcat
) - 是您的代码/工具无法在该 IP /端口或其他工具上建立连接?
关于您在其他网站上提出的原始问题,您是否能够建立完整的三向 TCP 握手,但发送数据后就会断开连接(RST/FIN 数据包?)?如果是这样,这可能表明 TCP 上方的应用程序协议不喜欢发送的数据并决定终止连接。