tracert

1.       开始——》运行——》输入:cmd——》输入:tracert  [url]www.163.com[/url]
2.       正常情况下应该显示类似如下:
tracert_第1张图片
 ( Tracert 每一跳同时发出3个TTL包 返回的三个时间都是你到达这个路由的时间,三个数字是一样的意思,表示PING值
图中共有五列数据:
第一列表示是去往目的地的第几跳(通俗说就是第几个)路由器。
第二列到第四列表示发出的三个ICMP包的往返时延。
第五列表示到达的路由器的IP地址或者是路由器的名字。
3.  原理解释: Traceroute 最简单的基本用法是: traceroute hostname
Traceroute程序的设计是利用ICMPIP headerTTLTime To Live)栏位(field)。首先,traceroute送出一个TTL1IP datagram(其实,每次送出的为340字节的包,包括源地址,目的地址和包发出的时间标签)到目的地,当路径上的第一个路由器(router)收到这个datagram时,它将TTL1。此时,TTL变为0了,所以该路由器会将此datagram丢掉,并送回一个「ICMP time exceeded」消息(包括发IP包的源地址,IP包的所有内容及路由器的IP地址),traceroute 收到这个消息后,便知道这个路由器存在于这个路径上,接着traceroute 再送出另一个TTLdatagram,发现第个路由器...... traceroute 每次将送出的datagramTTL 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到期消息的响应。然后,TracerouteTTL记数器加1,继续进行。
     这样我门就能清楚的看到 我们的数据包是怎么到达目的地的(途中经过了那些路由器)
Tracert 程序的主要功能也就是测试从本机到一个网址(或 IP 地址)途径的路由器有哪些,以供出现问题的时候找出问题是出再哪里。比如你不能打开 [url]www.163.com[/url] ,你可以 tracert  [url]www.163.com[/url]   看一下问题是处在哪一个路由器上。
tracert_第2张图片
包出去。


  在下例中,数据包必须通过两个路由器(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了,因为他已经知道了到达目的地的全部路由。
具体实现过程可以用下面两幅图来理解:
tracert_第3张图片

图2

tracert_第4张图片

图1



你可能感兴趣的:(tracert)