下面的例子是作者观察到的,把它作为第9章讨论ICMP间接报文的起点。在子网140.252.1上ping主机aix(在主机sun上通过拨号SLip连接可以访问),并带有记录路由选项。在slip主机上运行有如下输出结果:
我们已经在主机bsdi上运行过这个例子。现在选择slip来运行它,观察RR清单中所有的9个IP地址。
在输出中令人感到迷惑的是,为什么传出的数据报(ICMP回显请求)直接从netb传到aix,而返回的数据报(ICMP回显应答)却从aix开始经路由器gateway再到netb?这里看到的正是下面将要描述的IP选路的一个特点。数据报经过的路由如图7-6所示。
问题是aix不知道要把目的地为子网140.252.13的IP数据报发到主机netb上。相反,aix在它的路由表中有一个默认项,它指明当没有明确某个目的主机的路由时,就把所有的数据报发往默认项指定的路由器gateway。路由器gateway比子网140.252.1上的任何主机都具备更强的选路能力(在这个以太网上有超过150台主机,每台主机的路由表中都有一个默认项指向路由器gateway,这样就不用在每台主机上都运行一个选路守护程序)。
这里没有应答的一个问题是为什么gateway不直接发送ICMP报文重定向到aix,以更新它的路由表?由于某种原因(很可能是由于数据报产生的重定向是一份ICMP回显请求报文),重定向并没有产生。但是假如我们用Telnet登录到aix上的daytime服务器,ICMP就会产生重定向,因而它在aix上的路由表也随之更新。假如接着执行ping程序并带有记录路由选项,其路由显示表明数据报从netb到aix,然后返回netb,而不再经过路由器gateway。在9.5节中将更具体地讨论ICMP重定向的问题。
图7-6运行带有记录路由选项的ping程序,显示IP选路的特点