1. traceroute命令原理
网络上的数据传递就好比是快递员送快递,快递肯定不是由一个快递员送到目标地的,而是一场接力赛。而网络上的快递员就是路由节点。数据包要到达目标地址,要经过多个路由器传递。每个经过一个路由器节点,IP协议头部的TTL就减1。如果TTL值减少到0,路由器将丢弃这个数据包。
traceroute命令向网络目标连续发起多个探测数据包。IP头的TTL不断增加,以此来检测丢包情况。当路由器丢包时,会向源设备发起一个ICMP消息,表示因TTL不足而丢包,这时源设备就知道数据包路经的路由器节点有哪些了。
traceroute命令原理
2. traceroute命令选项
-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 开启或关闭数据包的正确性检验。
Linux路由跟踪工具之traceroute命令
3. 安装traceroute
[root@zcwyou ~]# yum -y install traceroute
安装 1 软件包
总下载量:59 k
安装大小:92 k
Downloading packages:
traceroute-2.0.22-2.el7.x86_64.rpm | 59 kB 00:00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
正在安装 : 3:traceroute-2.0.22-2.el7.x86_64 1/1
验证中 : 3:traceroute-2.0.22-2.el7.x86_64 1/1
已安装:
traceroute.x86_64 3:2.0.22-2.el7
完毕!
Linux路由跟踪工具
4. 实例
从本服务器跟踪到达www.linuxrumen.com服务器途经的节点。
[root@zcwyou ~]# traceroute www.linuxrumen.com
Linux路由跟踪实例
traceroute to www.qq.com (61.129.7.47), 30 hops max, 60 byte packets
1 gateway (113.105.164.129) 5.387 ms 5.819 ms 6.280 ms
2 172.16.23.1 (172.16.23.1) 2.137 ms 2.434 ms 2.650 ms
3 172.16.11.1 (172.16.11.1) 6.403 ms 6.675 ms 6.939 ms
4 113.105.150.13 (113.105.150.13) 34.431 ms 34.786 ms 35.061 ms
5 119.147.155.29 (119.147.155.29) 2.766 ms 183.60.128.85 (183.60.128.85) 3.502 ms 119.147.155.21 (119.147.155.21) 5.576 ms
6 113.96.254.97 (113.96.254.97) 2.822 ms 113.96.254.117 (113.96.254.117) 2.833 ms 2.912 ms
7 202.97.29.129 (202.97.29.129) 27.716 ms 202.97.29.149 (202.97.29.149) 32.007 ms 202.97.29.145 (202.97.29.145) 25.571 ms
8 * 101.95.88.65 (101.95.88.65) 26.188 ms *
9 101.95.224.58 (101.95.224.58) 27.501 ms 27.557 ms 26.836 ms