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