这个问题源于我和一位朋友的争论。在过去的几周里,我遇到了一个奇怪的现象。当我断开与互联网的连接时,我的所有连接都不会被切断。甚至 ssh 会话在重新连接后也能保持完整。这是怎么可能的?
这里的答案表明这是完全正常的。那么问题是:为什么要获得 TCP 连接总是有些人在重新连接到互联网后会感到迷茫,即使中间没有 NAT,我的朋友就是这种情况。除了互联网提供商之外,这两种设置都是可比的:通过拨号连接使用 Linux。
答案1
这是正常的。TCP 中没有任何内容要求链接永久打开 - 如果连接处于空闲状态(没有发送或接收数据),只要两端仍保持套接字打开,它就可以持续存在。(当然,如果一端尝试发送数据但从未收到 ACK,它最终会因超时而关闭连接。)
不幸的是,这通常会被状态 NAT/防火墙破坏;例如,如果您重新启动家用路由器,它将忘记 NAT 表中的所有内容,并且可能会默默地丢弃传入数据甚至关闭连接,因为它不知道将数据包转发到哪个本地主机。