从上海到阿根廷的网络走线方式和耗时
<br>
本篇大部分内容参考自 【网络知识】到地球另一面,需要多少跳路由?
<br>
地球上相距最远的两个点---对趾点
<br>
地理学上有个概念称为对跖(zhí)点(也叫对趾点或对映体 Antipodes),地球直径的两个端点互为对跖点。即从某个位置 A 连接地心,再从地壳中"穿出"的位置为 B, AB 两点就是对趾点.
<br>
对跖点指二者的经度和为 180°;纬度值相等,而南北半球相反。例如,北纬 40°,东经 120° 的对跖点是南纬 40°,西经 60°。对趾点是指地球的地心为原点,不是赤道零度线为原点。除此以外:
1、对跖点的地方时相差 12 小时。
2、对跖点的季节相反。
3、对跖点距离约 20000 千米。
<br>
国内大多数地点的对跖点都在南美洲,如"天津对应的是阿根廷的 Bahia Blance,上海对应的是乌拉圭的 Salto(萨尔托),香港对应的是阿根廷的 Humahuaca",北京则对应阿根廷潘帕斯草原,附近没有较大城市. 可以通过这个在线工具,查看地球上任意一点的对跖点
互为对跖点的两地是地球上距离最远的两个点,以从上海到阿根廷布宜诺斯艾利斯为例,最快的航班,普遍耗时都在 1 天以上,且走欧洲/非洲,而不会跨越太平洋 (主要原因大概是太平洋实在太大,远离陆地和人口聚集区,尤其尼莫点所在的南太平洋)
<br>
真实物理世界的万里之遥,耗时许久,在网络世界里会怎么样?
比如说从上海发一个请求到阿根廷的服务器,要经过多少跳路由? 路线如何? 耗时大概多少呢?
<br>
实践
<br>
以 梅西老家罗萨里奥(Rosario,也是迪玛利亚和斯卡罗尼的老家,其对跖点大致是南京)的罗萨里奥日报官网为例, 使用traceroute
命令追踪其路由转发
traceroute
会显示数据包经过的每个路由器的 IP 地址和每一跳的延迟, 跟踪数据包在网络上的路径,诊断连接问题,并检测延迟( Windows 上可用 tracert
命令 )
下面是一些解释:
<br>
原理:
<br>
有很多个***
的,即请求超时,这是因为转发节点关闭了 TTL 为 0 的数据包回复
traceroute
通过向目标地址发送 TTL 依次递增的 ICMP 报文,记录收发报文的时间来判断网络延迟.
TTL 是 IPV4 报头中的一个字段,是为防环设计的,不同系统默认值不同(最大的是 255).
报文每经过一个转发节点,TTL 的值就会-1. 如果设备收到 TTL 等于零的报文,会先丢弃,然后给源节点 发送一个 ICMP 超时报文通知丢包.
比如在这个例子中,我的电脑首先会向目标主机(此处为第一站路由器)发送 TTL 为 1 的 ICMP 报文.
TTL 等于 1,代表这个报文只能转发一次第一站路由器收到之后,会先检查报头,发现 TTL 不足以支撑继续转发,就会丢包,然后告诉我的电脑.
我的电脑收到回复会记录延迟,然后发送 TTL 等于 2 的 ICMP 报文.这时第一站路由器就可以进行转发了,到达第二站路由器之后,报文会再次被丢弃,然后向我的电脑发送超时报文..
通过这样的方法,最终将报文发送至目标主机.目标主机回复 ICMP 应答,就可以知道途经多少台路由器,以及每个转发节点的延迟了.
但是很多转发设备为了节省硬件资源,防止网络攻击,会禁止回复 ICMP
如果我的电脑没有收到回复报文,会等待一个超时时间,如果依然没有收到应答,会增加 TTL 继续发送. 所以即使途经设备不回复报文,依然可以判断经过了一跳,但这样就无法确定途经了哪个节点,以及经过节点的延迟时间. 这就是为什么有很多请求超时,依然可以完成路径测试的原因(比如此处的第 5 跳,第 19,20 跳)
<br>
1 192.168.1.1 (192.168.1.1) 4.869 ms 10.104 ms 10.581 ms
为什么有三个时间?
<br>
traceroute 命令每个跃点(即 节点)会发送三个数据包来测试该路由器,记录三次数据包的往返时间。(如果其中某个包 traceroute 没有得到响应,则会显示为*,如第 11 跳的202.97.51.161 (202.97.51.161) 11.322 ms *
),不影响分析.
具体来说:
第一个时间 4.869ms,是第一个数据包从本地到达该路由器 192.168.1.1 的往返时间。
第二个时间 10.104ms,是第二个数据包从本地到达该路由器的往返时间。
第三个时间 10.581ms,是第三个数据包从本地到达该路由器的往返时间。
发送三个数据包并记录时间,是为了更准确地探测和检查网络连接状态。因为网络延迟可能会有波动,三次测试结果可以反映出网络延迟的平均值和波动范围。
若只发送一个数据包,记录的往返时间仅仅是一个瞬时值,无法反映网络真实情况。通过三次测试可以获取更可靠的测量结果。
<br>
5 * * *
为什么显示为*?
<br>
第 5 跳节点显示的是* * *
,表示 traceroute 在这个节点失败了,没有获取到有效结果。
失败的可能原因有以下几种:
路由器不支持 ICMP 回应,traceroute 依赖 ICMP 回应追踪路由,如果某个路由器过滤掉 ICMP,就无法取得结果。
网络超时,跃点间网络延迟过长,超过 traceroute 设定的最大等待时间。
网络路由改变,traceroute 检测期间网络路径出现变化。
安全策略阻断,某些路由器会过滤 traceroute 即安全考虑。
网络故障,如线路故障等导致跃点临时不可达。
所以,* * * 表示 traceroute 在这个网络节点失败,可能由于上述原因无法获取有效响应。一般不影响整体路径检查
<br>
第 10 跳 10 * 202.97.71.34 (202.97.71.34) 20.179 ms
前面为什么有个*?
<br>
10 号跃点第一个结果为*
是因为 traceroute 在为这个跃点发送第一个数据包时失败了,没有得到响应。
具体原因可能是:
网络超时,第一个数据包响应时间过长超出限制。
安全策略阻断了第一个数据包。
但可以看到后两个结果返回正常,显示往返时间 20.179ms 和 24.970ms。
所以:
第一个数据包传输失败,显示为*。
第二个和第三个数据包传输正常取得时间。
这通常不影响判断此跃点的网络质量,只是第一个尝试失败了。同时后两个成功结果也表明该跃点网络基本可用。
<br>
即一般会发 3 个数据包,某次失败了就会以*
表示.
<br>
第 7 跳为什么会有 3 个 ip 地址?
<br>
即
对于同一个节点,traceroute 可能会显示多个 IP 地址,这与路由器技术有关:
当网络流量通过负载平衡(Load Balancing)时,同一地点可能使用多个路由器进行流量分担。
当路由器使用 ECMP(Equal-Cost Multi-Path)功能时,流量可能通过多个出口链路离开同一节点。
内部使用 Anycast 技术的路由器,外部显示的 IP 地址不是固定的,可能变化。
所以在 7 号跃点,数据包可能通过三个不同的物理路由器 101.95.89.45、101.95.89.97 与 101.95.89.37 离开这个网络节点。
显示多个 IP 地址并不意味着路径有问题,而是反映了底层网络结构特征,如负载平衡、ECMP 等技术的应用。
而每个 IP 地址对应的往返时间就记录了通过这个物理路由器的数据包的耗时,这对诊断网络性能更有帮助。
多个 IP 地址表明数据在同一网络节点内可能通过不同途径发送,这在现代网络结构中很常见。
<br>
<br>
分析:
<br>
可以看到从地球的这边到地球的那边,一共用了 21 跳
<br>
来看下转发的路径,查询 ip 归属地的在线工具有很多,经过必选使用iplocation.net/,可以聚合多个网站的查询结果
<br>
首先是内网网关,一台 TP-LINK 路由器, 内网延迟通常都非常低,都是 10ms 甚至更短.
然后是一台地址为124.14.56.1
的运营商设备(长城宽带,可以认为和鹏博士是一家公司,这名字不像搞网络的..)
之后两跳都是运营商内网地址,
第 6 跳124.74.43.177
为上海电信,第 7-9 跳同样, 即还没有出市
第 10 跳应该是来到了广东惠州,
一个 IP 地址能给出多个不同归属地…突然很好奇,ip 归属地是怎么确定的?得到实时精确的 IP 归属,是很困难的一件事么
第 11,12 跳也在广东惠州,
CHINANET是中国电信拥有的 2 张全国骨干网之一, 详细可参考互联网骨干网全面解析
<br>
第 13 跳213.140.53.209
出了国,到了西班牙马德里
其中关于 priv.net.telefonicaglobalsolutions.com,
Telefónica Global Solutions 是一个全球性的电信服务提供商,隶属于西班牙电信集团 Telefónica。
priv.net 指的是 Telefónica Global Solutions 的专用网络(Private Network),也就是 Telefónica 集团内部通信用的网络域名。
telefonicaglobalsolutions.com 则是 Telefónica Global Solutions 公司的主域名。
所以 priv.net.telefonicaglobalsolutions.com 代表了:
此次 traceroute 跨越的是一个 Telefónica 集团内部的专用网络
这个网络属于 Telefónica 旗下的全球服务供应商 Telefónica Global Solutions 运营
位置处于从阿根廷到西班牙的国际通信骨干部分
所以当 traceroute 显示这个域名时,说明数据包已进入 Telefónica 私有国际骨干网络,离目标网站位置已非常接近。
<br>
马德里是西欧和拉丁美洲的主要连接通道, 很多国际线路都会在这里中转.
之后的几跳也一直在马德里中转,最后一跳190.57.233.230
到了阿根廷首都布宜诺斯艾利斯. 罗萨里奥是日报的服务器,并没有部署在本市,可能用的是云服务器
<br>
从上海发起请求,到达目标服务器,耗时在 500ms 以内.
所以世界上最远的距离,对于网络设备来说也并不远只需要 500ms 就可以穿过 21 个节点,抵达地球的另一面
这个地址是世界上所有国际海底光缆的互动图
<br>
所以从上海到阿根廷的网络包发送线路,基本和航班差不多,走欧洲-大西洋,而不是太平洋
<br>
另外下图是全球实时航空和海运的情况,可见大西洋航路整体要比面积是其两倍,约占海洋总面积一半的太平洋"繁忙"很多.
且因为陆地和人口稀少,南太平洋可以算是"人迹罕至"
评论