为什么使用不同参数的 traceroute 会产生不同的路线?

为什么使用不同参数的 traceroute 会产生不同的路线?

我正在研究 traceroute 的工作原理,现在感觉有点困惑。

sudo traceroute -T aws.com
traceroute to aws.com (13.227.211.129), 30 hops max, 60 byte packets
 1  * * *
 2  100.64.0.103 (100.64.0.103)  0.546 ms 100.64.0.72 (100.64.0.72)  0.664 ms 100.64.0.33 (100.64.0.33)  0.650 ms
 3  130.193.63.248 (130.193.63.248)  3.796 ms  32.932 ms  3.887 ms
 4  mow-b4-link.ip.twelve99.net (62.115.170.18)  4.927 ms  4.866 ms  4.891 ms
 5  * * *
 6  adm-bb3-link.ip.twelve99.net (62.115.136.151)  43.684 ms  43.465 ms  43.854 ms
 7  adm-b2-link.ip.twelve99.net (80.91.253.163)  43.548 ms adm-b2-link.ip.twelve99.net (62.115.141.67)  43.077 ms adm-b2-link.ip.twelve99.net (80.91.253.163)  42.585 ms
 8  a100-ic314746-adm-b2.ip.twelve99-cust.net (62.115.146.67)  44.687 ms a100row-ic300134-adm-b2.ip.twelve99-cust.net (213.248.87.114)  48.243 ms  48.218 ms
 9  * 54.239.114.36 (54.239.114.36)  42.782 ms *
10  54.239.114.147 (54.239.114.147)  47.749 ms 54.239.114.65 (54.239.114.65)  41.303 ms 54.239.114.69 (54.239.114.69)  41.403 ms
11  * * *
12  * * *
13  * * *
14  * * *
15  * * *
16  150.222.249.245 (150.222.249.245)  42.581 ms 52.93.130.127 (52.93.130.127)  43.424 ms 54.239.42.203 (54.239.42.203)  42.566 ms
17  * * *
18  * * *
19  * * *
20  * * *
21  * * *
22  * * *
23  * * *
24  * * *
25  * * *
26  * * *
27  * * *
28  * * *
29  server-13-227-211-129.ams54.r.cloudfront.net (13.227.211.129)  45.159 ms  46.248 ms  49.153 ms

这些 *** 跳是什么?每个标记为 *** 的跳都是一个独立的路由器吗?或者它可能尝试多次到达同一个路由器,因此几次跳可能意味着同一个路由器,但我们永远不会知道?或者我的数据包可能在循环中运行,例如,几次跳可能是同一个路由器?

sudo traceroute -I aws.com
traceroute to aws.com (65.9.77.126), 30 hops max, 60 byte packets
 1  * * *
 2  100.64.0.73 (100.64.0.73)  0.494 ms  0.499 ms  0.494 ms
 3  130.193.63.248 (130.193.63.248)  3.903 ms  3.853 ms  3.847 ms
 4  mow-b4-link.ip.twelve99.net (62.115.170.18)  3.649 ms  3.701 ms  3.643 ms
 5  * * *
 6  adm-bb3-link.ip.twelve99.net (62.115.136.151)  43.460 ms  42.995 ms  42.980 ms
 7  adm-b2-link.ip.twelve99.net (213.155.137.211)  42.948 ms  42.850 ms  42.850 ms
 8  a100row-ic300134-adm-b2.ip.twelve99-cust.net (213.248.87.114)  51.693 ms  51.568 ms  51.557 ms
 9  54.239.114.84 (54.239.114.84)  46.527 ms  46.006 ms *
10  52.93.112.61 (52.93.112.61)  45.692 ms  45.704 ms  45.521 ms
11  * * *
12  * * *
13  * * *
14  * * *
15  * * *
16  65.9.77.126 (65.9.77.126)  45.380 ms  45.436 ms  45.392 ms

现在我添加了 -I 以使用 ICMP 数据包。为什么路由不同?BGP 是否正常工作?

答案1

它与 traceroute 选项或 BGP 无关。路由不同是因为 aws.com 解析为多个 IP。对于您来说,至少有 13.227.211.129(第一个 traceroute)和 65.9.77.126(第二个 traceroute)。

对我来说,它意味着:

aws.com has address 52.84.169.36
aws.com has address 52.84.169.63
aws.com has address 52.84.169.32
aws.com has address 52.84.169.117

答案2

你已经知道答案了:

-T表示建立到80端口的TCP连接,而-I表示向53 udp端口发送ICMP数据包。有些路由器出于自我保护会禁止ICMP数据包。所以可能会有所不同。

甚至你尝试多次 TCP 连接,结果也可能不同。因为整个互联网就像一个路网,而每个路由器就像一个交通路口。你不可能保证每次都沿着相同的路线开车到同一个地方,不是吗?

相关内容