拓扑:客户端-----中间设备-----服务器
客户端:win7
中间设备:未知
服务器:CentOS 5.8
客户端和服务器尝试建立 SSL 连接时会出现问题。它发生在一个特定端口 2000 上。我无法在其他端口号上重现此问题。
我在客户端和服务器上都捕获了数据包。在 TCP 握手之后,从客户端的角度来看,它没有收到之前发送的数据包的 ACK,因此它一直在重新发送它们。然而,在服务器端,它确实收到了这些数据包并发送了 ACK 数据包。
奇怪的是,服务器发送这些 ACK 后,它会针对其发送的每个数据包从中间设备收到一个 [RST, ACK] 数据包。
可能是什么原因?
答案1
如果在 SSL 连接协商后发生这种情况,则中间设备可能会认为加密将端口 2000 上的流量视为潜在的安全威胁(或在某种程度上是“不受欢迎的”),并做出两件事:
- 拦截服务器发送的“ACK”,这样它们就不会到达客户端,客户端会认为服务器没有响应
- 向服务器发送重置,以便服务器不会保持连接打开,等待永远不会来自客户端的流量