2.5 IP转发
前文提到,不是发送给本机的IP数据报将由数据报转发子模块来处理。路由器都能执行数据报的转发操作,而主机一般只发送和接收数据报,这是因为主机上/proc/sys/net/ipv4/ip_forward内核参数默认被设置为0。我们可以通过修改它来使能主机的数据报转发功能(在测试机器Kongming20上以root身份执行):
# echo 1 > /proc/sys/net/ipv4/ip_forward
对于允许IP数据报转发的系统(主机或路由器),数据报转发子模块将对期望转发的数据报执行如下操作:
1)检查数据报头部的TTL值。如果TTL值已经是0,则丢弃该数据报。
2)查看数据报头部的严格源路由选择选项。如果该选项被设置,则检测数据报的目标IP地址是否是本机的某个IP地址。如果不是,则发送一个ICMP源站选路失败报文给发送端。
3)如果有必要,则给源端发送一个ICMP重定向报文,以告诉它一个更合理的下一跳路由器。
4)将TTL值减1。
5)处理IP头部选项。
6)如果有必要,则执行IP分片操作。
时间: 2024-09-12 04:42:39