通过 traceroute 我们可以检测 packet 从你的计算机到互联网另一端的主机是走的什么路径。 当然每次 packet 走的路径可能会不一样,但基本上来说大部分时候所走的路径是相同的。
traceroute 通过发送小的数据包到目的设备直到其返回,来测量其需要多长时间。 一条路径上的每个设备 traceroute 默认测试 3 次,输出结果中包括每次测试的时间(ms)和设备的名称(如有的话)及其IP地址。
在大多数情况下,我们会在linux主机系统下,直接执行命令行:
traceroute hostname
而在Windows系统下是执行tracert的命令:
tracert hostname
下面就是测试 www.baidu.com 的路径信息:
$ traceroute www..baidu.com
traceroute to www.baidu.com (112.80.248.73), 30 hops max, 60 byte packets
1 www.test.com (192.168.1.1) 5.347 ms 9.549 ms 11.191 ms
2 119.35.48.1 (119.35.48.1) 76.873 ms 79.856 ms 82.085 ms
3 172.31.14.21 (172.31.14.21) 34.445 ms 36.646 ms 36.643 ms
4 172.22.22.121 (172.22.22.121) 37.296 ms 172.22.22.113 (172.22.22.113) 38.242 ms 172.22.22.121 (172.22.22.121) 44.192 ms
5 172.22.22.122 (172.22.22.122) 41.904 ms 172.22.22.114 (172.22.22.114) 42.798 ms 44.155 ms
6 210.21.4.169 (210.21.4.169) 46.436 ms 120.85.131.69 (120.85.131.69) 17.027 ms 58.248.191.41 (58.248.191.41) 13.585 ms
7 120.80.173.34 (120.80.173.34) 15.777 ms 120.84.0.49 (120.84.0.49) 19.349 ms *
8 112.92.0.17 (112.92.0.17) 20.410 ms 24.583 ms 25.599 ms
9 * 219.158.106.86 (219.158.106.86) 53.705 ms *
10 221.6.1.254 (221.6.1.254) 52.823 ms * 122.96.66.126 (122.96.66.126) 45.625 ms
11 58.240.96.130 (58.240.96.130) 41.011 ms 122.96.66.118 (122.96.66.118) 41.142 ms 122.96.66.126 (122.96.66.126) 43.643 ms
12 58.240.96.34 (58.240.96.34) 66.879 ms 10.203.194.129 (10.203.194.129) 45.342 ms 58.240.96.34 (58.240.96.34) 64.597 ms
13 10.203.194.129 (10.203.194.129) 43.035 ms 10.203.195.130 (10.203.195.130) 40.427 ms 10.203.194.129 (10.203.194.129) 44.781 ms
14 * * 10.203.195.130 (10.203.195.130) 48.576 ms
15 * * *
16 * * *
17 * * *
18 * * *
19 * * *
20 * * *
21 * * *
22 * * *
23 * * *
24 * * *
25 * * *
26 * * *
27 * * *
28 * * *
29 * * *
30 * * *
默认最多检测 30 跳,每一跳发送 3 次探测包,这样每一跳对应 3 个响应时间。
第一跳就是你电脑所设置的网关,后面有 3 个时间,分别对应 3 次探测包,
可以通过 -p
选项来指定每一跳发送探测包的数量。
有时 traceroute 一台主机时,会看到有一些行是以星号表示的。 出现这样的情况,可能是防火墙封掉了 ICMP 的返回信息,所以我们得不到什么相关的数据包返回数据。