IPv6 网络数据包处理机制详解
1. IPv6 数据包接收与转发概述
在 IPv6 网络中,数据包的处理主要分为本地交付和转发两种方式。本地交付通过 ip6_input() 和 ip6_input_finish() 方法实现,而转发则由 ip6_forward() 方法处理。下面将详细介绍这两种处理方式。
1.1 本地交付
本地交付在数据包接收后,经过一些基本检查,会调用 ip6_rcv_finish() 方法,该方法通过 ip6_route_input() 方法在路由子系统中进行查找。在接收单播和组播数据包时, ipv6_rcv() 方法是通用的处理函数。
1.2 转发
IPv6 转发与 IPv4 转发有很多相似之处,但也存在一些细微差异。例如,在 IPv6 中,转发数据包时不计算校验和,因为 IPv6 报头中根本没有校验和字段。下面是 ip6_forward() 方法的详细实现:
int ip6_forward(struct sk_buff *skb)
{
struct dst_entry *dst = skb_dst(skb);
struct ipv6hdr *hdr = ipv6_hdr(skb);
struct inet6_skb_parm *opt = IP6CB(skb);
s
超级会员免费看
订阅专栏 解锁全文
4394

被折叠的 条评论
为什么被折叠?



