网络测试基础:Traceroute使用详解
2004-01-27      
打印自: 安恒公司
地址: HTTP://t568a.anheng.com.cn/news/article.php?articleid=173
网络测试基础:Traceroute使用详解

Internet,即国际互联网,是目前世界上最大的计算机网络,更确切地说是网络的网络。它由遍布全球的几万局域网和数百万台计算机组成,并通过用于异构网络的TCP/IP协议进行网间通信。互联网中,信息的传送是通过网中许多段的传输介质和设备(路由器,交换机,服务器,网关等等)从一端到达另一端。每一个连接在Internet上的设备,如主机、路由器、接入服务器等一般情况下都会有一个独立的IP地址。通过Traceroute我们可以知道信息从你的计算机到互联网另一端的主机是走的什么路径。当然每次数据包由某一同样的出发点(source)到达某一同样的目的地(destination)走的路径可能会不一样,但基本上来说大部分时候所走的路由是相同的。UNIX系统中,我们称之为Traceroute,MS Windows中为Tracert。 Traceroute通过发送小的数据包到目的设备直到其返回,来测量其需要多长时间。一条路径上的每个设备Traceroute要测3次。输出结果中包括每次测试的时间(ms)和设备的名称(如有的话)及其IP地址。
在大多数情况下,作为网络工程技术人员或者系统管理员会在UNIX主机系统下,直接执行命令行:
Traceroute hostname

而在Windows系统下是执行Tracert的命令:
Tracerert hostname

比如在北京地区使用windows NT 主机(已经与北京163建立了点对点的连接后)
使用NT系统中的Tracert命令:(用户可用:开始->运行,输入"command" 调出command窗口使用此命令)
C:\>tracert www.yahoo.com
Tracing route to www.yahoo.com [204.71.200.75]
over a maximum of 30 hops:

1 161 ms 150 ms 160 ms 202.99.38.67
2 151 ms 160 ms 160 ms 202.99.38.65
3 151 ms 160 ms 150 ms 202.97.16.170
4 151 ms 150 ms 150 ms 202.97.17.90
5 151 ms 150 ms 150 ms 202.97.10.5
6 151 ms 150 ms 150 ms 202.97.9.9
7 761 ms 761 ms 752 ms border7-serial3-0-0.Sacramento.cw.net [204.70.122.69]
8 751 ms 751 ms * core2-fddi-0.Sacramento.cw.net [204.70.164.49]
9 762 ms 771 ms 751 ms border8-fddi-0.Sacramento.cw.net [204.70.164.67]
10 721 ms * 741 ms globalcenter.Sacramento.cw.net [204.70.123.6]
11 * 761 ms 751 ms pos4-2-155M.cr2.SNV.globalcenter.net [206.132.150.237]
12 771 ms * 771 ms pos1-0-2488M.hr8.SNV.globalcenter.net [206.132.254.41]
13 731 ms 741 ms 751 ms bas1r-ge3-0-hr8.snv.yahoo.com [208.178.103.62]
14 781 ms 771 ms 781 ms www10.yahoo.com [204.71.200.75]

Trace complete.

参数说明:
tracert [-d] [-h maximum_hops] [-j computer-list] [-w timeout] target_name
该诊断实用程序通过向目的地发送具有不同生存时间 (TL) 的 Internet 控制信息协议 (CMP) 回应报文,以确定至目的地的路由。路径上的每个路由器都要在转发该 ICMP 回应报文之前将其 TTL 值至少减 1,因此 TTL 是有效的跳转计数。当报文的 TTL 值减少到 0 时,路由器向源系统发回 ICMP 超时信息。通过发送 TTL 为 1 的第一个回应报文并且在随后的发送中每次将 TTL 值加 1,直到目标响应或达到最大 TTL 值,Tracert 可以确定路由。通过检查中间路由器发发回的 ICMP 超时 (ime Exceeded) 信息,可以确定路由器。注意,有些路由器“安静”地丢弃生存时间 (TLS) 过期的报文并且对 tracert 无效。
参数:

-d
指定不对计算机名解析地址。
-h maximum_hops
指定查找目标的跳转的最大数目。
-jcomputer-list
指定在 computer-list 中松散源路由。
-w timeout
等待由 timeout 对每个应答指定的毫秒数。
target_name
目标计算机的名称。


二、什么是Traceroute网关—— Traceroute Gateway?
一般使用Traceroute(或者是Tracert)是基于一台主机的,但是通常您只能知道以手边的主机为源地址到互联网络上任意一台在线的主机的路由连接质量以及数据传输效率的情况,而使用基于WEB的方式,只要一台主机安装了特定的CGI程序,用户就可以通过这台主机运行相关的程序,执行Traceroute的功能。这台主机我们把它叫做Traceroute网关。Traceroute网关可以帮助用户了解网络的物理与逻辑连接的拓扑情况以及数据传输的效率。如果这种网关足够多,我们就可以方便地了解到各主机之间连接的情况了。


三、为什么要使用Traceroute?

  1. 几乎每一个网上人(尤其是Webmaster)对他们的计算机(或其它设备)与Internet的连接,路由(径),连通时间,速度等都很关心。使用由ChianNetMap组织起来的各地区Webmaster提供的Traceroute网关的服务,将给你一个满意的答案。从你的计算机到任何别的地方,ChinaNetMap(Traceroute)都能提供其间的每个设备(IP地址)及其连通时间。它可以让你画出通过网络的路径。
  2. 许多公司和单位都设有或正在设立自己的服务器-尤其是Web服务器。一旦有自己的Web服务器,随着网民数量的日益增加(包括潜在的,没法统计的网民),你一定很想知道是否他们都能与你连接。你的ISP如何与一个或多个NAP连接,以及他们的连接效率会直接影响到你的连接质量.
  3. 在选择ISP,骨干网连接,你站点的主机时,大多数有见识的网民喜欢检查该Site的连接性能及其它是怎样精确的与谁连,连到哪儿。ChinaNetMap(Traceroute)将给你一个完美的答案。


四、Traceroute的功能介绍:
Traceroute最早是由Van Jacobson在1988写出的小程序。当时主要是解决他自己碰到的一些网络的问题。Traceroute是一个正确理解IP网络并了解路由原理的重要工具。他们对负责网络工程技术与系统管理的Webmaster是一个使用方便的程序。
对ISP而言,设立Traceroute网关,将使网络服务提供商帮助用户建立并维持对服务商服务质量的信心。服务质量高的ISP可以通过设立Traceroute网关,使用户了解其与网络连接以及数据传输的效率。当然,基础设施差,服务质量低的ISP是比较害怕提供这种服务。因为,这样用户可以使用这一工具了解服务商目前的网络连接情况。
在一台主机安装了相关的Traceroute的CGI程序后,您可以输入相应的目的主机的IP地址或者名字,就可以得到相关的数据:


五、Traceroute的命令参数:
Traceroute的用法为: Traceroute [options] <IP-address or domain-name> [data size]
[options]的内容有:

[-n]:显示的地址是用数字表示而不是符号
[-v]:长输出
[-p]:UDP端口设置(缺省为33434)
[-q]:设置TTL测试数目(缺省为3)
[-t]:设置测包的服务类型
[data size]:每次测试包的数据字节长度(缺省为38)


六、Traceroute的工作原理:
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 face="宋体" 有一个固定的时间等待响应(ICMP TTL到期消息)。如果这个时间过了,它将打印出一系列的*号表明:在这个路径上,这个设备不能在给定的时间内发出ICMP TTL到期消息的响应。然后,Traceroute给TTL记数器加1,继续进行。

 
 

责任编辑: admin