首页 > 代码库 > ICMP重定向

ICMP重定向

ICMP重定向报文是ICMP控制报文中的一种。在特定的情况下,当路由器检测到一台机器使用非优化路由的时候,它会向该主机发送一个ICMP重定向报文,请求主机改变路由。路由器也会把初始数据报向它的目的地转发。

技术分享

如上图所示,R3想发送数据报给R4,R3的默认网关是R1,R3将数据报发送给R1,R1查看自己的路由表,到达R4的下一跳地址是R2,当把数据报发送给R2时,R1检测到它正在发送数据报的接口与数据报到达的接口是相同的,R1,R2,R3位于同一LAN,这样就满足了ICMP重定向的条件。R1会发送一份ICMP重定向报文给R3,告诉它以后将数据报发送给R2而不是R1。

重定向一般是用来让具有很少选路信息的主机逐渐建立更完善的路由表。需要路由器向源发送ICMP重定向的情况是:

1)源将数据报发送给路由器的入端口(R3->R1)和路由器发送数据报的出端口(R1->R2)必须相等

2)数据报的源IP和自己转发时的下一跳IP地址是同网段的(R3,R1)

ICMP重定向报文格式为

类型
代码
校验和
重定向网关 IP
原包的IP首部
                                   源IP数据报前8个字节

类型为5,代码包括4种,其中0为网络重定向,1为主机重定向,2为服务类型和网络重定向,3为服务类型和主机重定向。一般用的是1和3,主机的重定向。

 

ICMP重定向