8.Traceroute程序

介绍

traceroute可以记录IP数据报从一台主机传到另一台主机所经过的路由。解决了IP记录路由选项(RR)的一些问题:

  1. 不是所有路由器都支持记录路由选项。traceroute不需要每个路由器具备某个特殊功能
  2. 记录了“一去一回”的IP地址,略显浪费。traceroute只记录“去”的过程
  3. 空间有限,最多只能记录9个IP

traceroute利用ICMP报文、IP首部TTL字段(生存周期)、UDP协议来实现

工作原理

  1. 将IP数据报TTL字段设为1,打包成UDP包,发送给目标主机+大端口
  2. 第一个路由器接收包,TTL减1,丢弃包,返回ICMP超时报文
  3. 源主机获取超时报文,拿到第一个路由地址
  4. 将IP数据报TTL字段设为2,打包成UDP包,发送给目标主机+大端口
  5. 经过第一个,到达第二个路由器,TTL减为0,丢弃包,返回超时报文
  6. 源主机获取超时报文,拿到第二个路由器地址
  7. ...
  8. 数据报到达目的主机,发现该UDP端口太大,无服务,返回“端口不可达”报文
  9. 源主机获取端口不可达报文,拿到目的主机地址

之所以选UDP+大端口,是因为UDP服务往往不会使用大于30000的端口,必然造成“端口不可达”

ICMP超时报文

image_1cibgng0s1l2tdi91iho12bd4jo13.png-55.7kB

其中上面讨论的TTL超时报文,代码等于0

局域网输出

image_1cibgkbtkf6hkhv1q1qfqtag9.png-30kB

广域网输出

image_1cibglq1q1n0fc4fcvt14gh1fg8m.png-159.7kB

注意

  1. 连续两份数据报可能采用不同路由。导致traceroute记录不准确
  2. 返回ICMP超时超时报文的路由(回)与发送UDP数据报的路由(去)可能不同。导致计算的RTT不是去程或者回程的两倍
  3. 只记录入口IP。如果路由器有多个网络接口,可能一去一回路由相同,但显示的IP列表去发生变化

IP源站选路选项

源站选路就是让用户指定路由。分为两种:

  • 严格源站路由:用户指定路由表,每项必须和后一项直连,否则返回“源站路由失败”的ICMP差错报文
  • 宽松源站路由:用户指定路由表,每项无需和后一项直连,中间可以间隔多个路由

通常在IP首部指定上述信息

image_1cic32n6i19vi1msf1pgj147vhmu1g.png-38kB

  • 严格源站路由code为0x89
  • 宽松源站路由code为0x83
  • 指定IP条目最多9个,并且数量可以动态调整。由于有宽松源站路由,IP条目通常并不大

从主机S发送数据报给D,用户指定源站路由R1、R2和R3

image_1cic386puprn12011kn4oeg8b51t.png-32.5kB

源站路由危险性比较高,一般不支持

转载于:https://my.oschina.net/u/1378920/blog/1852344

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值