我正在研究 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 连接,结果也可能不同。因为整个互联网就像一个路网,而每个路由器就像一个交通路口。你不可能保证每次都沿着相同的路线开车到同一个地方,不是吗?