显示数据包到主机的路径。traceroute命令用于跟踪数据包在网络上传输时的整个路径。它发送的数据包默认大小为40字节。通过traceroute,我们可以知道信息从你的电脑经过什么路径到达互联网另一端的主机。当然,数据包每次从某个相同的起点(source)到某个相同的目的地(destination),所走的路径可能不同,但基本上大部分时间所走的路由是相同的。traceroute通过向目标设备发送小数据包直到它返回来测量需要多长时间。一条路径上的每个设备traceroute需要测试3次。输出包括每次测试的时间(毫秒)和设备名称(如果有)及其IP地址。Traceroute的实现方式有3种,分别是: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,直接将数据包发送到远端主机上的remote。-s<源地址>:设置本机发送数据包的IP地址;-t<服务类型>:设置检测数据包的TOS值;-v:详细显示命令的执行过程;-w:设置等待远程主机报告的时间;-x:启用或禁用数据包的正确性检查。命令参数host:指定目的主机的IP地址或主机名。简单使用>tracerouterumenz.comtraceroute到rumenz.com(203.195.152.245),最多64跳,52字节数据包1192.168.0.1(192.168.0.1)1.242ms0.949ms2.494ms2192.169.23.11.16310ms1.16313ms.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.276毫秒202.97.98.25(202.97.98.25)38.174毫秒202.97.17.1(202.97.17.1)28.942毫秒7*113.96.5.158(113.96.5.158)。199.106(14.18.199.106)22.518ms20.543ms22.583ms10**14.18.199.74(14.18.199.74)22.378ms11***12***13***14203.195.152.245(203.195.152.245)25.766ms21.599ms*记录按照序号从1开始,每条记录为一跳,每一跳代表一个网关。我们看到每行有3次,单位是ms,其实是-q的默认参数。探测数据包向每个网关发送三个数据包后,网关响应并返回的时间;如果使用traceroute-q4rumenz.com,则表示向每个网关发送4个数据包。有时当我们跟踪主机时,我们会看到一些线路用星号表示。出现这种情况,可能是防火墙屏蔽了ICMP返回信息,导致我们无法获取到任何相关的数据包返回数据。有时候我们在某个网关延迟比较长,可能是某个网关比较堵,也可能是物理设备本身的原因。当然,如果某个DNS无法解析主机名或域名,也会有很长的延迟;可以加-n参数来避免DNS解析,输出IP格式的数据。如果是在局域网内不同网段之间,我们可以使用traceroute来排查问题,不管是主机的问题还是网关的问题。如果我们在远程访问某台服务器时遇到问题,我们使用traceroute跟踪数据包经过的网关,提交给IDC服务商,也有助于解决问题;但是目前国内好像比较难解决这样的问题,即使我们找到了问题,IDC服务商也帮不了我们解决。设置跳数>traceroute-m10rumenz.comtraceroutetorumenz.com(203.195.152.245),10hopsmax,52bytepackets1192.168.0.1(192.168.0.1)1.829ms0.746ms1.684ms1616.1921.1(26.168.0.1)1.1)2.326MS3.365MS1.203MS3100.64.0.1(100.64.0.1)4.659MS5.613MS4.055MS4111.175.227.145(111.175.2227.145)MS4.180MS6202.97.98.29(202.97.98.29)21.216MS202.97.98.25(202.97.98.25)21.428MS*7***8***8***9*9*14.18.199.106(14.199.106(14.18.199.109.106)22.106)显示IP地址,不查询主机名>traceroute-nrumenz.comtraceroutetorumenz.com(203.195.152.245),64hopsmax,52bytepackets1192.168.0.12.484ms1.271ms0.813ms2.1912.163ms2.192.10181.075MS3100.64.0.12.914MS4.107MS4.372MS4111.175.227.1457.279MS7.915MS9.007MS5111.175.210.2213.7293.729MS4.100MS4.160MS44.160MS6202.97.29.4925.4925.4925.4925.4925.4925.4925.4925.4925.4925.4925.4925.4925.4925.172MMs202.97.34.6623.798ms202.97.29.5318.034ms7***8***9***10***11***12***13***14*203.195.152.24521.635ms22.201ms把探测包的个数设置为值4>traceroute-q4rumenz.comtraceroutetorumenz.com(203.195.152.245),64hopsmax,52bytepackets1192.168.0.1(192.168.0.1)2.265ms2.010ms0.6690ms2192.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.631MS6*202.97.29.57(202.97.29.57)*914.18.199.106(14.18.199.106)26.460毫秒20.790毫秒25.815毫秒*10**14.18.199.74(14.18.199.74)22.642毫秒*11****12****13****1442512.14(203.195.152.245)22.046毫秒22.201毫秒20。328ms24.846ms绕过正常路由表并直接发送到网络连接主机>traceroute-rrumenz.comtraceroutetorumenz.com(203.195.152.245),最大64跳,52字节数据包straceroute:sendto:网络无法访问1traceroute:写了rumenz.com52个字符,ret=-1*traceroute:sendto:Networkisunreachabletraceroute:wroterumenz.com52chars,ret=-1*traceroute:sendto:Networkisunreachabletraceroute:wroterumenz.com52chars,ret=-1将探测数据包的等待响应时间设置为3秒>traceroute-w3rumenz.comtraceroutetorumenz.com(203.195.152.245),最大64跳,52字节数据包1192.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.280MS44.280MS4111.175.2227.145(111.11.175.175.175.175.175.175.175.175.175.175.175.175.175.175.175.175.175.175.175.175.175.175.175.175.175.175.175.175.145).210.221(111.17.210.221)3.484毫秒5.052毫秒4.033毫秒6202.97.98.25(202.97.98.25)19.580毫秒202.97.17.1(202.97.17.1)21.139毫秒202.9667.347**113.96.5.82(113.96.5.82)26.111毫秒8***9*14.18.199.106(14.18.199.106)22.279毫秒*10***11***12***13***14*203.195。152.245(203.195.152.245)22.335ms21.387msTraceroute的工作原理UDP和ICMPTracerouteTraceroute的基本原理是发送TTL递增的数据包,获取路径中每一跳的信息。主机A对主机B做traceroute,主机A第一次会发送一个TTL=1的数据包,当数据包到达R1时,TTL会变为0(网络每跳一跳,TTL会减1),R1会将发送的TTL=0的数据包丢弃,并返回一个ICMPTimeExceeded给主机A。主机A发出第二个数据包,将TTL加1(TTL=2),TTL=数据包到达R2后为0,R2返回ICMPTimeExceeded给HostA。以此类推,直到TTL增加到合适的值,数据包才能顺利到达HostB,HostB才会返回FinalReplay给HostA、UDP和ICMPtraceroute的区别在于发出的数据包(上图中红色标记的数据包)和最后的finalreply。UDP发出一个UDP包,最后的回复是ICMPDestinationUnreachableICMP发出一个ICMPEchoRequest,最后的回复是ICMPEchoReplyTCPTracerouteTCPtraceroute也是用TTL检测网络路径但是它发出的是TCPSYN数据包,最大这样做的好处是穿透防火墙的机会更大,因为TCPSYN似乎是在尝试建立一个正常的TCP连接。关于Cisco的traceroute的更多详细信息,请参考Cisco在操作系统上使用traceroute命令(文档编号:22826)。原文链接:https://rumenz.com/rumenbiji/...微信公众号:入门