写点什么

从上海到阿根廷的网络走线方式和耗时

作者:fliter
  • 2024-01-29
    上海
  • 本文字数:4549 字

    阅读完需:约 15 分钟

<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命令 )



 traceroute www.elciudadanoweb.comtraceroute to www.elciudadanoweb.com (190.57.233.230), 64 hops max, 52 byte packets 1  192.168.1.1 (192.168.1.1)  4.869 ms  10.104 ms  10.581 ms   | 本地 2  124.14.56.1 (124.14.56.1)  7.404 ms  12.895 ms  10.954 ms   | 3  10.64.132.150 (10.64.132.150)  10.967 ms  8.312 ms  7.850 ms 4  10.64.4.65 (10.64.4.65)  15.315 ms    10.64.4.73 (10.64.4.73)  9.074 ms  9.792 ms 5  * * * 6  124.74.43.177 (124.74.43.177)  9.034 ms  11.949 ms  14.535 ms 7  101.95.89.45 (101.95.89.45)  9.627 ms    101.95.89.97 (101.95.89.97)  8.514 ms    101.95.89.37 (101.95.89.37)  16.248 ms 8  101.95.89.98 (101.95.89.98)  27.841 ms    101.95.89.42 (101.95.89.42)  12.169 ms    101.95.89.98 (101.95.89.98)  10.552 ms 9  * * 61.152.26.98 (61.152.26.98)  22.034 ms10  * 202.97.71.34 (202.97.71.34)  20.179 ms    202.97.57.157 (202.97.57.157)  24.970 ms11  202.97.39.61 (202.97.39.61)  11.583 ms    202.97.51.161 (202.97.51.161)  11.322 ms *12  202.97.95.206 (202.97.95.206)  230.975 ms    202.97.43.38 (202.97.43.38)  180.878 ms    202.97.63.26 (202.97.63.26)  216.756 ms13  te-0-3-0-35-3-grtfraix4.priv.net.telefonicaglobalsolutions.com (213.140.53.209)  239.429 ms  213.793 ms  210.840 ms14  213.140.36.95 (213.140.36.95)  188.987 ms    176.52.248.125 (176.52.248.125)  207.647 ms  191.291 ms15  94.142.127.43 (94.142.127.43)  385.709 ms    94.142.127.8 (94.142.127.8)  357.323 ms *16  * * 84.16.15.66 (84.16.15.66)  289.405 ms17  94.142.99.166 (94.142.99.166)  386.778 ms    94.142.97.22 (94.142.97.22)  358.863 ms    94.142.99.166 (94.142.99.166)  389.131 ms18  213.140.39.119 (213.140.39.119)  363.053 ms  390.179 ms  370.400 ms19  * * *20  * * *21  elciudadanoweb.revisionalpha.net (190.57.233.230)  491.422 ms  367.375 ms  387.253 ms
复制代码


下面是一些解释:


<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 在这个节点失败了,没有获取到有效结果。


失败的可能原因有以下几种:


  1. 路由器不支持 ICMP 回应,traceroute 依赖 ICMP 回应追踪路由,如果某个路由器过滤掉 ICMP,就无法取得结果。

  2. 网络超时,跃点间网络延迟过长,超过 traceroute 设定的最大等待时间。

  3. 网络路由改变,traceroute 检测期间网络路径出现变化。

  4. 安全策略阻断,某些路由器会过滤 traceroute 即安全考虑。

  5. 网络故障,如线路故障等导致跃点临时不可达。


所以,* * * 表示 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>



7 101.95.89.45 (101.95.89.45) 9.627 ms101.95.89.97 (101.95.89.97) 8.514 ms101.95.89.37 (101.95.89.37) 16.248 ms
复制代码


对于同一个节点,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>


另外下图是全球实时航空海运的情况,可见大西洋航路整体要比面积是其两倍,约占海洋总面积一半的太平洋"繁忙"很多.


且因为陆地和人口稀少,南太平洋可以算是"人迹罕至"




用户头像

fliter

关注

www.dashen.tech 2018-06-21 加入

Software Engineer. Focus on Micro Service,Containerization

评论

发布
暂无评论
从上海到阿根廷的网络走线方式和耗时_fliter_InfoQ写作社区