第八章 Traceroute程序输入日志标题

本文详细解释了Traceroute程序的工作原理,包括它如何使用ICMP报文和IP首部的TTL字段来确定从源主机到目标主机的网络路径。同时介绍了源站选路选项的概念,包括严格和宽松的路由选择方式。

Traceroute程序可以让我们看到 IP数据报从一台主机传到另一台主机所经过的路由。 Traceroute程序还可以让我们使用 IP源路由选项。

Traceroute程序使用 ICMP报文和 IP首部中的 TTL字段(生存周期TTL字段是由发送端 初始设置一个 8 bit 字段。推荐的初始值由分配数字 RFC指定,当前值为 64。较老版本的系统 经常初始化为 1532。我们从第 7章中的一些 ping程序例子中可以看出,发送 ICMP回显应答 时经常把 TTL设为最大值 255

当路由器收到一份 IP数据报,如果其 TTL字段是01,则路由器不转发该数据报(接收到 这种数据报的目的主机可以将它交给应用程序,这是因为不需要转发该数据报。但是在通常 情况下,系统不应该接收TTL字段为 0的数据报。相反,路由器将该数据报丢弃,并给信源机发一份 ICMP“超时”信息。 Traceroute程序的关键在于包含这份ICMP信息的 IP报文的信源地址是该路由器的 IP地址。

原理

我们现在可以猜想一下 Traceroute程序的操作过程。它发送一份 TTL字段为1IP数据报给 目的主机。处理这份数据报的第一个路由器将 TTL值减 1,丢弃该数据报,并发回一份超时 ICMP报文。这样就得到了该路径中的第一个路由器的地址。然后   Traceroute程序发送一份

TTL值为2的数据报,这样我们就可以得到第二个路由器的地址。继续这个过程直至该数据报 到达目的主机。但是目的主机哪怕接收到 TTL值为1IP数据报,也不会丢弃该数据报并产生一份超时 ICMP报文,这是因为数据报已经到达其最终目的地。那么我们该如何判断是否已经到达目的主机了呢?

Traceroute程序发送一份 UDP数据报给目的主机,但它选择一个不可能的值作为 UDP端口 号(大于 30 000,使目的主机的任何一个应用程序都不可能使用该端口。因为,当该数据报到达时,将使目的主机的   UDP模块产生一份“端口不可达”错误(见    6.5节)的 ICMP报文。这样, Traceroute程序所要做的就是区分接收到的 ICMP报文是超时还是端口不可达,以判断 什么时候结束。

8.5     IP源站选路选项

通常 IP路由是动态的,即每个路由器都要判断数据报下面该转发到哪个路由器。应用程 序对此不进行控制,而且通常也并不关心路由。它采用类似 Traceroute程序的工具来发现 实际的路由。

源站选路 (source routing)的思想是由发送者指定路由。它可以采用以下两种形式:

严格的源路由选择。发送端指明 IP数据报所必须采用的确切路由。如果一个路由器发现 源路由所指定的下一个路由器不在其直接连接的网络上,那么它就返回一个“源站路 由失败”的  ICMP差错报文。

宽松的源站选路。发送端指明了一个数据报经过的 IP地址清单,但是数据报在清单上指 明的任意两个地址之间可以通过其他路由器。

转载于:https://my.oschina.net/bjyb/blog/385831

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值