在一个网络中,例如广域网中,网络是由多个网端多个路由组成的,那么在这里一
个路由器成为一个节点,如何找到你在访问目标主机时所经过的路径?这就要依靠
tracert 命令的威力了。Tracert 是一个探测路由的程序,可以让我们看见IP 数据报到达目的地经过的路由。
 
Tracert 利用ICMP数据报和IP数据报头部中的TTL值。TTL(Time To Live)是一个IP 数据报的生存时间,当每个IP 数据报经过路由器的时候都会把TTL 值减去1或者减去在路由器中停留的时间,但是大多数数据报在路由器中停留的时间都小于1秒钟,因此实际上就是在TTL 值减去了1。这样,TTL 值就相当于一个路由器的计数器。
 
当路由器接收到一个TTL为0或者1 的IP数据报的时候,路由器就不再转发这个
数据了,而直接丢弃,并且发送一个ICMP“超时”信息给源主机。Tracert 程序的关键就是这个回显的ICMP报文的IP报头的信源地址就是这个路由器的IP地址。同时,如果到达了目的主机,我们并不能知道,于是,Tracert 还同时发送一个UDP信息给目的主机,并且选择一个很大的值作为UDP 的端口,使主机的任何一个应用程序都不使用这个端口。所以,当达到目的主机的时候,UDP模块就产生一个“端口不可到达”的错误,这样就能判断是否是到达目的地了。
 
一、Tracert 命令详解
该诊断实用程序将包含不同生存时间(TTL) 值的Internet 控制消息协议(ICMP)回显数据包发送到目标,以决定到达目标采用的路由。要在转发数据包上的TTL 之前至少递减 1,必需路径上的每个路由器,所以TTL 是有效的跃点计数。数据包上的TTL 到达0 时,路由器应该将“ICMP 已超时”的消息发送回源系统。Tracert 先发送TTL 为1 的回显数据包,并在随后的每次发送过程将TTL 递增 1,直到目标响应或TTL 达到最大值,从而确定路由。路由通过检查中级路由器发送回的“ICMP 已超时”的消息来确定路由。不过,有些路由器悄悄地下传包含过期TTL 值的数据包,而tracert看不到。
tracert [-d] [-h maximum_hops] [-j computer-list] [-w timeout] target_name
使用tracert 跟踪网络连接
Tracert(跟踪路由)是路由跟踪实用程序,用于确定IP 数据报访问目标所采取的路径。Tracert 命令用IP 生存时间(TTL) 字段和ICMP 错误消息来确定从一个主机到网络
上其他主机的路由。
 
Tracert 工作原理
通过向目标发送不同IP 生存时间(TTL) 值的“Internet 控制消息协议(ICMP)”回应数据包,Tracert 诊断程序确定到目标所采取的路由。要求路径上的每个路由器在转发数据包之前至少将数据包上的TTL 递减 1。数据包上的TTL 减为0 时,路由器应该将“ICMP 已超时”的消息发回源系统。

Tracert 先发送TTL 为1 的回应数据包,并在随后的每次发送过程将TTL 递增 1,直到目标响应或TTL 达到最大值,从而确定路由。通过检查中间路由器发回的“ICMP
已超时”的消息确定路由。某些路由器不经询问直接丢弃TTL 过期的数据包,这在
Tracert 实用程序中看不到。

Tracert 命令按顺序打印出返回“ICMP 已超时”消息的路径中的近端路由器接口列
表。如果使用-d 选项,则Tracert 实用程序不在每个IP 地址上查询DNS。在下例中,数据包必须通过两个路由器(10.0.0.1 和192.168.0.1)才能到达主机172.16.0.99。主机的默认网关是10.0.0.1,192.168.0.0 网络上的路由器的IP 地址是192.168.0.1。
C:\>tracert  -d 172.16.0.99
Tracing route to 172.16.0.99 over a maximum of 30 hops
1 2s 3s 2s 10,0.0,1
2 75 ms 83 ms 88 ms 192.168.0.1
3 73 ms 79 ms 93 ms 172.16.0.99
Trace complete.
 

用法: tracert [-d] [-h maximum_hops] [-j host-list] [-w timeout]
               [-R] [-S srcaddr] [-4] [-6] target_name
选项:
    -d                 不将地址解析成主机名。
    -h maximum_hops    搜索目标的最大跃点数。
    -j host-list       与主机列表一起的松散源路由(仅适用于 IPv4)。
    -w timeout         等待每个回复的超时时间(以毫秒为单位)。
    -R                 跟踪往返行程路径(仅适用于 IPv6)。
    -S srcaddr         要使用的源地址(仅适用于 IPv6)。
    -4                 强制使用 IPv4。
    -6                 强制使用 IPv6。
使用tracert 命令跟踪路径,打开命令提示符,然后键入tracert host_name或者键入tracert ip_address,其中host_name 或ip_address 分别是远程计算机的主机名或IP 地址。
例如,要跟踪从该计算机到 www.microsoft.com 的连接路由,请在命令提示行键
入:
tracert www.microsoft.com
tracert 命令跟踪TCP/IP 数据包从该计算机到其他远程计算机所采用的路径。
tracert 命令使用ICMP 响应请求并答复消息(和ping 命令类似),产生关于经过的每
个路由器及每个跃点的往返时间(RTT) 的命令行报告输出。
如果tracert 失败,可以使用命令输出来帮助确定哪个中介路由器转发失败或耗时太多