介绍
traceroute能够记录IP数据报从一台主机传到另外一台主机所通过的路由。解决了IP记录路由选项(RR)的一些问题:网络
- 不是全部路由器都支持记录路由选项。traceroute不须要每一个路由器具有某个特殊功能
- 记录了“一去一回”的IP地址,略显浪费。traceroute只记录“去”的过程
- 空间有限,最多只能记录9个IP
traceroute利用ICMP报文、IP首部TTL字段(生存周期)、UDP协议来实现3d
工做原理
- 将IP数据报TTL字段设为1,打包成UDP包,发送给目标主机+大端口
- 第一个路由器接收包,TTL减1,丢弃包,返回ICMP超时报文
- 源主机获取超时报文,拿到第一个路由地址
- 将IP数据报TTL字段设为2,打包成UDP包,发送给目标主机+大端口
- 通过第一个,到达第二个路由器,TTL减为0,丢弃包,返回超时报文
- 源主机获取超时报文,拿到第二个路由器地址
- ...
- 数据报到达目的主机,发现该UDP端口太大,无服务,返回“端口不可达”报文
- 源主机获取端口不可达报文,拿到目的主机地址
之因此选UDP+大端口,是由于UDP服务每每不会使用大于30000的端口,必然形成“端口不可达”code
ICMP超时报文

其中上面讨论的TTL超时报文,代码等于0blog
局域网输出

广域网输出

注意
- 连续两份数据报可能采用不一样路由。致使traceroute记录不许确
- 返回ICMP超时超时报文的路由(回)与发送UDP数据报的路由(去)可能不一样。致使计算的RTT不是去程或者回程的两倍
- 只记录入口IP。若是路由器有多个网络接口,可能一去一回路由相同,但显示的IP列表去发生变化
IP源站选路选项
源站选路就是让用户指定路由。分为两种:接口
- 严格源站路由:用户指定路由表,每项必须和后一项直连,不然返回“源站路由失败”的ICMP差错报文
- 宽松源站路由:用户指定路由表,每项无需和后一项直连,中间能够间隔多个路由
一般在IP首部指定上述信息ci

- 严格源站路由code为0x89
- 宽松源站路由code为0x83
- 指定IP条目最多9个,而且数量能够动态调整。因为有宽松源站路由,IP条目一般并不大
从主机S发送数据报给D,用户指定源站路由R一、R2和R3路由

源站路由危险性比较高,通常不支持qt