当我通过 Windows 网络和共享中心更改 IP 地址时,TCP 连接立即关闭(没有超时)

当我通过 Windows 网络和共享中心更改 IP 地址时,TCP 连接立即关闭(没有超时)

我与互联网上的某个 TCP 服务器建立了 TCP 连接。TCP 客户端是我创建的一个简单的应用程序,可在我的计算机上运行。问题是,当我通过 Windows 网络和共享中心更改 IP 地址时,我的 TCP 连接会立即关闭,而不会使用任何超时。你知道为什么会发生这种情况吗?

我感觉当我通过 Windows 网络和共享中心更改 IP 地址时,Windows 正在向我的 TCP 连接发送关闭信号。但我无法证明这一点!我在互联网上搜索也没有找到任何东西。

编辑:如果我的连接物理关闭(拔掉电缆),tcp 服务器会等待一段时间(超时)。但如果我按照我提到的更改 IP 地址,连接会立即关闭。

答案1

TCP 是一种使用流套接字的面向连接协议。它由两端的 IP 地址和端口号绑定。

RFC 793 (传输控制协议),具体来说是第 2.7 节:

2.7. 连接建立和清除

为了识别 TCP 可能处理的单独数据流,TCP 提供了端口标识符。由于端口标识符由每个 TCP 独立选择,因此它们可能不是唯一的。为了在每个 TCP 中提供唯一地址,我们将标识 TCP 的互联网地址与端口标识符连接起来,以创建一个在所有连接在一起的网络中都是唯一的套接字。

在面向连接的协议中,对等体之间在交换数据之前会建立一个逻辑通道。因此,如果 IP 地址发生变化,则必须拆除现有连接并重新建立新连接,这显然会造成破坏。

IP 地址变更将造成破坏,因为 TCP 等高级协议将被关闭。移动电话通过使用 GTP 或移动 IP 等专用协议来克服此类情况。

简而言之,更改发送方 IP 地址的过程的一部分涉及关闭所有使用旧地址的连接。

关闭不同于切断通信路径,因为对方会有序地得到套接字已经关闭的通知,并会立即关闭自己这边的套接字。

这与通信路径被粗暴切断的情况不同,在这种情况下,另一方将等待预定的时间才决定单方面关闭连接,甚至这也需要在连接上激活保持活动状态,否则可能会出现长时间的等待。

答案2

如果您更改 IP 地址,连接将无法再看到您。
它可能会轮询您几分钟,看看您是否还在那里,但您不在。

对你来说,连接似乎立即关闭了。此时它是否试图干净利落地关闭连接实际上并不重要……对于远程计算机来说,你只是消失了,它无法知道你去了哪里。

相关内容