« Back
read.

Understanding the traceroute Command

Traceroute 可以显示数据包在IP网络经过的路由器的IP地址,也就是用来发现网络数据包的路由途径。

Traceroute 程序利用ICMP报文和IP首部中的生存时间(TTL)值来实现其功能的。Traceroute 程序发送一份UDP数据包给目的主机,但它选择一个不可能的值作为 UDP端口号(大于30000) ,使目的主机的任何一个应用程序都不可能使用该端口。每当数据包经过一个路由器,其生存时间就会减1或减去数据包在路由器中停留的秒数(由于大多数的路由器转发数据报的时延都小于1秒钟,因此TTL最终成为一个跳站的计数器,所经过的每个路由器都将其值减1)。当其存活时间是0时,便取消数据包,并传送一个 ICMP Time Exceeded Message (TEM) 给原数据包的发出者。

具体实现原理:首先,发送者的Traceroute 程序发出的首3个UDP数据包TTL值是1,在路径上的第一个路由器使得TTL值减1为0后,数据包超时取消,第一个路由器回应一个 ICMP Time Exceeded Message (TEM) 给数据包的发送者,指出数据包超时。之后发送者再发出3个UDP数据包TTL值是2,使得第二个路由器也返回ICMP TEMs。如此类推,这个进程一直继续下去,直到数据包到达最终目的地,因为这些数据包选择一个不可能的值作为 UDP端口号,因此目的主机最终会返回  ICMP Port Unreachable Messages 给数据包的发送者,指出端口不可达。这样Traceroute 提取发 ICMP TTL到期消息设备的IP地址并作域名解析。每次 ,Traceroute 都打印出一系列数据,包括所经过的路由设备的域名及 IP地址,三个包每次来回所花时间,最终便可以得到一连串数据包路径(注意IP不保证每个数据包走的路径都一样)。

注:Traceroute 有一个固定的时间等待响应(ICMP TTL到期消息)。如果这个时间过了,它将打印出一系列的*号表明:在这个路径上,这个设备不能在给定的时间内发出ICMP TTL到期消息的响应。然后,Traceroute给TTL记数器加1,继续进行。

 

IP Traceroute Text Characters

nn msec For each node, the round-trip time in milliseconds for the specified number of probes
* The probe timed out
A Administratively prohibited (example, access-list)
Q Source quench (destination too busy)
I User interrupted test
U Port unreachable
H Host unreachable
N Network unreachable
P Protocol Unreachable
T Timeout
? Unknown packet type

1. nn msec : 来回时间 (单位 msec) , 特定数目的探针
2. * : 超时
3. A : 代表 administratively prohibited,人为禁止 (例 :ACL )
4. Q : 源抑制(Source Quench) , 目标设备繁忙
5. I : 用户中断测试
6. U : 端口不可达
7. H : 主机不可达
8. N : 网络的可达
9. P : 协议不可达
10. T : 超时
11. ? : 未知 packet 类型
 

Cisco 平台:

traceroute

R1 :   lo0  1.1.1.1/32   、R4:  lo0  4.4.4.4/32   、互连网段:10.1.xx.0/24 (R1和R2为10.1.12.0/24 ,类推)
 

1. R1#traceroute 4.4.4.4
Type escape sequence to abort.
Tracing the route to 4.4.4.4
1 10.1.12.2 276 msec 420 msec 328 msec
2 10.1.23.3 416 msec 388 msec 408 msec
3 10.1.34.4 816 msec 720 msec 716 msec
R1#  

 

