显示数据包到主机间的路径,traceroute命令用于追踪数据包在网络上的传输时的全部路径,它默认发送的数据包大小是40字节。 通过traceroute我们可以知道信息从你的计算机到互联网另一端的主机是走的什么路径。当然每次数据包由某一同样的出发点(source)到达某一同样的目的地(destination)走的路径可能会不一样,但基本上来说大部分时候所走的路由是相同的。 traceroute通过发送小的数据包到目的设备直到其返回,来测量其需要多长时间。一条路径上的每个设备traceroute要测3次。输出结果中包括每次测试的时间(ms)和设备的名称(如有的话)及其ip地址。 Traceroute的实现一共有三种方法,分别是:TCPtraceroute(使用tracetcp程序可以实现)UDPtraceroute(Cisco和Linux默认情况下使用)ICMPtraceroute(MSWindows默认情况下使用)命令格式 traceroute(选项)(参数)命令选项d:使用Socket层级的排错功能;f存活数值:设置第一个检测数据包的存活数值TTL的大小;F:设置勿离断位;g网关:设置来源路由网关,最多可设置8个;i网络界面:使用指定的网络界面送出数据包;I:使用ICMP回应取代UDP资料信息;m存活数值:设置检测数据包的最大存活数值TTL的大小;n:直接使用IP地址而非主机名称;p通信端口:设置UDP传输协议的通信端口;r:忽略普通的RoutingTable,直接将数据包送到远端主机上。s来源地址:设置本地主机送出数据包的IP地址;t服务类型:设置检测数据包的TOS数值;v:详细显示指令的执行过程;w超时秒数:设置等待远端主机回报的时间;x:开启或关闭数据包的正确性检验。命令参数 主机:指定目的主机IP地址或主机名。简单用法tracerouterumenz。comtraceroutetorumenz。com(203。195。152。245),64hopsmax,52bytepackets1192。168。0。1(192。168。0。1)1。242ms0。949ms2。494ms2192。168。1。1(192。168。1。1)1。337ms1。101ms0。953ms3100。64。0。1(100。64。0。1)4。663ms28。187ms3。346ms4111。175。227。145(111。175。227。145)7。321ms12。203ms10。503ms5111。175。210。221(111。175。210。221)4。810ms7。400ms3。673ms6202。97。17。5(202。97。17。5)20。276ms202。97。98。25(202。97。98。25)38。174ms202。97。17。1(202。97。17。1)28。942ms7113。96。5。158(113。96。5。158)26。277ms8914。18。199。106(14。18。199。106)22。518ms20。543ms22。583ms1014。18。199。74(14。18。199。74)22。378ms11121314203。195。152。245(203。195。152。245)25。766ms21。599ms 记录按序列号从1开始,每个记录就是一跳,每跳表示一个网关,我们看到每行有三个时间,单位是ms,其实就是q的默认参数。探测数据包向每个网关发送三个数据包后,网关响应后返回的时间;如果用tracerouteq4rumenz。com,表示向每个网关发送4个数据包。 有时我们traceroute一台主机时,会看到有一些行是以星号表示的。出现这样的情况,可能是防火墙封掉了ICMP的返回信息,所以我们得不到什么相关的数据包返回数据。 有时我们在某一网关处延时比较长,有可能是某台网关比较阻塞,也可能是物理设备本身的原因。当然如果某台DNS出现问题时,不能解析主机名、域名时,也会有延时长的现象;您可以加n参数来避免DNS解析,以IP格式输出数据。 如果在局域网中的不同网段之间,我们可以通过traceroute来排查问题所在,是主机的问题还是网关的问题。如果我们通过远程来访问某台服务器遇到问题时,我们用到traceroute追踪数据包所经过的网关,提交IDC服务商,也有助于解决问题;但目前看来在国内解决这样的问题是比较困难的,就是我们发现问题所在,IDC服务商也不可能帮助我们解决。设置跳数traceroutem10rumenz。comtraceroutetorumenz。com(203。195。152。245),10hopsmax,52bytepackets1192。168。0。1(192。168。0。1)1。829ms0。746ms1。684ms2192。168。1。1(192。168。1。1)2。326ms3。365ms1。203ms3100。64。0。1(100。64。0。1)4。659ms5。613ms4。055ms4111。175。227。145(111。175。227。145)12。399ms7。991ms8。013ms5111。175。210。221(111。175。210。221)6。997ms10。958ms4。180ms6202。97。98。29(202。97。98。29)21。216ms202。97。98。25(202。97。98。25)21。428ms78914。18。199。106(14。18。199。106)22。443ms20。399ms10显示IP地址,不查主机名traceroutenrumenz。comtraceroutetorumenz。com(203。195。152。245),64hopsmax,52bytepackets1192。168。0。12。484ms1。271ms0。813ms2192。168。1。11。320ms1。103ms1。075ms3100。64。0。12。914ms4。107ms4。372ms4111。175。227。1457。279ms7。915ms9。007ms5111。175。210。2213。729ms4。100ms4。160ms6202。97。29。4925。172ms202。97。34。6623。798ms202。97。29。5318。034ms7891011121314203。195。152。24521。635ms22。201ms把探测包的个数设置为值4tracerouteq4rumenz。comtraceroutetorumenz。com(203。195。152。245),64hopsmax,52bytepackets1192。168。0。1(192。168。0。1)2。265ms2。010ms0。669ms1。103ms2192。168。1。1(192。168。1。1)1。159ms1。207ms1。082ms1。181ms3100。64。0。1(100。64。0。1)6。105ms4。068ms2。737ms3。858ms4111。175。227。145(111。175。227。145)12。785ms11。772ms11。710ms7。463ms5111。175。210。221(111。175。210。221)11。646ms5。033ms4。373ms5。631ms6202。97。29。57(202。97。29。57)21。332ms202。97。17。5(202。97。17。5)26。080ms78914。18。199。106(14。18。199。106)26。460ms20。790ms25。815ms1014。18。199。74(14。18。199。74)22。642ms11121314203。195。152。245(203。195。152。245)22。046ms22。201ms20。328ms24。846ms绕过正常的路由表,直接发送到网络相连的主机tracerouterrumenz。comtraceroutetorumenz。com(203。195。152。245),64hopsmax,52bytepacketstraceroute:sendto:Networkisunreachable1traceroute:wroterumenz。com52chars,ret1traceroute:sendto:Networkisunreachabletraceroute:wroterumenz。com52chars,ret1traceroute:sendto:Networkisunreachabletraceroute:wroterumenz。com52chars,ret1探测包的等待响应时间设置为3秒traceroutew3rumenz。comtraceroutetorumenz。com(203。195。152。245),64hopsmax,52bytepackets1192。168。0。1(192。168。0。1)2。835ms0。894ms0。967ms2192。168。1。1(192。168。1。1)1。289ms1。174ms1。091ms3100。64。0。1(100。64。0。1)3。327ms2。985ms4。280ms4111。175。227。145(111。175。227。145)13。337ms12。301ms9。081ms5111。175。210。221(111。175。210。221)3。484ms5。052ms4。033ms6202。97。98。25(202。97。98。25)19。580ms202。97。17。1(202。97。17。1)21。139ms202。97。34。66(202。97。34。66)21。232ms7113。96。5。82(113。96。5。82)26。111ms8914。18。199。106(14。18。199。106)22。279ms1011121314203。195。152。245(203。195。152。245)22。335ms21。387msTraceroute的工作原理UDP和ICMPTraceroute Traceroute的基本原理是向外发送带有逐次递增TTL的数据包从而获取的路径中每一跳的信息。 HostA向HostB做traceroute,HostA第一次会发出一个TTL1的数据包,当该数据包到达R1时,TTL会变为0(网络上每经过一跳TTL会减去1),R1会将TTL0的数据包丢弃并返回一个ICMPTimeExceeded给HostA。HostA发出第二个数据包并将TTL增加1(TTL2),该数据包到达R2后TTL0,R2向HostA返回ICMPTimeExceeded。依此类推,直到TTL增加到一个合适的值让数据包顺利到达HostB,HostB会返回一个FinalReplay给HostA。 UDP和ICMPtraceroute的区别就在于向外发送的数据包(上图中红色标明的packet)和最后的finalreply。UDP向外发送的是一个UDP数据包,finalreply是ICMPDestinationUnreachableICMP向外发送的是一个ICMPEchoRequest,finalreply是ICMPEchoReplyTCPTraceroute TCPtraceroute同样利用了TTL来探测网络路径但是它向外发送的是TCPSYN数据包,这样做最大的好处就是穿透防火墙的几率更大因为TCPSYN看起来是试图建立一个正常的TCP连接。 关于Cisco的traceroute更详细的资料可以参考CiscoUsingthetracerouteCommandonOperatingSystems(DocumentID:22826)。