tracert的工作原理

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了tracert的工作原理相关的知识,希望对你有一定的参考价值。

Tracert 工作原理
通过向目标发送不同 IP 生存时间 (TTL) 值的“Internet 控制消息协议 (ICMP)”回
应数据包,Tracert 诊断程序确定到目标所采取的路由。要求路径上的每个路由器在
转发数据包之前至少将数据包上的 TTL 递减 1。数据包上的 TTL 减为 0 时,路由器
应该将“ICMP 已超时”的消息发回源系统。

Tracert 先发送 TTL 为 1 的回应数据包,并在随后的每次发送过程将 TTL 递增 1,
直到目标响应或 TTL 达到最大值,从而确定路由。通过检查中间路由器发回的“ICM
P 已超时”的消息确定路由。某些路由器不经询问直接丢弃 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 172.16.0.99 -d
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 解决问题
可以使用 tracert 命令确定数据包在网络上的停止位置。下例中,默认网关确定 19
2.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 命令跟踪路径。

使用 pathping 测试路由器
pathping 命令是一个路由跟踪工具,它将 ping 和 tracert 命令的功能和这两个工
具所不提供的其他信息结合起来。pathping 命令在一段时间内将数据包发送到到达最
终目标的路径上的每个路由器,然后基于数据包的计算机结果从每个跃点返回。由于
命令显示数据包在任何给定路由器或链接上丢失的程度,因此可以很容易地确定可能
导致网络问题的路由器或链接。某些选项是可用的,如下表所示。

选项 名称 功能
-n Hostnames 不将地址解析成主机名。
-h Maximum hops 搜索目标的最大跃点数。
-g Host-list 沿着路由列表释放源路由。
-p Period 在 ping 之间等待的毫秒数。
-q Num_queries 每个跃点的查询数。
-w Time-out 为每次回复所等待的毫秒数。
-T Layer 2 tag 将第 2 层优先级标记(例如,对于 IEEE 802.1p)连接到数据包并
将它发送到路径中的每个网络设备。这有助于标识没有正确配置第 2 层优先级的网络
设备。-T 开关用于测试服务质量 (QoS) 连通性。
-R RSVP test Che检查以确定路径中的每个路由器是否支持“资源保留协议 (RSVP)”
,此协议允许主机为数据流保留一定量的带宽。 -R 开关用于测试服务质量 (QoS) 连
通性。

默认的跃点数是 30,并且超时前的默认等待时间是 3 秒。默认时间是 250 毫秒,并
且沿着路径对每个路由器进行查询的次数是 100。

以下是典型的 pathping 报告。跃点列表后所编辑的统计信息表明在每个独立路由器
上数据包丢失的情况。

D:\\>pathping -n msw

Tracing route to msw [7.54.1.196]
over a maximum of 30 hops:
0 172.16.87.35
1 172.16.87.218
2 192.68.52.1
3 192.68.80.1
4 7.54.247.14
5 7.54.1.196

Computing statistics for 125 seconds...
Source to Here This Node/Link
Hop RTT Lost/Sent = Pct Lost/Sent = Pct Address
0 172.16.87.35
0/ 100 = 0% │
1 41ms 0/ 100 = 0% 0/ 100 = 0% 172.16.87.218
13/ 100 = 13% │
2 22ms 16/ 100 = 16% 3/ 100 = 3% 192.68.52.1
0/ 100 = 0% │
3 24ms 13/ 100 = 13% 0/ 100 = 0% 192.68.80.1
0/ 100 = 0% │
4 21ms 14/ 100 = 14% 1/ 100 = 1% 10.54.247.14
0/ 100 = 0% │
5 24ms 13/ 100 = 13% 0/ 100 = 0% 10.54.1.196

Trace complete.

当运行 pathping 时,在测试问题时首先查看路由的结果。此路径与 tracert 命令所
显示的路径相同。然后 pathping 命令对下一个 125 毫秒显示忙消息(此时间根据跃
点计数变化)。在此期间,pathping 从以前列出的所有路由器和它们之间的链接之间
收集信息。在此期间结束时,它显示测试结果。

最右边的两栏 This Node/Link Lost/Sent=Pct 和 Address 包含的信息最有用。172
.16.87.218(跃点 1)和 192.68.52.1(跃点 2)丢失 13% 的数据包。 所有其他链
接工作正常。在跃点 2 和 4 中的路由器也丢失寻址到它们的数据包(如 This Node
/Link 栏中所示),但是该丢失不会影响转发的路径。

对链接显示的丢失率(在最右边的栏中标记为 │)表明沿路径转发丢失的数据包。该
丢失表明链接阻塞。对路由器显示的丢失率(通过最右边栏中的 IP 地址显示)表明
这些路由器的 CPU 可能超负荷运行。这些阻塞的路由器可能也是端对端问题的一个因
素,尤其是在软件路由器转发数据包时。
参考技术A 楼上写的太繁琐,这个无非就是路由追踪命令:

Tracert的使用很简单,只需要在tracert后面跟一个IP地址或URL,Tracert会进行相应的域名转换的。Tracert一般用来检测故障的位置,你可以用tracert IP在哪个环节上出了问题,虽然还是没有确定是什么问题,但它已经告诉了我们问题所在的地方,你也就可以很有把握的告诉别人——某某出了问题。
tracert [-d] [-h maximum_hops] [-j computer-list] [-w timeout]target_name
参数 /d 指定不将地址解析为计算机名。
-h maximum_hops 指定搜索目标的最大跃点数。
-j computer-list 指定沿 computer-list 的稀疏源路由。
-w timeout 每次应答等待 timeout 指定的微秒数。
target_name 目标计算机的名称。 NET命令的基本用法
参考技术B 当数据报从你的计算机经过多个网关传送到目的地时,Tracert命令可以用来跟踪数据报使用的路由(路径)。该实用程序跟踪的路径是源计算机到目的地的一条路径,不能保证或认为数据报总遵循这个路径。如果你的配置使用DNS,那么你常常会从所产生的应答中得到城市、地址和常见通信公司的名字。Tracert是一个运行得比较慢的命令(如果你指定的目标地址比较远),每个路由器你大约需要给它15秒钟。
Tracert的使用很简单,只需要在tracert后面跟一个IP地址或URL,Tracert会进行相应的域名转换的。Tracert一般用来检测故障的位置,你可以用tracert IP在哪个环节上出了问题,虽然还是没有确定是什么问题,但它已经告诉了我们问题所在的地方,你也就可以很有把握的告诉别人——某某出了问题。

该诊断实用程序将包含不同生存时间 (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
参数 /d 指定不将地址解析为计算机名。
-h maximum_hops 指定搜索目标的最大跃点数。
-j computer-list 指定沿 computer-list 的稀疏源路由。
-w timeout 每次应答等待 timeout 指定的微秒数。
target_name 目标计算机的名称。 NET命令的基本用法

Tracert命令简介

tracert 命令概述:

  Tracert是路由跟踪程序,用于确定 IP 数据报访问目标所经过的路径。Tracert 命令用 IP 生存时间 (TTL) 字段和 ICMP 错误消息来确定从一个主机到网络上其他主机的路由。 在工作环境中有多条链路出口时,可以通过该命令查询数据是经过的哪一条链路出口。

  Tracert一般用来检测故障的位置,我们可以使用用tracert IP命令确定数据包在网络上的停止位置,来判断在哪个环节上出了问题,虽然还是没有确定是什么问题,但它已经告诉了我们问题所在的地方,方便检测网络中存在的问题。

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。

tracert 命令参数以及描述:

  命令格式如下:

  tracert 目标主机地址(IP或者域名)[参数]

    • -d:不将地址解析成主机名,能够更快地显示路由器路径;
    • -h:指定跟踪的跃点数;
    • -w:指定等待每个应答的时间(以毫秒为单位)。默认值为3000毫秒(3秒)

下图显示了一些有用的Ping命令选项

技术分享图片

测试示例:

技术分享图片

出现提示消息如下:

  • Destination net unreachable(目标网络不可到达):响应表明没有到目标位置的路由。需要检查在“Destination net unreachable(目标网络不可到达)”消息的“Reply from(回答来自)”地址中列出的路由器的路由表。
  • Request timed out(请求超时):响应表明在默认的时间期间(1 秒钟)内没有对 ping 作出响应。对于“请求超时”可以检查以下原因:
    • 目标主机关闭,或者网络上根本没有这个地址;物理验证主机正在运行或通过其他协议检查连通性。
    • 路由器问题,对方与自己不在同一个网段内,通过路由无法找到对方;要检查在源和目标之间的路径中的路由器,请使用 tracert 命令。
    • 对方确实存在,但设置了ICMP数据包过滤(比如防火墙设置)。
    • 响应的等待时间多于一秒。使用 ping 命令上的 -w 选项增加超时。例如,要允许在 5 秒钟内响应,请使用 ping -w 5000
  • Bad IP address:没有连接到DNS服务器,所以无法解析这个IP地址,也可能是IP地址不存在。
  • Source quench received:表示对方或中途的服务器繁忙无法回应。
  • Unknown host:远程主机的名字不能被域名服务器(DNS)转换成IP地址。故障原因可能是域名服务器有故障,或者其名字不正确,或者网络管理员的系统与远程主机之间的通信线路有故障。
  • No answer:本地系统有一条通向中心主机的路由,但却接收不到它发给该中心主机的任何信息。故障原因可能是下列之一:中心主机没有工作;本地或中心主机网络配置不正确;本地或中心的路由器没有工作;通信线路有故障;中心主机存在路由选择问题。
  • no rout to host:网卡工作不正常。
  • transmit failed,error code:10043网卡驱动不正常。
  • unknown host name:DNS配置不正确。

ping 示例:

  示例:有A、B、C、D四台机子(其中A、B的IP分别为192.168.0.4-192.168.0.5,子网掩码均为255.255.255.0;C、D的IP分别为192.168.1.3-192.168.1.4,子网掩码均为255.255.255.0),一台路由RA连接以上两个子网。

技术分享图片

  1)、在同一网段

  在主机A上运行“Ping 192.168.0.5”后,都发生了些什么呢? 首先,Ping命令会构建一个固定格式的ICMP请求数据包,然后由ICMP协议将这个数据包连同地址“192.168.0.5”一起交给IP层协议(和 ICMP一样,实际上是一组后台运行的进程),IP层协议将以地址“192.168.0.5”作为目的地址,本机IP地址作为源地址,加上一些其他的控制信息,构建一个IP数据包,并想办法得到192.168.0.5的MAC地址(物理地址,这是数据链路层协议构建数据链路层的传输单元——帧所必需的),以便交给数据链路层构建一个数据帧。关键就在这里,IP层协议通过对比机器B的IP地址、自己的IP地址和自己的子网掩码,发现它跟自己属同一网络,就直接在本网络内查找这台机器的MAC。如果以前两机有过通信,在A机的ARP缓存表应该有B机IP与其MAC的映射关系;如果没有,就发一个ARP请求广播,得到B机的MAC, 一并交给数据链路层。后者构建一个数据帧,目的地址是IP层传过来的物理地址,源地址则是本机的物理地址,还要附加上一些控制信息,依据以太网的介质访问规则,将它们传送出去。
  主机B收到这个数据帧后,先检查它的目的地址,并和本机的物理地址对比,如符合,则接收;否则丢弃。接收后检查该数据帧,将IP数据包从帧中提取出来,交给本机的IP层协议。同样,IP层检查后,将有用的信息提取后交给ICMP协议,后者处理后,马上构建一个ICMP应答包,发送给主机A,其过程和主机A发送ICMP请求包到主机B一模一样。

  2)、在不同网段

  在主机A上运行“Ping 192.168.1.4”后,开始跟上面一样,到了怎样得到MAC地址时,IP协议通过计算发现D机与自己不在同一网段内,就直接将交由路由处理,也就是将路由的MAC取过来,至于怎样得到路由的MAC,跟上面一样,先在ARP缓存表找,找不到就广播吧。路由得到这个数据帧后,再跟主机D进行联系,如果找不到,就向主机A返回一个超时的信息。

 


以上是关于tracert的工作原理的主要内容,如果未能解决你的问题,请参考以下文章

Linux基础命令和原理总结

jmap命令的实现原理解析

计算机网络

traceroute命令初探

traceroute命令初探

请简述Hibernate工作原理?