每天一个linux命令(55):traceroute命令
通过traceroute我们可以知道信息从你的计算机到互联网另一端的主机是走的什么路径。当然每次数据包由某一同样的出发点(source)到达某一同样的目的地(destination)走的路径可能会不一样,但基本上来说大部分时候所走的路由是相同的。linux系统中,我们称之为traceroute,在MSWindows中为tracert。traceroute通过发送小的数据包到目的设备直到其返回,来测量其需要多长时间。一条路径上的每个设备traceroute要测3次。输出结果中包括每次测试的时间(ms)和设备的名称(如有的话)及其IP地址。
在大多数情况下,我们会在linux主机系统下,直接执行命令行:
traceroutehostname
而在Windows系统下是执行tracert的命令:
tracerthostname
1.命令格式:
traceroute[参数][主机]
#p#分页标题#e#
2.命令功能:
traceroute指令让你追踪网络数据包的路由途径,预设数据包大小是40Bytes,用户可另行设置。
具体参数格式:traceroute[-dFlnrvx][-f<存活数值>][-g<网关>...][-i<网络界面>][-m<存活数值>][-p<通信端口>][-s<来源地址>][-t<服务类型>][-w<超时秒数>][主机名称或IP地址][数据包大小]
3.命令参数:
-d使用Socket层级的排错功能。
-f设置第一个检测数据包的存活数值TTL的大小。
-F设置勿离断位。
-g设置来源路由网关,最多可设置8个。
-i使用指定的网络界面送出数据包。
-I使用ICMP回应取代UDP资料信息。
-m设置检测数据包的最大存活数值TTL的大小。
-n直接使用IP地址而非主机名称。
-p设置UDP传输协议的通信端口。
-r忽略普通的RoutingTable,直接将数据包送到远端主机上。#p#分页标题#e#
-s设置本地主机送出数据包的IP地址。
-t设置检测数据包的TOS数值。
-v详细显示指令的执行过程。
-w设置等待远端主机回报的时间。
-x开启或关闭数据包的正确性检验。
4.使用实例:
实例1:traceroute用法简单、最常用的用法
命令:
traceroutewww.baidu.com
输出:
复制代码
[root@localhost~]#traceroutewww.baidu.com
traceroutetowww.baidu.com(61.135.169.125),30hopsmax,40bytepackets
1192.168.74.2(192.168.74.2)2.606ms2.771ms2.950ms
2211.151.56.57(211.151.56.57)0.596ms0.598ms0.591ms#p#分页标题#e#
3211.151.227.206(211.151.227.206)0.546ms0.544ms0.538ms
4210.77.139.145(210.77.139.145)0.710ms0.748ms0.801ms
5202.106.42.101(202.106.42.101)6.759ms6.945ms7.107ms
661.148.154.97(61.148.154.97)718.908ms*bt-228-025.bta.net.cn(202.106.228.25)5.177ms
7124.65.58.213(124.65.58.213)4.343ms4.336ms4.367ms
8202.106.35.190(202.106.35.190)1.795ms61.148.156.138(61.148.156.138)1.899ms1.951ms
9***
30***
[root@localhost~]#
复制代码
说明:
记录按序列号从1开始,每个纪录就是一跳,每跳表示一个网关,我们看到每行有三个时间,单位是ms,其实就是-q的默认参数。探测数据包向每个网关发送三个数据包后,网关响应后返回的时间;如果您用traceroute-q4www.58.com,表示向每个网关发送4个数据包。
有时我们traceroute一台主机时,会看到有一些行是以星号表示的。出现这样的情况,可能是防火墙封掉了ICMP的返回信息,所以我们得不到什么相关的数据包返回数据。
有时我们在某一网关处延时比较长,有可能是某台网关比较阻塞,也可能是物理设备本身的原因。当然如果某台DNS出现问题时,不能解析主机名、域名时,也会有延时长的现象;您可以加-n参数来避免DNS解析,以IP格式输出数据。
如果在局域网中的不同网段之间,我们可以通过traceroute来排查问题所在,是主机的问题还是网关的问题。如果我们通过远程来访问某台服务器遇到问题时,我们用到traceroute追踪数据包所经过的网关,提交IDC服务商,也有助于解决问题;但目前看来在国内解决这样的问题是比较困难的,就是我们发现问题所在,IDC服务商也不可能帮助我们解决。
#p#分页标题#e#
实例2:跳数设置
命令:
traceroute-m10www.baidu.com
输出:
复制代码
[root@localhost~]#traceroute-m10www.baidu.com
traceroutetowww.baidu.com(61.135.169.105),10hopsmax,40bytepackets
1192.168.74.2(192.168.74.2)1.534ms1.775ms1.961ms
2211.151.56.1(211.151.56.1)0.508ms0.514ms0.507ms
3211.151.227.206(211.151.227.206)0.571ms0.558ms0.550ms
4210.77.139.145(210.77.139.145)0.708ms0.729ms0.785ms
5202.106.42.101(202.106.42.101)7.978ms8.155ms8.311ms
6bt-228-037.bta.net.cn(202.106.228.37)772.460msbt-228-025.bta.net.cn(202.106.228.25)2.152ms61.148.154.97(61.148.154.97)772.107ms
7124.65.58.221(124.65.58.221)4.875ms61.148.146.29(61.148.146.29)2.124ms124.65.58.221(124.65.58.221)4.854ms
8123.126.6.198(123.126.6.198)2.944ms61.148.156.6(61.148.156.6)3.505ms123.126.6.198(123.126.6.198)2.885ms
9***
10***
[root@localhost~]#
复制代码#p#分页标题#e#
说明:
实例3:显示IP地址,不查主机名
命令:
traceroute-nwww.baidu.com
输出:
复制代码
[root@localhost~]#traceroute-nwww.baidu.com
traceroutetowww.baidu.com(61.135.169.125),30hopsmax,40bytepackets
1211.151.74.25.430ms5.636ms5.802ms
2211.151.56.570.627ms0.625ms0.617ms
3211.151.227.2060.575ms0.584ms0.576ms
4210.77.139.1450.703ms0.754ms0.806ms
5202.106.42.10123.683ms23.869ms23.998ms
6202.106.228.37247.101ms**
761.148.146.295.256ms124.65.58.2134.386ms4.373ms
8202.106.35.1901.610ms61.148.156.1381.786ms61.148.3.342.089ms
9***
30***
[root@localhost~]#traceroutewww.baidu.com
traceroutetowww.baidu.com(61.135.169.125),30hopsmax,40bytepackets#p#分页标题#e#
1211.151.74.2(211.151.74.2)4.671ms4.865ms5.055ms
2211.151.56.57(211.151.56.57)0.619ms0.618ms0.612ms
3211.151.227.206(211.151.227.206)0.620ms0.642ms0.636ms
4210.77.139.145(210.77.139.145)0.720ms0.772ms0.816ms
5202.106.42.101(202.106.42.101)7.667ms7.910ms8.012ms
6bt-228-025.bta.net.cn(202.106.228.25)2.965ms2.440ms61.148.154.97(61.148.154.97)431.337ms
7124.65.58.213(124.65.58.213)5.134ms5.124ms5.044ms
8202.106.35.190(202.106.35.190)1.917ms2.052ms2.059ms
9***
30***
[root@localhost~]#
复制代码
说明:
实例4:探测包使用的基本UDP端口设置6888
命令:
traceroute-p6888www.baidu.com
输出:
复制代码
[root@localhost~]#p#分页标题#e##traceroute-p6888www.baidu.com
traceroutetowww.baidu.com(220.181.111.147),30hopsmax,40bytepackets
1211.151.74.2(211.151.74.2)4.927ms5.121ms5.298ms
2211.151.56.1(211.151.56.1)0.500ms0.499ms0.509ms
3211.151.224.90(211.151.224.90)0.637ms0.631ms0.641ms
4***
5220.181.70.98(220.181.70.98)5.050ms5.313ms5.596ms
6220.181.17.94(220.181.17.94)1.665ms!X**
[root@localhost~]#
复制代码
说明:
实例5:把探测包的个数设置为值4
命令:
traceroute-q4www.baidu.com
输出:
复制代码
[root@localhost~]#traceroute-q4www.baidu.com
traceroutetowww.baidu.com(61.135.169.125),30hopsmax,40bytepackets#p#分页标题#e#
1211.151.74.2(211.151.74.2)40.633ms40.819ms41.004ms41.188ms
2211.151.56.57(211.151.56.57)0.637ms0.633ms0.627ms0.619ms
3211.151.227.206(211.151.227.206)0.505ms0.580ms0.571ms0.569ms
4210.77.139.145(210.77.139.145)0.753ms0.800ms0.853ms0.904ms
5202.106.42.101(202.106.42.101)7.449ms7.543ms7.738ms7.893ms
661.148.154.97(61.148.154.97)316.817msbt-228-025.bta.net.cn(202.106.228.25)3.695ms3.672ms*
7124.65.58.213(124.65.58.213)3.056ms2.993ms2.960ms61.148.146.29(61.148.146.29)2.837ms
861.148.3.34(61.148.3.34)2.179ms2.295ms2.442ms202.106.35.190(202.106.35.190)7.136ms
9****
30****
[root@localhost~]#
复制代码
说明:
实例6:绕过正常的路由表,直接发送到网络相连的主机
命令:
traceroute-rwww.baidu.com
输出:
#p#分页标题#e#
[root@localhost~]#traceroute-rwww.baidu.com
traceroutetowww.baidu.com(61.135.169.125),30hopsmax,40bytepackets
connect:网络不可达
[root@localhost~]#
说明:
实例7:把对外发探测包的等待响应时间设置为3秒
命令:
traceroute-w3www.baidu.com
输出:
复制代码
[root@localhost~]#traceroute-w3www.baidu.com
traceroutetowww.baidu.com(61.135.169.105),30hopsmax,40bytepackets
1211.151.74.2(211.151.74.2)2.306ms2.469ms2.650ms
2211.151.56.1(211.151.56.1)0.621ms0.613ms0.603ms
3211.151.227.206(211.151.227.206)0.557ms0.560ms0.552ms
4210.77.139.145(210.77.139.145)0.708ms0.761ms0.817ms#p#分页标题#e#
5202.106.42.101(202.106.42.101)7.520ms7.774ms7.902ms
6bt-228-025.bta.net.cn(202.106.228.25)2.890ms2.369ms61.148.154.97(61.148.154.97)471.961ms
7124.65.58.221(124.65.58.221)4.490ms4.483ms4.472ms
8123.126.6.198(123.126.6.198)2.948ms61.148.156.6(61.148.156.6)7.688ms7.756ms
9***
30***
[root@localhost~]#
复制代码
说明:
Traceroute的工作原理:
Traceroute最简单的基本用法是:traceroutehostname
Traceroute程序的设计是利用ICMP及IPheader的TTL(TimeToLive)栏位(field)。首先,traceroute送出一个TTL是1的IPdatagram(其实,每次送出的为3个40字节的包,包括源地址,目的地址和包发出的时间标签)到目的地,当路径上的第一个路由器(router)收到这个datagram时,它将TTL减1。此时,TTL变为0了,所以该路由器会将此datagram丢掉,并送回一个「ICMPtimeexceeded」消息(包括发IP包的源地址,IP包的所有内容及路由器的IP地址),traceroute收到这个消息后,便知道这个路由器存在于这个路径上,接着traceroute再送出另一个TTL是2的datagram,发现第2个路由器......traceroute每次将送出的datagram的TTL加1来发现另一个路由器,这个重复的动作一直持续到某个datagram抵达目的地。当datagram到达目的地后,该主机并不会送回ICMPtimeexceeded消息,因为它已是目的地了,那么traceroute如何得知目的地到达了呢?
Traceroute在送出UDPdatagrams到目的地时,它所选择送达的portnumber是一个一般应用程序都不会用的号码(30000以上),所以当此UDPdatagram到达目的地后该主机会送回一个「ICMPportunreachable」的消息,而当traceroute收到这个消息时,便知道目的地已经到达了。所以traceroute在Server端也是没有所谓的Daemon程式。
#p#分页标题#e#Traceroute提取发ICMPTTL到期消息设备的IP地址并作域名解析。每次,Traceroute都打印出一系列数据,包括所经过的路由设备的域名及IP地址,三个包每次来回所花时间。
windows之tracert:
格式:
tracert[-d][-hmaximum_hops][-jhost-list][-wtimeout]target_name
参数说明:
tracert[-d][-hmaximum_hops][-jcomputer-list][-wtimeout]target_name
该诊断实用程序通过向目的地发送具有不同生存时间(TL)的Internet控制信息协议(CMP)回应报文,以确定至目的地的路由。路径上的每个路由器都要在转发该ICMP回应报文之前将其TTL值至少减1,因此TTL是有效的跳转计数。当报文的TTL值减少到0时,路由器向源系统发回ICMP超时信息。通过发送TTL为1的第一个回应报文并且在随后的发送中每次将TTL值加1,直到目标响应或达到最大TTL值,Tracert可以确定路由。通过检查中间路由器发发回的ICMP超时(imeExceeded)信息,可以确定路由器。注意,有些路由器“安静”地丢弃生存时间(TLS)过期的报文并且对tracert无效。
参数:
-d指定不对计算机名解析地址。
-hmaximum_hops指定查找目标的跳转的最大数目。
-jcomputer-list指定在computer-list中松散源路由。
#p#分页标题#e#-wtimeout等待由timeout对每个应答指定的毫秒数。
target_name目标计算机的名称。
实例:
复制代码
C:\Users\Administrator>tracertwww.58.com
Tracingroutetowww.58.com[221.187.111.30]
overamaximumof30hops:
11ms1ms1ms10.58.156.1
21ms<1ms<1ms10.10.10.1
31ms1ms1ms211.103.193.129
42ms2ms2ms10.255.109.129
51ms1ms3ms124.205.98.205
62ms2ms2ms124.205.98.253
72ms6ms1ms202.99.1.125
85ms6ms5ms118.186.0.113
9207ms**118.186.0.106
108ms6ms11ms124.238.226.201
116ms7ms6ms219.148.19.177
1212ms12ms16ms219.148.18.117
1314ms17ms16ms219.148.19.125
1413ms13ms12ms202.97.80.113
15***Requesttimedout.
1612ms12ms17msbj141-147-82.bjtelecom.net[219.141.147.82]#p#分页标题#e#
1713ms13ms12ms202.97.48.2
18***Requesttimedout.
1914ms14ms12ms221.187.224.85
2015ms13ms12ms221.187.104.2
21***Requesttimedout.
2215ms17ms18ms221.187.111.30
Tracecomplete.
复制代码
转载于:http://www.itxuexiwang.com/a/liunxjishu/2016/0304/212.html?1457193883