IP转发

对于允许IP数据报转发的系统(主机或路由器),数据报转发子模块将对期望转发的数据报执行如下操作:
1)检查数据报头部的TTL值,如果TTL值已经是0,则丢弃该数据报
2)查看数据报头部的严格源路由选择选项,如果该选项被设置,则检测数据报的目标IP地址是否是本机的某个IP地址,如果不是,则发送一个ICMP源站选路失败报文给发送端。
3)如果有必要,则给源端发送一个ICMP重定向报文,以告诉它一个更合理的下一跳路由器。
4)将TTL值减一
5)处理IP头部选项
6)如果有必要,则执行IP分片操作。

ICMP重定向报文也能用于更新路由表。
这里写图片描述

ICMP重定向报文的类型值是5,代码字段有4个可选值,用来区分不同的重定向类型。其中主机重定向代码值为1。

ICMP重定向报文的数据部分含义很明确,它给接收方提供了如下两个信息:
a.引起重定向的IP数据报(原始数据报)的源端IP地址。
b.应该使用的路由器的IP地址。

接收主机根据这两个信息就可以断定引起重定向的IP数据报应该使用哪个路由器来转发,并且以此来更新路由表(通常是更新路由表缓存,而不是直接更改路由表)。

/proc/sys/net/ipv4/conf/all/send_redirects内核参数指定是否允许发送ICMP重定向报文,/proc/sys/net/ipv4/conf/all/accept_redirects 内核参数则指定是否允许接受ICMP重定向报文,一般来说,主机只能接收ICMP重定向报文,而路由器只能发送ICMP重定向报文。

猜你喜欢

转载自blog.csdn.net/qq_38365116/article/details/79268316