如果 ACK 永远丢失,TCP 的行为是什么。重新传输会永远发生还是会重置连接?
假设 A 是 TCP-server,B 是 TCP-Client。如果服务器 A 在一段时间后静默失败,没有发送 FIN 也没有发送重置,客户端 TCP 堆栈会无限期地重试吗?或者是否存在超时,之后连接将重置?
注意:假设服务器和客户端应用程序没有实现任何 TCP keepalive 机制。
如果 ACK 永远丢失,TCP 的行为是什么。重新传输会永远发生还是会重置连接?
假设 A 是 TCP-server,B 是 TCP-Client。如果服务器 A 在一段时间后静默失败,没有发送 FIN 也没有发送重置,客户端 TCP 堆栈会无限期地重试吗?或者是否存在超时,之后连接将重置?
注意:假设服务器和客户端应用程序没有实现任何 TCP keepalive 机制。
TCP 连接在一定次数的不成功重传后关闭。我认为这个数字是 5。
然而,这只发生在实际上有一个数据包(段)要发送和重传的情况下。如果没有传出段,并且没有使用保活,则套接字将永远打开。
在现实世界中,现代传输层和应用程序都存在超时。这些天没有什么是无限期重试的。