直接输入tracert,后面不带任何参数,会弹出来具体的使用方法,如下图所示:
C:\Users\0310011772>tracert用法: 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。C:\Users\0310011772>
实现原理
1、tracert发出TTL值为1的ICMP数据包(40个字节、源地址、目标地址和发出时间标签,一般发3个)
2、当到达路径上第一个路由器时,路由器会将,TTL值减1
3、此时TTL值为0,该路由器将此数据包丢弃,向源地址返回一个ICMP超时通知(数据包的源地址、路由器的IP地址)
4、当tracert收到该数据包,获得了这个路径上的第一个路由器的地址
5、tracert再发送另一个TTL为2的数据包
6、第一个路由器会将此数据包转发给第二个路由器
7、当TTL=0,第二个路由器返回一个超时通知,tracert得到第二个路由器地址
Tracert每次发出数据报时便会将TTL加1,发现下一个路由器
这个动作一直重复,直到到达目的地或者确定目标主机不可到达为止
到达目的IP后,目标主机并不返回超时报文
Tracert发送数据报时,会选择一个一般应用程序不会使用的号码来做端口(3000以上)
当到达目的地后,目标主机返回一个ICMP port unreachable(端口不可达)的消息
当tracert收到这个消息后,就知道目的地到达了
Tracert会提取ICMP的超时回应数据报中的IP地址并作主机名解析
(用-d参数表示不解析主机名,解析主机名会耽误一些时间),
然后将所经过的路由器的主机名及IP地址、数据报每次往返花费的时间显示出来。
Tracert有一个固定的等待响应时间,如果这个时间过了
tracert就会输出“*”来表示某个设备没有在规定的时间内作出响应,然后tracert会将TTL值加1,继续进行检测。
使用笔记
tracert 第一跳总是超时
使用实例
实例01
C:\Users\0310011772>tracert 1.15.14.51通过最多 30 个跃点跟踪到 1.15.14.51 的路由1 * * * 请求超时。2 * <1 毫秒 <1 毫秒 10.0.1.413 * <1 毫秒 <1 毫秒 bfbfbefe.virtua.com.br [191.191.190.254]4 <1 毫秒 <1 毫秒 <1 毫秒 10.88.88.15 * * * 请求超时。6 14 ms 9 ms 7 ms 111.47.11.657 3 ms 5 ms 3 ms 120.202.252.1858 4 ms * * 120.202.2.99 * * 5 ms 221.183.74.16510 * * * 请求超时。11 * * 24 ms 221.183.53.22612 * * * 请求超时。13 * 27 ms 27 ms 120.253.239.23814 * * * 请求超时。15 * * * 请求超时。16 * * * 请求超时。17 * * * 请求超时。18 24 ms 24 ms 25 ms 1.15.14.51跟踪完成。
实例02
不带选项的tracert命令将显示到达目标IP地址所经过的路径,并将IP地址解析为主机名一同显示。如下图所示,第一跳是网关地址,可以根据看到的主机名,判断我使用的是极路由。
根据上面的跟踪结果,画出从自己的主机出发到达www.heuet.edu.cn的网络结构
根据tracert命令输出的信息可知,第一行为我所在网段的网关
第二,第三行为所经过路由的网关
第四行为我所访问的路由地址
