是否可以强制 TCP 寻找到主机的另一条路径?

是否可以强制 TCP 寻找到主机的另一条路径?

我的电脑上有两个操作系统,在其中一个操作系统中,TCP 可以正常找到通往主机的路径,而在另外一个操作系统中,traceroute 中途中断。路由是否可能以某种方式被缓存了?如果是这样,是否可以重置此缓存?观察到 KDE Neon 问题的操作系统是最新版本。

答案1

路线是否可能以某种方式被缓存?如果是这样,是否可以重置此缓存?

不,只有第一的跳跃(即到本地网关的路由)受操作系统的控制,但您无法控制网络外部所采用的路径。

请记住,Windows“tracert.exe”工具始终发送 ICMP 探测(而不是 TCP),而 Linux“traceroute”默认倾向于发送 UDP 探测(也不是 TCP,尽管它是一种选择)——有时这些会纯粹因为目标主机附近的防火墙配置而产生不同的结果;UDP 探测更有可能被悄悄丢弃。

用于traceroute -I在 Linux 上强制使用 ICMP,并查看它是否对跟踪路由结果有任何影响。(也请尝试mtr。)


是否可以强制 TCP 寻找到主机的另一条路径?

TCP 对路径或路由1一无所知- 它只是要求 IP 将数据包传送到特定地址,而路由选择完全是 IP 的工作。

然而,IP 路由通常逐跳,即每个网关单独决定将数据包转发到哪个“下一跳”,并且发送主机无法影响整个路径2(因此也不能缓存整个路径)。

回答标题中的问题:不,如果问题发生在您的网络之外,您无法强制 IP 寻找另一条路径 - 您需要联系最后一个可访问网络的运营商才能执行此操作。

影响路由的唯一方法是使用隧道通过其他地方的另一台协作主机 - 换句话说就是 VPN。即使您没有到主机的有效直接路径,VPN 服务器可能仍然有,并允许您作为变通方法访问主机,直到真正的问题得到解决。


1(IPv4 的前身 –TCPv3– 确实同时处理两项任务,但这只持续了很短的一段时间,即 1978 年。到年底,这两项职能分裂

2(IPv4做过具有“源路由”选项,允许发送主机请求采取特定的转发步骤,同样,IPv6 也具有“路由报头类型 0”,又名 RH0,但由于存在安全风险,两者都已从规范中删除,您将找不到任何网络运营商再识别这些选项。因此,即使您仍然--gateway=在 Linux traceroute 中看到该选项,或在 Windows tracert 中看到该-j选项,它们也不再有效。)

答案2

扩展@user1686 答案中的脚注:https://superuser.com/a/1760203/374853

IPv4 确实有“源路由”......

IPv6 SRH(分段路由标头)允许发送者指定数据包应通过的“路径点”(其他 IPv6 地址)列表。然后,您的路线将是由每个路径点之间的路径组成的“路段”。

因此,如果您的网络支持,您可以指示 IP(无论如何是 IPv6)采用特定路由。

我不知道性健康和生殖健康 (SRH) 得到了多少广泛的支持。思科网站上的分段路由建议在私有网络中使用。我想大多数 ISP 都会忽略或丢弃该标头。

更多阅读:

维基百科文章有点短小精悍,但却能提供很好的电梯宣传。

https://segment-routing.org包含大量有关 IPv6 分段路由细节的信息,包括数据包格式的详细描述

相关内容