...哪种机制可确保当您在具有 IP 地址 6.7.8.9 的位置 A 发送请求时,您将不会收到响应,其中还有一些在具有 IP 地址 6.7.8.9 的位置 B 传送的数据包和另外几个数据包在也有 IP 地址 6.7.8.9 的位置 C 交付?
这就是任播的真正意义所在。当您向任播 IP 地址发送某些内容时,路由协议会将流量路由到该地址的最近(根据路由协议)网络。如果某个网络的链接出现问题,则流量将自动重新路由到下一个最近的站点。作为发件人,您并不关心哪一个获得了流量。这就是为什么它对 DNS 和 NTP 之类的东西如此有用。
这不像个人可以开始在公共互联网上为网络做广告。在公共 Internet 上为网络做广告的人最好拥有该网络。如果您与 ISP 有 BGP 关系,他们会发现您是否在宣传一个您不拥有的网络,并且您将与 ISP 的 BGP 对等连接被立即切断。
CloudFlare 也将任播用于内容交付网络,这将是基于 TCP 的 HTTP(S) 而不仅仅是 UDP 数据包。如果您正在上传一些数据并且数据分散在不同的服务器上,唯一的选择是重新传输它并希望下次它转到正确的服务器还是任播可以选择防止这种情况发生?
TCP 不能分散在不同的服务器上。TCP 是面向连接的协议,它创建连接。如果与您有连接的服务器的链接出现故障,您需要创建到下一个服务器的新连接。任播无非是使用路由协议将流量传送到具有该网络地址的最近网络。
如果使用任播,并且如果到服务器 A 的路径是一分之一秒的最短路径,然后到服务器 B 的路径是另一分之一秒的最短路径,然后到 A 的路径又是另一个最短路径几分之一秒,等等。它会分散在不同的服务器上。在进入超时状态之前需要几秒钟的时间,并且 TCP 在进入超时状态之前需要进行多次重新传输尝试。
如果路由经常更改,尤其是在 Internet 上,这将是一个严重的网络问题。BGP 会注意到抖动,它会惩罚抖动的链路,并且该链路将从路由更新中被丢弃。你会很难在现实世界中找到你害怕的东西。ISP 非常重视稳定性,他们会阻止表现出不稳定的合作伙伴关系。
这种情况如何:服务器 A 和 B 具有与任播相同的 IP 地址。服务器 B 连接到一个离服务器 A 很近但离服务器 B 很远的外部服务器,由于服务器 A 更近,响应将被路由回服务器 A,是不是可以总是路由这种类型的请求回到服务器 B,因为服务器 B 发起了与外部服务器的连接?
你真的想让这比现在复杂得多。您不会发起从任播地址到 Internet 上任何旧地址的连接。任播地址是目的地址。如果具有任播地址的主机需要联系 Internet 上的不同主机,则它使用非任播地址,或者在接口上具有辅助地址,或者更有可能使用不同的接口。不要将任播地址与主机本身混淆。
说真的,有一些非常非常聪明的人整天什么都不做,只是想着这种事情。RFC 必须在按照提议发布之前获得同行批准。如果没有人有任何真正的反对意见,他们将被提升为 RFC。从这个想法的最初阶段,到 RFC 发布之后,整个世界都在显微镜下观察这些内容。如果任播中真的存在缺陷,它就会在几年前被发现并提出解决方案。
任播有多个 RFC:RFC 1546、主机任播服务(1993 年 11 月)、RFC 4786、任播服务操作(2006 年 12 月)和RFC 7094、IP 任播的架构考虑(2014 年 1 月)。这些 RFC 将解释任播如何工作。