traceroute命令随笔

1.Traceroute用来干嘛?

  traceroute命令是用来追踪本网络到目标站点所经过的路线,并显示经过这些中间结点的时延。

2.Traceroute的实现原理

  程序是利用增加存活时间(TTL)值来实现其功能的。每当数据包经过一个路由器,其存活时间就会减1。当其存活时间是0时,主机便取消数据包,并发送一个ICMP TTL数据包给原数据包的发出者。程序发出的首3个数据包TTL值是1,之后3个是2,如此类推,它便得到一连串数据包路径。注意IP不保证每个数据包走的路径都一样。

实现:主叫方首先发出 TTL=1 的数据包,第一个路由器将 TTL 减1得0后就不再继续转发此数据包,而是返回一个 ICMP 逾时报文,主叫方从逾时报文中即可提取出数据包所经过的第一个网关地址。然后又发出一个 TTL=2 的 ICMP 数据包,可获得第二个网关地址,依次递增 TTL 便获取了沿途所有网关地址。

需要注意的是,并不是所有网关都会如实返回 ICMP 超时报文。出于安全性考虑,大多数防火墙以及启用了防火墙功能的路由器缺省配置为不返回各种 ICMP 报文,其余路由器或交换机也可被管理员主动修改配置变为不返回 ICMP 报文。因此 Traceroute 程序不一定能拿全所有的沿途网关地址。所以,当某个 TTL 值的数据包得不到响应时,并不能停止这一追踪过程,程序仍然会把 TTL 递增而发出下一个数据包。一直达到默认或用参数指定的追踪限制才结束追踪。traceroute命令随笔_第1张图片

 

 图片中的星号代表返回超时,可能跟中间节点路由器缺省不返回ICMP报文有关吧

 

3.Traceroute的语法

  

traceroute命令随笔_第2张图片

 

 

 

在命令行中输入traceroute即可查看相关选项的作用。注意版本不同,选项会有所差异。

 

 

4.带选项的traceroute示例

4.1设置最大跳数(设置最大生存时间TTL),-m 跳数,如:

 

 4.2设置第一个icmp报文的TTL,-f 跳数,如

 

 

 

 

 

你可能感兴趣的:(traceroute命令随笔)