1. traceroute可以用来查询从一台主机到另一台主机所经过的路由。
2. 原理
ping程序提供一个记录路由选项,但并不是所有的路由机都支持这个选项,而且IP首部选项字段最多也只能存储9个IP地址,因此开发traceroute是必要的。
traceroute利用了ICMP报文和IP首部的TTL字段。TTL是一个8bit的字段,为路由器的跳站计数器,也表示数据报的生存周期。每个处理数据报的路由器都需要将TTL减一。如果TTL为0或者1,则路由器不转发该数据报,如果TTL为1,路由器丢弃该包并给源地址发送一个ICMP超时报文(如果是主机接收到TTL为1的数据报可以交给上层应用程序)。
traceroute程序开始时发送一个TTL字段为1的UDP数据报(选择一个不可能的值作为UDP端口号),然后将TTL每次加1,以确定路径中每个路由器。每个路由器在丢弃UDP数据报的时候都返回一个ICMP超时报文(如:ICMP time exceeded in-transit, length 36),而最终主机则产生一个ICMP端口不可达报文(如: ICMP 74.125.128.103 udp port 33492 unreachable, length )。
对每个TTL,发送3份数据报,并且计算打印出往返时间。如果5秒内未收到任意一份回应,则打印一个星号。
需要注意的是:
(1)并不能保证现在的路由就是将来所采用的路由;
(2)不能保证ICMP报文的路由与traceroute程序发出的UDP数据报采用同一路由;
(3)返回的ICMP报文中信源的IP地址是UDP数据报到达的路由器接口的IP地址。
3. 示例
# traceroute 192.168.10.15
traceroute to 192.168.10.15 (192.168.10.15), 30 hops max, 60 byte packets
1 192.168.10.15 (192.168.10.15) 5.656 ms 5.662 ms 5.660 ms
# traceroute www.google.com
traceroute to www.google.com (74.125.128.103), 30 hops max, 60 byte packets
1 192.168.0.11 (192.168.0.11) 0.149 ms 0.123 ms 0.104 ms
2 211.101.1.252 (211.101.1.252) 0.477 ms 0.555 ms 0.673 ms
3 124.202.128.89 (124.202.128.89) 0.297 ms 0.282 ms 0.268 ms
4 124.202.11.29 (124.202.11.29) 0.978 ms 1.157 ms 1.276 ms
5 124.202.11.9 (124.202.11.9) 1.486 ms 1.629 ms 1.744 ms
6 219.239.92.193 (219.239.92.193) 1.200 ms 1.164 ms 1.216 ms
7 * 14.197.246.217 (14.197.246.217) 104.973 ms *
8 221.4.0.162 (221.4.0.162) 106.755 ms 116.940 ms 106.763 ms
9 221.4.0.161 (221.4.0.161) 103.989 ms 114.443 ms 114.565 ms
10 120.80.7.153 (120.80.7.153) 117.309 ms 117.970 ms 118.753 ms
11 120.80.0.61 (120.80.0.61) 117.138 ms 117.105 ms 117.034 ms
12 219.158.14.241 (219.158.14.241) 114.114 ms 114.099 ms *
13 219.158.11.206 (219.158.11.206) 112.492 ms 112.350 ms 112.356 ms
14 219.158.97.2 (219.158.97.2) 113.497 ms 102.978 ms 102.965 ms
15 219.158.3.238 (219.158.3.238) 135.272 ms 146.019 ms 146.003 ms
16 72.14.215.130 (72.14.215.130) 50.959 ms 50.947 ms 50.926 ms
17 209.85.248.60 (209.85.248.60) 70.952 ms 209.85.248.62 (209.85.248.62) 40.450 ms 209.85.248.60 (209.85.248.60) 51.192 ms
18 216.239.43.17 (216.239.43.17) 50.559 ms 39.525 ms 209.85.253.71 (209.85.253.71) 51.180 ms
19 * * *
20 hg-in-f103.1e100.net (74.125.128.103) 50.472 ms 50.837 ms 50.605 ms
4. IP源站选路选项
这个选项由发送者制定路由,有两种方式:
(1)严格的路由选项:只能经过这些指定的地址,不能经 过其它地址
(2)宽松的路由选项:为数据报指定一系列经过的路由清单,清单中任意两个路由之间还可以通过其他路由
一个示例: