1. 开始——》运行——》输入:cmd——》输入:tracert [url]www.163.com[/url]
2. 正常情况下应该显示类似如下:
(
Tracert 每一跳同时发出3个TTL包 返回的三个时间都是你到达这个路由的时间,三个数字是一样的意思,表示PING值)
图中共有五列数据:
第一列表示是去往目的地的第几跳(通俗说就是第几个)路由器。
第二列到第四列表示发出的三个ICMP包的往返时延。
第五列表示到达的路由器的IP地址或者是路由器的名字。
3.
原理解释:
Traceroute
最简单的基本用法是:
traceroute hostname
Traceroute程序的设计是利用ICMP及IP header的TTL(Time To Live)栏位(field)。首先,traceroute送出一个TTL是1的IP datagram(其实,每次送出的为3个40字节的包,包括源地址,目的地址和包发出的时间标签)到目的地,当路径上的第一个路由器(router)收到这个datagram时,它将TTL减1。此时,TTL变为0了,所以该路由器会将此datagram丢掉,并送回一个「ICMP time exceeded」消息(包括发IP包的源地址,IP包的所有内容及路由器的IP地址),traceroute 收到这个消息后,便知道这个路由器存在于这个路径上,接着traceroute 再送出另一个TTL是2 的datagram,发现第2 个路由器...... traceroute 每次将送出的datagram的TTL 加1来发现另一个路由器,这个重复的动作一直持续到某个datagram 抵达目的地。当datagram到达目的地后,该主机并不会送回ICMP time exceeded消息,因为它已是目的地了,那么traceroute如何得知目的地到达了呢?
Traceroute在送出UDP datagrams到目的地时,它所选择送达的port number 是一个一般应用程序都不会用的号码(30000 以上),所以当此UDP datagram 到达目的地后该主机会送回一个「ICMP port unreachable」的消息,而当traceroute 收到这个消息时,便知道目的地已经到达了。所以traceroute 在Server端也是没有所谓的Daemon 程式。
Traceroute提取发 ICMP TTL到期消息设备的IP地址并作域名解析。每次 ,Traceroute都打印出一系列数据,包括所经过的路由设备的域名及 IP地址,三个包每次来回所花时间。
Traceroute 有一个固定的时间等待响应(ICMP TTL到期消息)。如果这个时间过了,它将打印出一系列的*号表明:在这个路径上,这个设备不能在给定的时间内发出ICMP TTL到期消息的响应。然后,Traceroute给TTL记数器加1,继续进行。
这样我门就能清楚的看到 我们的数据包是怎么到达目的地的(途中经过了那些路由器)
Tracert
程序的主要功能也就是测试从本机到一个网址(或
IP
地址)途径的路由器有哪些,以供出现问题的时候找出问题是出再哪里。比如你不能打开
[url]www.163.com[/url]
,你可以
tracert
[url]www.163.com[/url]
看一下问题是处在哪一个路由器上。
在下例中,数据包必须通过两个路由器(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 命令确定数据包在网络上的停止位置。下例中,默认网关确定 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 实用程序对于解决大网络问题非常有用,此时可以采取几条路径到达同一个点。
基于UDP协议的路由探测
tracert是Windows下常用的命令行工具,UNIX下与之对应的是traceroute。若想知道自己的电脑到www.aorb.org 经过了多少个 路由器,可在命令行下输入tracert www.aorb.org进行探测,返回结果也许会与ping -R相同,但它是以另一种方式实现的。这种方式并没有像Record route options探测技术中使用IP协议包的Options字段,而是利用了IP协议包中的TTL字段。
基本思路是这样的:www.aorb.org这台 服务器即卖茄子(提供HTTP服务),也卖黄瓜(提供FTP服务),但不卖土豆(未监听的UDP端口)。有位买家,为了知道一封信到达蔬菜供应商www.aorb.org中间需要经过几个邮局( 路由器),于是写信给www.aorb.org询问土豆的价格。
第一步,买家在信封的TTL位置写上数字1,当这封信到达与自己相邻的第一个邮局时,邮局的人把TTL值减1,于是TTL为0,邮局章程规定,把TTL值为0的信丢到垃圾桶里,然后给买家发一封名曰超时的信,信上写了丢信邮局的名字,以告诉买家信被谁丢掉了。
第二步,买家在信封的TTL位置写上数字2,当这封信到达与自己相邻的第一个邮局时,邮局的人把TTL值减1,现在TTL值为1,邮局章程规定, TTL值不为0的 数据包需要继续转发给下一个邮局,于是这封信又被转发到了下一个邮局。当下一个邮局收到这封信时,邮局的人把TTL值减1,于是TTL为 0,邮局章程规定,把TTL值为0的信丢到垃圾桶里,然后给买家发一封名曰超时的信,信上写了丢信邮局的名字,以告诉买家信被谁丢掉了。
通过第一步,买家知道了第一个中转路由器。通过第二步,买家知道了第二个中转 路由器。那么买家只需要不断的把TTL值加1,便可根据如上步骤探测出中间经过了哪些 路由器。
第三步,我们假设中间只经过两个邮局信便到达目的地了。接着第二步,买家选在把TTL值设置为3,当这封信到达与自己相邻的第一个邮局时,邮局的人把TTL值减1,现在TTL值为2,邮局章程规定,TTL值不为0的数据报需要继续转发给下一个邮局,于是这封信又被转发到了下一个邮局。当下一个邮局收到这封信时,邮局的人把TTL值减1,于是TTL为1,邮局章程规定,TTL值不为0的数据报需要继续转发给下一个邮局,于是这封信又被转发到了下一个邮局,但下一个邮局已经就是最终目的地www.aorb.org了,尽管www.aorb.org把TTL减1的结果为0,但却不会丢弃它,因为目的地就是 www.aorb.org呀!于是www.aorb.org把这个IP层邮递员送来的信交付给负责卖土豆人,但我们开始说了,www.aorb.org并不卖土豆,于是就回送一个名曰终点不可达(ICMP类型为3,代码为3)的信给买家。
第四步,当买家收到类型为终点不可达的信时,就不再把那封问土豆价格的信上的TTL加1了,因为他已经知道了到达目的地的全部路由。
具体实现过程可以用下面两幅图来理解:
图2
图1