trace命令

  • Post author:
  • Post category:其他



windos



Usage: tracert [-d] [-h maximum_hops] [-j host-list] [-w timeout]

[-R] [-S srcaddr] [-4] [-6] target_name

Options:

-d Do not resolve addresses to hostnames.

-h maximum_hops Maximum number of hops to search for target.

-j host-list Loose source route along host-list (IPv4-only).

-w timeout Wait timeout milliseconds for each reply.

-R Trace round-trip path (IPv6-only).

-S srcaddr Source address to use (IPv6-only).

-4 Force using IPv4.

-6 Force using IPv6.





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:\Users\bob>tracert 210.14.136.66

通过最多 30 个跃点跟踪到 210.14.136.66 的路由

1     1 ms     1 ms    <1 毫秒 10.176.64.3

2     1 ms    <1 毫秒    1 ms  10.176.255.44

3     3 ms     1 ms     5 ms  10.176.255.52

4     1 ms     1 ms     1 ms  10.190.6.100

5     2 ms     2 ms     2 ms  114.141.190.121

6     3 ms     2 ms     2 ms  114.141.128.25

7     2 ms     4 ms     2 ms  114.141.128.10

8     6 ms     3 ms     3 ms  222.73.128.137

9     8 ms     7 ms     7 ms  101.95.40.69

10    28 ms    31 ms    31 ms  202.101.63.194

11   170 ms     *        *     220.181.177.78

12     *        *        *     请求超时。

13     *       33 ms    27 ms  220.181.182.218

14     *        *        *     请求超时。

15     *        *        *     请求超时。

16     *        *        *     请求超时。

17    37 ms    26 ms    26 ms  210.14.136.66

跟踪完成。

C:\Users\bob>

Trace complete.

用 tracert 解决问题

可以使用 tracert 命令确定数据包在网络上的停止位置。下例中,默认网关确定 192.168.10.99 主机没有有效路径。这可能是路由器配置的问题,或者是 192.168.10.0 网络不存在(错误的 IP 地址)。

C:\>tracert 192.168.10.99

Tracing route to 192.168.10.99 over a maximum of 30 hops

1 10.0.0.1 reports:Destination net unreachable.

Trace complete.

Tracert 实用程序对于解决大网络问题非常有用,此时可以采取几条路径到达同一个点。

Tracert 命令行选项

Tracert 命令支持多种选项,如下表所示。

tracert [-d] [-h maximum_hops] [-j host-list] [-w timeout] target_name

-d 指定不将 IP 地址解析到主机名称。

-h maximum_hops 指定跃点数以跟踪到称为 target_name 的主机的路由。

-j host-list 指定 Tracert 实用程序数据包所采用路径中的路由器接口列表。

-w timeout 等待 timeout 为每次回复所指定的毫秒数。

target_name 目标主机的名称或 IP 地址。

使用 tracert 命令跟踪路径

打开 命令提示符,然后键入:

tracert host_name

或者键入 tracert ip_address

其中 host_name 或 ip_address 分别是远程计算机的主机名或 IP 地址。

例如,要跟踪从该计算机到 [url]

www.microsoft.com

[/url] 的连接路由,请在命令提示行键入:

tracert [url]

www.microsoft.com

[/url]

注意

要打开“命令提示符”,请单击“开始”,指向“程序”、“附件”,然后单击“命令提示符”。

tracert 命令跟踪 TCP/IP 数据包从该计算机到其他远程计算机所采用的路径。tracert 命令使用 ICMP 响应请求并答复消息(和 ping 命令类似),产生关于经过的每个路由器及每个跃点的往返时间 (RTT) 的命令行报告输出。

如果 tracert 失败,可以使用命令输出来帮助确定哪个中介路由器转发失败或耗时太多。

参数

/d

指定不将地址解析为计算机名。

-h maximum_hops

指定搜索目标的最大跃点数。

-j computer-list

指定沿 computer-list 的稀疏源路由。

-w timeout

