第八章 Traceroute程序
1.引言
Traceroute程序可以让我们看到IP数据报从一台主机传到另一台主机所经过的路由。
(尽管不能保证从源端发往目的端的两份连续的IP数据报具有相同的路由,但是大多数情况下是这样的。)

Traceroute程序还可以让我们使用IP源路由选项。

2.Traceroute程序的操作
traceroute程序使用ICMP报文和IP首部的TTL字段来实现。

运行原理:
(1)首先发送TTL为1的IP数据报给目标地址,处理这个IP数据报的第一个路由器把TTL减1为0,丢弃该数据报,并返回一份超时ICMP报文,由此得到第一个路由器的IP(入口IP).

(2)再次发送TTL为2的IP数据报给目标地址,第二个路由器把TTL减1为0,步骤同上,通过返回的超时ICMP报文,得到了第二个路由器的IP地址.

(3)然后依次发送TTL为3,4…n的数据报,分别记录返回的超时ICMP报文的IP,即对应跳的路由IP.

(4)最终达到目标地址.判断依据:发送的IP数据报封装的为UDP数据报,【选择的是一个不可能使用的UDP端口】,当到达目标地址时,目标地址将返回’端口不可达’的ICMP报文,而不是路由返回的超时ICMP报文.

有两种不同的ICMP“超时”报文,它们的code字段不同。一种是在TTL值等于0时产生的,其code字段为0,另一种是主机在组装分片时发生超时而发送的“组装报文超时”报文,其code字段为1.

3.IP源站选路选项
源站选路的思想是由发送者指定路由,它有两种形式:

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

宽松的源站选路,可以指明一个数据报经过的IP地址清单。