《Linux高性能服务器编程》——2.5 IP转发

    xiaoxiao2022-06-20  190

    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分片操作。

    相关资源:JAVA上百实例源码以及开源项目源代码

    最新回复(0)