TCP 连接断开,每个端点指向另一个负责关闭它的端点

网络工程 路由器 防火墙 tcp
2022-02-06 12:30:09

在我的公司,我们有一个软件系统,用于通过 WAN 传输数千个不同大小的文件。发送方和接收方在不同的国家甚至大洲,大部分连接都是通过静态 VPN 隧道建立的。

该系统运行良好,但几乎每天都会在某个时间点(从几分钟到几小时)经历许多连接断开的时期。如果连接空闲 3 分钟,该软件可以关闭连接,并且当这种情况发生时,该操作会被正确记录并且易于识别。但是,在大多数情况下,我们在双方的日志中看到的不是连接因超时而关闭,而是“连接被远程主机强行关闭” ..所以我的结论是它是一个网络中间的设备正在主动向两个端点发送 RST

我的问题是,这可能吗?. 我知道路由器可以丢弃数据包,但我被告知它不能启动连接关闭。这是真的?如果是这样,是否知道为什么 TCP 堆栈在双方都表明是对方关闭了连接

非常感谢!

2个回答

我已经看到防火墙在解决问题时表现出这种确切的行为,欺骗 RST 数据包。在连接的一端运行捕获时,RST 似乎来自远程主机 - 尝试在远程主机上进行捕获,RST 似乎来自另一端。

因此,要回答您的问题,“TCP 感知”的网络设备绝对会导致这种情况。

当 TCP 连接通过网络负载平衡器时,我已经看到过这种情况,因为 TCP 会话空闲超时设置得太小了。