13

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

在阅读了最长打开的 TCP 连接之后?,我猜这样的 TCP 连接将永远保持打开状态。我的猜测正确吗?

4

1 回答 1

22

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

于 2017-08-15T13:52:30.223 回答