TCP 握手成功,但客户端尚未收到来自服务器的任何数据包

TCP 握手成功,但客户端尚未收到来自服务器的任何数据包

拓扑:客户端-----中间设备-----服务器

客户端:win7

中间设备:未知

服务器:CentOS 5.8

客户端和服务器尝试建立 SSL 连接时会出现问题。它发生在一个特定端口 2000 上。我无法在其他端口号上重现此问题。

我在客户端和服务器上都捕获了数据包。在 TCP 握手之后,从客户端的角度来看,它没有收到之前发送的数据包的 ACK,因此它一直在重新发送它们。然而,在服务器端,它确实收到了这些数据包并发送了 ACK 数据包。

奇怪的是,服务器发送这些 ACK 后,它会针对其发送的每个数据包从中间设备收到一个 [RST, ACK] 数据包。

可能是什么原因?

答案1

如果在 SSL 连接协商后发生这种情况,则中间设备可能会认为加密将端口 2000 上的流量视为潜在的安全威胁(或在某种程度上是“不受欢迎的”),并做出两件事:

  • 拦截服务器发送的“ACK”,这样它们就不会到达客户端,客户端会认为服务器没有响应
  • 向服务器发送重置,以便服务器不会保持连接打开,等待永远不会来自客户端的流量

相关内容