TCP 流控制误解的原因是什么?

TCP 流控制误解的原因是什么?

客户端无法连接到我们的 Web 服务器。我嗅探了客户端和 Web 服务器,结果发现客户端认为 TCP 连接成功,而服务器认为连接失败。此问题的可能原因是什么?客户端发送给服务器的 ACK 数据包在通过网络时是否损坏了。

两个截图均显示在下面的链接中。

客户 在此处输入图片描述

服务器 http://postimg.org/image/c089q8hrt/

答案1

这两个设备之间肯定存在重写数据包的事物。客户端从其自己的 TCP/58055 端口打开到 TCP/80 的连接。服务器看到来自 TCP/5822 的 SYN 数据包。只有当某些网络设备(例如 NAT 设备或某些防火墙)正在重写数据包时,才会发生这种情况。

客户端视图中存在的“SACK_PERM=1”进一步支持了这一点。这是选择性确认,并且是 TCP 选项。服务器看到的 SYN 数据包已在某处被剥离。这是一个典型的防火墙设置,因为 SACK 被视为不安全或可能被 DDoS 攻击。

在这两者之间某处有一个设备妨碍了工作。你无法在端点修复此问题。

答案2

我的第一猜测是两个系统之间的某个状态防火墙出现了问题。也可能是本地防火墙。请注意,ACK 数据包似乎都无法通过。

相关内容