Traceroute概述
Traceroute是一种将数据包途经路由,IP地址回显的指令,基于ICMP协议实现,通过不断发送不可交付的IP数据报,获取从源主机到目标主机的路由IP。
Traceroute工作原理
Traceroute命令(Dos下用tracert命令)从源主机向目的主机发送一连串的IP数据报,数据报中封装的是无法交付的UDP用户数据报,预设数据包大小是40Bytes。。第一个数据报P1的生存时间TTL设置为1。当P1到达路径上的第一个路由器R1时,路由器R1先收下它,接着把TTL的值减一。由于TTL等于零了,R1就把P1丢弃了,并向源主机发送了一个ICMP时间超过差错报告报文。
源主机接着发送第二个数据包P2,并把TTL设置为2。P2先到达路由器R1,R1收下后把TTL减1再转发给路由器R2.R2收到P2时TTL为1,但减1后TTL变为零了。R2就丢弃P2,并向源主机发送一个ICMP时间超过差错报告报文。这样一直继续下去。当最后一个数据报刚刚到达目的主机时,数据报的TTL时1.主机不转发数据报,也不把TTL值减1。但因IP数据报中封装的是无法交付的运输层的UDP用户数据报,因此目的主机要向源主机发送ICMP终点不可达差错报告报文。
这样,源主机就达到了自己的目的,因为这些路由器和最后目的主机发来的ICMP报文正好给出了源主机想知道的路由信息———达到目的主机所经过的路由器的IP地址,以及到达其中的每一个路由器的往返时间。
路由跟踪所花费的时间受路由器数量以及网络拥塞程度影响。
Traceroute命令参数
-d 使用Socket层级的排错功能。
-f<存活数值> 设置第一个检测数据包的存活数值TTL的大小。
-F 设置勿离断位。
-g<网关> 设置来源路由网关,最多可设置8个。
-i<网络界面> 使用指定的网络界面送出数据包。
-I 使用ICMP回应取代UDP资料信息。
-m<存活数值> 设置检测数据包的最大存活数值TTL的大小。
-n 直接使用IP地址而非主机名称。
-p<通信端口> 设置UDP传输协议的通信端口。
-q
-r 忽略普通的Routing Table,直接将数据包送到远端主机上。
-s<来源地址> 设置本地主机送出数据包的IP地址。
-t<服务类型> 设置检测数据包的TOS数值。
-v 详细显示指令的执行过程。
-w<超时秒数> 设置等待远端主机回报的时间。
-x 开启或关闭数据包的正确性检验。
1 | [root@localhost ~] traceroute baidu.com #最常用的方法 |
注:部分内容参考计算机网络相关书籍总结
声明:以上内容如有错漏,欢迎联系指正,转载请注明出处。