c - 为什么sk_buff在 h 联合中有一个 ip 标头指针 (ipipphdr),而在 nh 联合中有一个常规 i



这更像是一个好奇的问题。我一直在浏览 linux 网络内核,并注意到sk_buff在单独的联合中有两个指向 ipv4 标头的指针。这背后的原因是什么?是否存在数据包可能具有多个 IP 标头的事件?

编辑这是我看到它的链接。我在其他地方也见过这个。sk_buff

00202         union {
00203                 struct tcphdr   *th;
00204                 struct udphdr   *uh;
00205                 struct icmphdr  *icmph;
00206                 struct igmphdr  *igmph;
00207                 struct iphdr    *ipiph;
00208                 struct ipv6hdr  *ipv6h;
00209                 unsigned char   *raw;
00210         } h;
00211 
00212         union {
00213                 struct iphdr    *iph;
00214                 struct ipv6hdr  *ipv6h;
00215                 struct arphdr   *arph;
00216                 unsigned char   *raw;
00217         } nh;

提前致谢

h

传输层的标头。 nh是网络层的标头。

但在原始套接字中,没有传输协议,因此标头是网络层标头。

相关内容

最新更新