如何通过不断变化的 IP 地址维护 TCP 连接

网络工程 ipv4 通讯协议
2021-07-08 21:40:47

我记得当我通过电话线和 56kbps 调制解调器连接到互联网时,更改 ISP 就像更改调制解调器拨打的电话号码一样简单。

我记得我的 IP 地址会每 1 分钟更改一次,并且不会中断连接。但我还记得通过 HTTP 下载大文件,有时下载需要几个小时才能完成。

在这种情况下,TCP连接如何保持打开,而IP地址经常变化?

另外,作为一个附带问题......我住在英国,所以现在都是光纤和静态 IP,我很想知道世界上其他地方是否仍然依赖这样的技术。

4个回答

TCP 连接无法在更改 IP 时保持打开状态,因为连接是由源 IP+端口和目标 IP+端口定义的。如果这些更改之一,则您不再具有相同的连接。

如果您需要在 ISP 的 IP 更改时保持连接,那么您不应该将此 IP 用作传出,而是构建到外部某个 VPN 服务器的隧道。即使您从 ISP 获得的 IP 发生变化,VPN 也会为您提供恒定 IP。另一种选择是编写您的应用程序,以便它注意到 IP 的变化并重新连接和恢复流量。

TCP 是一种使用流套接字的面向连接的协议。它由两个端点的 IP 地址和端口号绑定。在面向连接的协议中,在交换数据之前,在对等体之间建立逻辑通道。因此,如果 IP 地址发生变化,它必须拆除现有连接并重新建立连接,这显然是破坏性的。

如果订阅者配置为静态 IP 地址或动态 IP 地址的此类计划,则 IP 地址可能会在每次重新启动期间更改。

但是,当连接打开时,IP 地址更改不是首选,因为考虑到更高级别的协议(如 TCP)将关闭,这会造成破坏。当移动设备在不同的 PDN 之间移动时,可能会发生这种情况。为了克服这个问题,基于 3GPP 的网络使用 GTP 或移动 IP。

GTP(GPRS 隧道协议)确保数据通过隧道传输,从而保留相同的 IP 地址。

移动 IP 允许使用 CoA(地址转交)进行位置无关的数据路由,CoA 使用 PGW 作为家乡代理 (HA),SGW 作为外地代理 (FA)。此处,FA 向 HA 提供移动特定 CoA,以便可以将数据包转发到移动位置的正确目的地。

现在不能用香草 TCP 完成。

但是:正在开发名为“多路径 TCP”的东西,其明确目标是“将 TCP 与 IP 解耦”。

Steffen Ullrich 已经澄清了 TCP 连接会发生什么。我也想回答你的附带问题。

由于 IPv4 地址耗尽,世界各地的许多 ISP 仍然依赖 IP 租用。每分钟更改一次是不现实的,但每 24 小时更改一次是通常情况。原因很简单,因为他们没有足够的地址来为每个客户端提供专用 IP。这种情况将随着在可预见的未来拥有足够地址的 IPv6 而改变。