IP数据报转发策略
主机通常默认不转发IP数据报,除非被配置为路由器。配置方式通常是通过修改内核变量 ip_forwarding
或类似的变量来实现。
- 部分系统(如BSD/386 和 SVR4)仅当该变量非零时才转发数据报。
- SunOS 4.1.x 允许该变量取三个值:
- -1:始终不转发,且该值不可更改。
- 0:默认不转发,但当存在两个或更多接口时,自动启用转发。
- 1:始终转发。
- Solaris 2.x 使用以下三个值:
- 0:始终不转发。
- 1:始终转发。
- 2:当存在两个或更多接口时才转发。
- 早期版本的 4.2BSD 主机默认开启数据报转发,这可能导致配置不当的系统出现问题,因此现在大多数系统默认关闭转发功能,除非管理员明确开启。
ICMP 重定向机制
当IP数据报需要由其他路由器转发时,接收路由器会向数据报发送方发送 ICMP 重定向差错报文。
示例:
- 主机向默认路由器 R1 发送一个 IP 数据报。
- R1 收到数据报后,查询路由表,发现下一跳路由器为 R2。
- R1 将数据报发送给 R2 时,发现发送接口与接收接口相同(即主机、R1 和 R2 位于同一局域网)。
- R1 向主机发送 ICMP 重定向报文,告知其后续将数据报直接发送给 R2,而非 R1。
图示:
主机 ----> R1 ----> R2 ----> 最终目标
↑ |
| |
+-----------+
ICMP 重定向
结论:
ICMP 重定向机制通过告知主机更优的路由选择,从而优化网络流量。
暂无评论