2.R1#debug ip pac de
IP packet debugging is on (detailed)
R1#traceroute  4.4.4.4
Type escape sequence to abort.
Tracing the route to 4.4.4.4
1 10.1.12.2 424 msec 168 msec 276 msec
2
*Mar  1 00:44:32.591: IP: tableid=0, s=10.1.12.1 (local), d=4.4.4.4 (FastEthernet0/0), routed via FIB   *Mar  1 00:44:32.591: IP: s=10.1.12.1 (local), d=4.4.4.4 (FastEthernet0/0), len 28, sending   *Mar  1 00:44:32.595:     UDP src=41227, dst=33434   *Mar  1 00:44:33.011: IP: tableid=0, s=10.1.12.2 (FastEthernet0/0), d=10.1.12.1 (FastEthernet0/0), routed via RIB *Mar  1 00:44:33.011: IP: s=10.1.12.2 (FastEthernet0/0), d=10.1.12.1 (FastEthernet0/0), len 56, rcvd 3   *Mar  1 00:44:33.015:     ICMP type=11, code=0   *Mar  1 00:44:33.015: IP: tableid=0, s=10.1.12.1 (local), d=4.4.4.4 (FastEthernet0/0), routed via FIB   *Mar  1 00:44:33.015: IP: s=10.1.12.1 (local), d=4.4.4.4 (FastEthernet0/0), len 28, sending   *Mar  1 00:44:33.015:     UDP src=40533, dst=33435   *Mar  1 00:44:33.179: IP: tableid=0, s=10.1.12.2 (FastEthernet0/0), d=10.1.12.1 (FastEthernet0/0), routed via RIB   *Mar  1 00:44:33.179: IP: s=10.1.12.2 (FastEthernet0/0), d=10.1.12.1 (FastEthernet0/0), len 56, rcvd 3   10.1.23.3 984 msec*Mar  1 00:44: 480 msec 444 msec     3 33.179:     ICMP type=11, code=0   *Mar  1 00:44:33.183: 10.1.34.4 612 msec 580 msecIP: tableid=0, s=10.1.12.1 (local), d=4.4.4.4 (FastEt 600 msec   R1#hernet0/0), routed via FIB   *Mar  1 00:44:33.183: IP: s=10.1.12.1 (local), d=4.4.4.4 (FastEthernet0/0), len 28, sending   *Mar  1 00:44:33.183:     UDP src=41168, dst=33436   *Mar  1 00:44:33.455: IP: tableid=0, s=10.1.12.2 (FastEthernet0/0), d=10.1.12.1 (FastEthernet0/0), routed via RIB   *Mar  1 00:44:33.459: IP: s=10.1.12.2 (FastEthernet0/0), d=10.1.12.1 (FastEthernet0/0), len 56, rcvd 3   *Mar  1 00:44:33.459:     ICMP type=11, code=0   *Mar  1 00:44:33.459: IP: tableid=0, s=10.1.12.1 (local), d=4.4.4.4 (FastEthernet0/0), routed via FIB   *Mar  1 00:44:33.459: IP: s=10.1.12.1 (local), d=4.4.4.4 (FastEthernet0/0), len 28, sending   *Mar  1 00:44:33.463:     UDP src=40145, dst=33437   *Mar  1 00:44:34.443: IP: tableid=0, s=10.1.23.3 (FastEthernet0/0), d=10.1.12.1 (FastEthernet0/0), routed via RIB   *Mar  1 00:44:34.443: IP: s=10.1.23.3 (FastEthernet0/0), d=10.1.12.1 (FastEthernet0/0), len 56, rcvd 3   *Mar  1 00:44:34.443:     ICMP type=11, code=0   *Mar  1 00:44:34.447: IP: tableid=0, s=10.1.12.1 (local), d=4.4.4.4 (FastEthernet0/0), routed via FIB   *Mar  1 00:44:34.447: IP: s=10.1.12.1 (local), d=4.4.4.4 (FastEthernet0/0), len 28, sending   *Mar  1 00:44:34.447:     UDP src=39177, dst=33438   *Mar  1 00:44:34.923: IP: tableid=0, s=10.1.23.3 (FastEthernet0/0), d=10.1.12.1 (FastEthernet0/0), routed via RIB   *Mar  1 00:44:34.923: IP: s=10.1.23.3 (FastEthernet0/0), d=10.1.12.1 (FastEthernet0/0), len 56, rcvd 3   *Mar  1 00:44:34.927:     ICMP type=11, code=0   *Mar  1 00:44:34.927: IP: tableid=0, s=10.1.12.1 (local), d=4.4.4.4 (FastEthernet0/0), routed via FIB   *Mar  1 00:44:34.927: IP: s=10.1.12.1 (local), d=4.4.4.4 (FastEthernet0/0), len 28, sending   *Mar  1 00:44:34.927:     UDP src=38581, dst=33439   *Mar  1 00:44:35.367: IP: tableid=0, s=10.1.23.3 (FastEthernet0/0), d=10.1.12.1 (FastEthernet0/0), routed via RIB   *Mar  1 00:44:35.367: IP: s=10.1.23.3 (FastEthernet0/0), d=10.1.12.1 (FastEthernet0/0), len 56, rcvd 3   *Mar  1 00:44:35.367:     ICMP type=11, code=0   *Mar  1 00:44:35.371: IP: tableid=0, s=10.1.12.1 (local), d=4.4.4.4 (FastEthernet0/0), routed via FIB   *Mar  1 00:44:35.371: IP: s=10.1.12.1 (local), d=4.4.4.4 (FastEthernet0/0), len 28, sending   *Mar  1 00:44:35.371:     UDP src=34785, dst=33440   *Mar  1 00:44:35.983: IP: tableid=0, s=10.1.34.4 (FastEthernet0/0), d=10.1.12.1 (FastEthernet0/0), routed via RIB   *Mar  1 00:44:35.983: IP: s=10.1.34.4 (FastEthernet0/0), d=10.1.12.1 (FastEthernet0/0), len 56, rcvd 3   *Mar  1 00:44:35.983:     ICMP type=3, code=3   *Mar  1 00:44:35.987: IP: tableid=0, s=10.1.12.1 (local), d=4.4.4.4 (FastEthernet0/0), routed via FIB   *Mar  1 00:44:35.987: IP: s=10.1.12.1 (local), d=4.4.4.4 (FastEthernet0/0), len 28, sending   *Mar  1 00:44:35.987:     UDP src=35225, dst=33441   *Mar  1 00:44:36.563: IP: tableid=0, s=10.1.34.4 (FastEthernet0/0), d=10.1.12.1 (FastEthernet0/0), routed via RIB   *Mar  1 00:44:36.563: IP: s=10.1.34.4 (FastEthernet0/0), d=10.1.12.1 (FastEthernet0/0), len 56, rcvd 3   *Mar  1 00:44:36.567:     ICMP type=3, code=3   *Mar  1 00:44:36.567: IP: tableid=0, s=10.1.12.1 (local), d=4.4.4.4 (FastEthernet0/0), routed via FIB   *Mar  1 00:44:36.567: IP: s=10.1.12.1 (local), d=4.4.4.4 (FastEthernet0/0), len 28, sending   *Mar  1 00:44:36.567:     UDP src=41830, dst=33442   *Mar  1 00:44:37.167: IP: tableid=0, s=10.1.34.4 (FastEthernet0/0), d=10.1.12.1 (FastEthernet0/0), routed via RIB   *Mar  1 00:44:37.167: IP: s=10.1.34.4 (FastEthernet0/0), d=10.1.12.1 (FastEthernet0/0), len 56, rcvd 3   *Mar  1 00:44:37.167:     ICMP type=3, code=3  

 

第一跳 R2 :    UDP   rst = 33434、33435、33436 返回3个  ICMP type=11, code=0 : time-exceeded code 0 = time to live exceeded in transit
 

第二跳 R3 :    UDP   rst = 33437、33438、33439 返回3个  ICMP type=11, code=0 : time-exceeded code 0 = time to live exceeded in transit
 

第三跳 R4  目的地 :    UDP   rst = 33440、33441、33442 返回3个  ICMP type=3, code=3 : destination unreachable code  3 = port unreachable
 

windows 系统:

c:\>tracert www.sina.com.cn

通过最多 30 个跃点跟踪

到 polaris.sina.com.cn [202.108.33.60] 的路由:

1 6 ms 6 ms 6 ms 222.131.112.1

2 6 ms 6 ms 3 ms 222.131.112.1

3 10 ms 3 ms 5 ms 61.148.160.177

4 7 ms 7 ms 8 ms 123.126.8.21

5 7 ms 5 ms 5 ms 61.148.143.22

6 6 ms 13 ms 6 ms 210.74.178.198

7 6 ms 6 ms 5 ms 202.108.33.60

跟踪完成。

c:\>