ICMP重定向报文
当I P数据报应该被发送到另一个路由器时,收到数据报的路由器就要发送 I C M P重定向差错报文给I P数据报的发送端。只有当主机可以选择路由器发送分组的情况下,我们才可能看到 I C M P重定向报文。
实际上是一种路由优化的功能。
1) 我们假定主机发送一份 I P数据报给 R 1。这种选路决策经常发生,因为 R 1是该主机的默认路由。
2) R1收到数据报并且检查它的路由表,发现 R 2是发送该数据报的下一站。当它把数据报
发送给R2时, R1检测到它正在发送的接口与数据报到达接口是相同的(即主机和两个路由器
所在的LA N)。这样就给路由器发送重定向报文给原始发送端提供了线索。
3) R1发送一份IC M P重定向报文给主机,告诉它以后把数据报发送给 R 2而不是R 1。
注意:重定向一般用来让具有很少选路信息的主机逐渐建立更完善的路由表。主机启动时路由表中可以只有一个默认表项(在图 9 - 3所示的例子中,为 R 1或R 2)。一旦默认路由发生差错,默认路由器将通知它进行重定向,并允许主机对路由表作相应的改动。
注意:
(1) 重定向报文只能由路由器生成,而不能由主机生成。
(2) 重定向报文是为主机而不是为路由器使用的。
Windows注册表中可以设置是否启用ICMP重定向,启用的前提是开启了IP路由功能(即将主机做为路由器使用)。
路径:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Tcpip\Parameters
ICMP路由器发现报文
更新或初始化路由表的方法有两种:
(1) 启动时通过配置文件来读静态路由;
(2) 利用ICMP路由器通告和请求报文。主机在引导以后要广播或多播传送一份路由器请求报文。一台或更多台路由器响应一份路由器通告报文。另外,路由器定期地广播或多播传送它们的路由器通告报文,允许每个正在监听的主机相应地更新它们的路由表。