速读原著-TCP/IP(ICMP路由器发现报文)

第9章 IP选路

9.6 ICMP路由器发现报文

在本章前面已提到过一种初始化路由表的方法,即在配置文件中指定静态路由。这种方法经常用来设置默认路由。另一种新的方法是利用 I C M P路由器通告和请求报文。

一般认为,主机在引导以后要广播或多播传送一份路由器请求报文。一台或更多台路由器响应一份路由器通告报文。另外,路由器定期地广播或多播传送它们的路由器通告报文,允许每个正在监听的主机相应地更新它们的路由表。

RFC 1256 [Deering 1991]确定了这两种I C M P报文的格式。I C M P路由器请求报文的格式如图9 - 6所示。I C M P路由器通告报文的格式如图 9 - 7所示。

路由器在一份报文中可以通告多个地址。地址数指的是报文中所含的地址数。地址项大小指的是每个路由器地址 32 bit字的数目,始终为 2。生存期指的是通告地址有效的时间(秒数)。
在这里插入图片描述
在这里插入图片描述
接下来是一对或多对 I P地址和优先级。 I P地址必须是发送路由器的某个地址。优先级是一个有符号的32 bit整数,指出该I P地址作为默认路由器地址的优先等级,这是与子网上的其他路由器相比较而言的。值越大说明优先级越高。优先级为 0 x 8 0 0 0 0 0 0 0说明对应的地址不能作为默认路由器地址使用,尽管它也包含中通告报文中。优先级的默认值一般为 0。

9.6.1 路由器操作

当路由器启动时,它定期在所有广播或多播传送接口上发送通告报文。准确地说,这些通告报文不是定期发送的,而是随机传送的,以减小与子网上其他路由器发生冲突的概率。

一般每两次通告间隔4 5 0秒和6 0 0秒。一份给定的通告报文默认生命周期是 3 0分钟。使用生命周期域的另一个时机是当路由器上的某个接口被关闭时。在这种情况下,路由器可以在该接口上发送最后一份通告报文,并把生命周期值设为 0。

除了定期发送主动提供的通告报文以外,路由器还要监听来自主机的请求报文,并发送路由器通告报文以响应这些请求报文。
如果子网上有多台路由器,由系统管理员为每个路由器设置优先等级。例如,主默认路由器就要比备份路由器具有更高的优先级。

9.6.2 主机操作

主机在引导期间一般发送三份路由器请求报文,每三秒钟发送一次。一旦接收到一个有效的通告报文,就停止发送请求报文。
主机也监听来自相邻路由器的请求报文。这些通告报文可以改变主机的默认路由器。另外,如果没有接收到来自当前默认路由器的通告报文,那么默认路由器会超时。

只要有一般的默认路由器,该路由器就会每隔 1 0分钟发送通告报文,报文的生命周期是3 0分钟。这说明主机的默认表项是不会超时的,即使错过一份或两份通告报文。

9.6.3 实现

路由器发现报文一般由用户进程(守护程序)创建和处理。这样,在图 9 - 1中就有另一个修改路由表的程序,尽管它只增加或删除默认表项。守护程序必须把它配置成一台路由器或主机来使用。

这两种I C M P报文是新加的,不是所有的系统都支持它们。在我们的网络中,只有Solaris 2.x支持这两种报文(i n . r d i s c守护程序)。尽管RFC建议尽可能用IP多播传送,但是路由器发现还可以利用广播报文来实现。

发布了1489 篇原创文章 · 获赞 1394 · 访问量 12万+

猜你喜欢

转载自blog.csdn.net/weixin_42528266/article/details/104671101