Linux的traceroute命令详解

不同环境上的命令
windows里的是tracert
Linux里的命令是traceroute

路由跟踪traceroute工具说明
Tracert(跟踪路由)是路由跟踪实用程序,用于确定 IP 数据报访问目标所采取的路径。Tracert 命令用 IP 生存时间 (TTL) 字段和 ICMP 错误消息来确定从一个主机到网络上其他主机的路由。
Tracert 工作原理
路由扫描工具的原理都是存活时间(TTL)来实现的。通过向目标发送不同 IP 生存时间 (TTL) 值的“Internet 控制消息协议 (ICMP)”回应数据包,Tracert 诊断程序确定到目标所采取的路由。要求路径上的每个路由器在转发数据包之前至少将数据包上的 TTL 递减 1。数据包上的 TTL 减为 0 时,路由器应该将“ICMP 已超时”的消息发回源系统。
Tracert 先发送 TTL 为 1 的回应数据包,并在随后的每次发送过程将 TTL 递增 1,直到目标响应或 TTL 达到最大值,从而确定路由。通过检查中间路由器发回的“ICMP 已超时”的消息确定路由。某些路由器不经询问直接丢弃 TTL 过期的数据包,这在 traceroute 实用程序中看不到。

Linux下的traceroute和Windows的tracert功能相似,所不同的是Windows的tracert发送的是ICMP报文,Linux的traceroute发送的是UDP数据包。

由于traceroute使用UDP协议,所以其目标端口号默认为33433,一般应用程序都不会用到这个端口,所以目标主机会回送ICMP。

traceroute也支持发送TCP和ICMP:

 -I  --icmp                  Use ICMP ECHO for tracerouting
 -T  --tcp                  Use TCP SYN for tracerouting
 -p port  --port=port

一般的Linux都会默认带有traceroute工具,如果没有可以yum安装一下。
yum install traceroute
traceroute最简单的基本用法是:traceroute hostname,示例:

# traceroute  192.168.0.99
traceroute to 192.168.0.99 (192.168.0.99), 30 hops max, 60 byte packets
 1  192.168.2.1 (192.168.2.1)  5.642 ms  5.901 ms  12.287 ms
 2  192.168.0.99 (192.168.0.99)  0.416 ms  1.193 ms  1.045 ms

traceroute会对每个节点测试三次,因此每一行会有三个时间,通过这个时间可以分析出哪一个路由节点延时最大。

traceroute使用技巧

--------------------------------------------------------------------------------

用traceroute一些网站时,可能无法到达最终节点,如:
1

这主要是因为有些服务器把UDP数据包屏蔽了,所以没有返回ICMP。

对于有HTTP服务的主机,可以用参数设置traceroute使用TCP协议进行探测,就可以获得最终节点:
2

参考资料:
Linux常用网络工具:路由扫描之traceroute:http://www.linuxidc.com/Linux/2015-06/118487.htm
centos6.3如何打开tracert:http://zhidao.baidu.com/question/1495967340545997059.html?fr=iks&word=linux+%B0%B2%D7%B0+tracert&ie=gbk

发表评论?

0 条评论。

发表评论

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据