traceroute指令让你追踪网络数据包的路由途径,预设数据包大小是40Bytes,用户可另行设置。
通过traceroute我们可以知道信息从你的计算机到互联网另一端的主机是走的什么路径。当然每次数据包由某一同样的出发点(source)到达某一同样的目的地(destination)走的路径可能会不一样,但基本上来说大部分时候所走的路由是相同的。linux系统中,我们称之为traceroute,在MS Windows中为tracert。 traceroute通过发送小的数据包到目的设备直到其返回,来测量其需要多长时间。一条路径上的每个设备traceroute要测3次。输出结果中包括每次测试的时间(ms)和设备的名称(如有的话)及其IP地址。
在大多数情况下,我们会在linux主机系统下,直接执行命令行:
traceroute hostname
而在Windows系统下是执行tracert的命令:
tracert hostname
参数:
-d 使用Socket层级的排错功能。
-f 设置第一个检测数据包的存活数值TTL的大小。
-F 设置勿离断位。
-g 设置来源路由网关,最多可设置8个。
-i 使用指定的网络界面送出数据包。
-I 使用ICMP回应取代UDP资料信息。
-m 设置检测数据包的最大存活数值TTL的大小。
-n 直接使用IP地址而非主机名称。
-p 设置UDP传输协议的通信端口。
-r 忽略普通的Routing Table,直接将数据包送到远端主机上。
-s 设置本地主机送出数据包的IP地址。
-t 设置检测数据包的TOS数值。
-v 详细显示指令的执行过程。
-w 设置等待远端主机回报的时间。
-x 开启或关闭数据包的正确性检验。
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地址,三个包每次来回所花时间。
[root@localhost ~]# traceroute www.google.com traceroute to www.google.com (216.58.193.196), 30 hops max, 60 byte packets 1 v816.sioru.com (104.194.76.26) 0.054 ms 0.026 ms 0.023 ms 2 all.your.base.are.belong.to.us (66.212.31.185) 2.416 ms 1.483 ms 1.453 ms 3 colo-lax13.as8100.net (96.44.180.93) 13.342 ms 13.316 ms 13.288 ms 4 204.152.204.18.static.quadranet.com (204.152.204.18) 13.684 ms 13.651 ms 13.620 ms 5 72.14.234.45 (72.14.234.45) 13.707 ms 13.683 ms 13.652 ms 6 108.170.233.13 (108.170.233.13) 11.865 ms 15.616 ms 15.574 ms 7 lax02s23-in-f4.1e100.net (216.58.193.196) 15.501 ms 10.826 ms 10.782 ms [root@localhost ~]# traceroute www.google.com traceroute to www.google.com (172.217.4.164), 30 hops max, 60 byte packets 1 v816.sioru.com (104.194.76.26) 0.108 ms 0.027 ms 0.024 ms 2 all.your.base.are.belong.to.us (66.212.31.185) 2.263 ms 2.227 ms 2.198 ms 3 colo-lax13.as8100.net (96.44.180.97) 1.261 ms 1.245 ms 1.228 ms 4 69.12.69.2 (69.12.69.2) 1.194 ms 1.179 ms 1.153 ms 5 204.152.204.18.static.quadranet.com (204.152.204.18) 1.194 ms 1.178 ms 1.160 ms 6 216.239.59.221 (216.239.59.221) 1.336 ms 64.233.174.215 (64.233.174.215) 1.915 ms 1.647 ms 7 108.170.234.213 (108.170.234.213) 3.919 ms 108.170.234.215 (108.170.234.215) 3.921 ms 3.875 ms 8 lax28s01-in-f4.1e100.net (172.217.4.164) 4.005 ms 3.974 ms 3.934 ms
C:Usersch>tracert www.baidu.com 通过最多 30 个跃点跟踪 到 www.a.shifen.com [180.97.33.108] 的路由: 1 <1 毫秒 <1 毫秒 <1 毫秒 10.162.32.1 2 1 ms <1 毫秒 1 ms 10.193.0.1 3 1 ms <1 毫秒 1 ms 10.100.0.13 4 1 ms <1 毫秒 <1 毫秒 10.100.0.1 5 * * * 请求超时。 6 * 3 ms 4 ms 111.175.208.29 7 4 ms 3 ms 3 ms 111.175.208.221 8 28 ms 27 ms 23 ms 202.97.84.250 9 31 ms 34 ms 25 ms 202.102.69.30 10 * * * 请求超时。 11 30 ms 22 ms 80 ms 180.97.32.134 12 * * * 请求超时。 13 * * * 请求超时。 14 28 ms 25 ms 27 ms 180.97.33.108 跟踪完成。
dd