每次应答等待 timeout 指定的微秒数。

target_name

目标计算机的名称












linux



traceroute命令的用法实例


traceroute 跟踪数据包到达网络主机所经过的路由工具;

traceroute 是用来发出数据包的主机到目标主机之间所经过的网关的工具。traceroute 的原理是试图以最小的TTL发出探测包来跟踪数据包到达目标主机所经过的网关,然后监听一个来自网关ICMP的应答。发送数据包的大小默认为 38个字节。


traceroute [参数选项] hostname,域名或 IP地址

参数选项:

-i 指定网络接口,对于多个网络接口有用。比如 -i eth1 或-i ppp1等;

-m 把在外发探测试包中所用的最大生存期设置为max-ttl次转发,默认值为30次;

-n 显示IP地址,不查主机名。当DNS不起作用时常用到这个参数;


-p port 探测包使用的基本UDP端口设置为port ,默认值是33434

-q n 在每次设置生存期时,把探测包的个数设置为值n,默认时为3;

-r 绕过正常的路由表,直接发送到网络相连的主机;

-w n 把对外发探测包的等待响应时间设置为n秒,默认值为3秒;

实例一: traceroute 用法简单、最常用的用法


就是后面直接接IP或hostname或域名;比如下面的示例;

[root@localhost ~]# traceroute linuxsir.org

traceroute to linuxsir.org (211.93.98.20), 30 hops max, 40 byte packets

1 sir01.localdomain (192.168.1.1) 0.151 ms 0.094 ms 0.146 ms

2 221.201.88.1 (221.201.88.1) 5.867 ms 7.588 ms 5.178 ms

3 218.25.158.149 (218.25.158.149) 6.546 ms 6.230 ms 8.297 ms

4 218.25.138.133 (218.25.138.133) 7.129 ms 7.644 ms 8.311 ms

……

注: 此例中,记录按序列号从1开始,每个纪录就是一跳 ,每跳表示一个网关,我们看到每行有三个时间,单位是 ms,其实就是-q的默认参数。探测数据包向每个网关发送三个数据包后,网关响应后返回的时间;如果您用 traceroute -q 4 linuxsir.org ,表示向每个网关发送4个数据包;


有时我们traceroute 一台主机时,会看到有一些行是以星号表示的。出现这样的情况,可能是防火墙封掉了ICMP的返回信息,所以我们得不到什么相关的数据包返回数据。

有时我们在某一网关处延时比较长,有可能是某台网关比较阻塞,也可能是物理设备本身的原因。当然如果某台DNS出现问题时,不能解析主机名、域名时,也会有延时长的现象;您可以加-n 参数来避免DNS解析,以IP格式输出数据;


如果在局域网中的不同网段之间,我们可以通过traceroute 来排查问题所在, 是主机的问题还是网关的问题。如果我们通过远程来访问某台服务器遇到问题时,我们用到traceroute 追踪数据包所经过的网关,提交IDC服务商,也有助于解决问题;但目前看来在国内解决这样的问题是比较困难的,就是我们发现问题所在,IDC服务商也不可能帮助我们解决。为什么呢?因为北方网通和南方电信各自为政。以前无论怎么说都是一张网,现在就是两张网,是通而不畅。咱们只能望网兴叹了;


实例二:一些参数的用法示例;

[root@localhost ~]# traceroute -m 10 linuxsir.org 把跳数设置为10次;

[root@localhost ~]# traceroute -n linuxsir.org 注:显示IP地址,不查主机名。

[root@localhost ~]# traceroute -p 6888 linuxsir.org 注:探测包使用的基本UDP端口设置6888

[root@localhost ~]# traceroute -q 4 linuxsir.org 注:把探测包的个数设置为值4;

[root@localhost ~]# traceroute -r linuxsir.org 注:绕过正常的路由表,直接发送到网络相连的主机;

[root@localhost ~]# traceroute -w 3 linuxsir.org 注:把对外发探测包的等待响应时间设置为5秒;