这是新加坡的ping输出:

64 bytes from 8.8.8.8: icmp_seq=1 ttl=50 time=1.96 ms


新加坡到8.8.8.8 =〜2ms

另一个ping输出:

64 bytes from 23.59.8.146: icmp_seq=81 ttl=44 time=66.1 ms


新加坡到23.59.8.146 =〜66ms

现在我的问题是,即使两个服务器都位于美国(可从https://ipinfo.io找到) /),为什么第一台服务器的延迟/ RTT令人惊讶地更低?

评论

称为任意播。

首先,罗恩是正确的,任播允许8.8.8.8存在于多个物理位置。因此,您在本地或附近碰到的8.8.8.8几率就很大。还值得注意的是,与IP地址相关联的物理地址只是其注册位置,而不必位于物理位置。

光纤中的信号每毫秒最多传播200 km,因此这实际上是您的目的地的绝对最大距离。实际上,数据路径中的活动组件会消耗掉它,因此实际上更少了。因此,在那个时间范围内从新加坡到美国ping几乎是不可能的。

假设一毫秒约为186英里/ 300公里,那么A)有人大大加速了光线,B)别人大大缩短了距离,或者C)8.8.8.8回答了您的ping不在美国。

健全性检查结果,光需要5.6毫秒才能行驶1000英里:)

#1 楼

正如其他人指出的那样,Google DNS使用IP任播,这允许位于多个位置的多个服务器有效地共享IP地址。 Google(与其他许多其他公司一样)在世界各地都有许多服务器会响应8.8.8.8。国家。

请注意,地理位置服务(例如ipinfo)使用多种技术,包括注册信息。所有这些都是估计。

评论


我要特别指出的是,Cloudflare上的所有网站(HTTP / DNS)也可以从Anycast技术中受益-它们的存在点(PoP)遍布世界各地。

– iBug
20-04-24在6:40

@iBug Anycast技术通常不能用于基于连接的协议(例如HTTP),只能用于数据报协议(例如DNS和Ping)。像Akamai和Cloudflare这样的CDN使用其他技术将您重定向到最近的PoP。

– Barmar
20-04-24在16:28

@Barmarblog.cloudflare.com/…-在CloudFlare,我们进行了大量的工程设计,以允许TCP在Anycast上运行而不会发生波动

–马修·斯蒂夫斯(Matthew Steeples)
20-04-24在16:45

@Barmar我确定Anycast本身不会破坏基于连接的协议。如果正确配置了路由,则对于给定的源主机,在给定的时间段内,所有数据包都将路由到某个PoP,该PoP当然会与基于连接的上层协议一起使用。对于Cloudflare(我怀疑这实际上是Anycast的大多数参与者)来说,魔术就是BGP,它非常擅长提供一致的路由。

– iBug
20-04-24在18:16

@Barmar:对于短暂的连接来说很好。 DNS也经常基于连接-相同的1.1.1.1或8.8.8.8始终支持常规TCP,这是合规DNS服务所必需的,并且相同的地址现在还服务于DoT(TLS)和DoH(HTTPS),也是基于TCP的。 (并且在https://1.1.1.1/上还有一个实际的网站吗?)

–user1686
20-4-25在18:02



#2 楼

IP地理位置数据库实质上代表了地理位置公司对IP位置的猜测。通常,它们基于Whois注册中的地址,有时会加上地理定位公司自己的研究。对于最终用户IP,它们通常在国家/地区级别上是准确的,但是对于基础设施IP,即使这种情况经常不起作用。考虑一下例如欧美之间的点对点链接。尽管位于不同的大陆,链接两端的接口可能仍具有相邻的IP地址,没有地理位置数据库提供者会希望在其数据库中包括该详细级别。实际上同时存在于多个位置。路由基础结构实际上并不知道或不在乎给定地址块的所有路由是否最终都将数据传送到同一位置。一些服务运营商有意利用称为“ anycast”的技术来利用这一点。他们在多个位置部署服务器,这些服务器都响应同一服务IP *上的请求,然后从所有位置播发IP块。这就是为什么您在世界各地看到ping值低至8.8.8.8的原因。以及外发请求。