考虑这样的场景,有client-a和server-b.server-b已禁用TCP keepalive.而server-b没有任何应用程序逻辑来检查TCP连接是否打开.client-a建立TCP连接server-b.之间client-a和server-b之后没有数据传输.在这种情况下,服务器是否会关闭空闲连接?或者服务器将使TCP连接永远保持打开状态.
阅读最长的开放TCP连接?,我想这样的TCP连接将永远保持开放.我猜是正确的吗?
TCP连接本身没有限制.理论上,客户端和服务器可以在不交换任何数据且没有任何数据包流的情况下保持连接多年.问题通常是由NAT路由器或防火墙之类的中间件引起的,这些中间件保持状态并在一些不活动后使状态到期.在连接中发送的任何新数据包都无法传递,因为中间框中不再存在关联状态.