在安全 Shell 客户端和服务器之间的通信路径中的一个或多个网络接口关闭并在片刻后重新出现后,是什么使它们能够恢复通信?如果配置了给定 IP 的 NIC 发生故障,重置连接到该地址上的套接字的所有客户端的连接不是常见的做法吗?TCP 超时是一回事,但我不太明白在地址“关闭”后如何恢复 TCP 套接字。
实际上,我意识到这是一个复杂的问题。我正在寻找可以帮助我理解是什么使得在 Linux 2.6+ 上运行的 OpenSSH 服务器能够表现得好像连接没有被切断一样的答案。
除了 TCP 超时之外,还有其他问题吗?如果是,那么当 NIC 发生故障时,监听套接字会发生什么?如果没有,那么我想概述一下 OpenSSH(或其他服务,如果相关)为保持连接而采用的更复杂的技术。
答案1
这并非特定于 SSH 服务器。TCP 连接保持打开状态,直到最初打开它们的应用程序将其关闭为止 - 无论转发表如何更改(这实际上代表关闭接口)。