TCP 连接可以保持打开多长时间?

How long can a TCP connection stay open?

考虑这样一个场景,有client-aserver-bserver-b 已禁用 TCP 保活。 server-b 没有任何应用程序逻辑来检查 TCP 连接是否打开。 client-a 建立到 server-b 的 TCP 连接。之后 client-aserver-b 之间没有数据传输。在这种情况下,服务器会关闭空闲连接吗?或者服务器将使 TCP 连接永远保持打开状态。

阅读Longest Open TCP Connection?后,我猜想这样的TCP连接将永远保持打开状态。我的猜测是否正确?

TCP 连接本身没有限制。理论上,客户端和服务器可以保持连接多年而不交换任何数据,也没有任何数据包流。问题通常是由 NAT 路由器或防火墙等中间设备引起的,它们会保持状态并在某些不活动后使状态过期。连接中发送的任何新数据包都无法传递,因为中间盒中不再存在关联状态。