tracert使用详解

概念

Tracert(跟踪路由)是路由跟踪实用程序,用于确定 IP数据包访问目标所采取的路径。Tracert 命令使用用 IP 生存时间 (TTL) 字段和 ICMP 错误消息来确定从一个主机到网络上其他主机的路由。

常规使用

C:\Users\A>Tracert www.baidu.com

通过最多 30 个跃点跟踪
到 www.a.shifen.com [112.80.248.76] 的路由:

  1    <1 毫秒   <1 毫秒   <1 毫秒 hzyj [192.168.2.1]
  2     3 ms     2 ms     3 ms  101.71.194.1
  3     3 ms     2 ms     2 ms  124.90.33.185
  4     9 ms     8 ms     8 ms  101.69.245.197
  5    15 ms    15 ms    15 ms  219.158.115.74
  6    12 ms    12 ms    13 ms  153.3.228.154
  7    14 ms    15 ms    14 ms  153.37.96.158
  8     *        *        *     请求超时。
  9    13 ms    12 ms    13 ms  112.80.248.76

跟踪完成。

现在就可以用112.80.248.76来访问百度了。
image

指令

tracert [-d] [-h maximum_hops] [-j host-list] [-w timeout] [-R] [-S srcaddr] [-4] [-6] target_name

其中参数说明如下:

-d                  不将地址解析成主机名。
-h maximum_hops     搜索目标的最大跃点数,默认30。
-j host-list        与主机列表一起的松散源路由(仅适用于 IPv4)。指定沿host-list的稀疏源路由列表序进行转发。
                    host-list是以空格隔开的多个路由器IP地址,最多9个;
-w timeout          等待每个回复的超时时间(以毫秒为单位)。
-R                  跟踪往返行程路径(仅适用于 IPv6)。
-S srcaddr          要使用的源地址(仅适用于 IPv6)。
-4                  强制使用 IPv4。
-6                  强制使用 IPv6。
target_name         目标计算机的名称。

wireshark 分析tracert过程

image

所以tracert是基于ICMP协议的。
本机共发送了6个请求,每发送两个请求就会收到一个回复的消息。其中三条请求没有回复,显示no response,这表示丢包,。
wireshark会根据pacp文件中的icmp请求和回显报文,自动补齐Response frame或no response found字段;这个是wireshark行为,不是包本身信息。

Tracert 命令用 IP 生存时间 (TTL) 字段和 ICMP 错误消息来确定从一个主机到网络上其他主机的路由。

实现原理

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收到这个消息后,就知道目的地到达了
image

posted @ 2021-12-07 16:04  Smah  阅读(2518)  评论(0编辑  收藏  举报