gpt4 book ai didi

c - 为什么 sk_buff 在 h union 中有一个 ip 头指针(ipiphdr),在 nh union 中有一个常规 ip 头指针(iphdr)?

转载 作者:行者123 更新时间:2023-11-30 16:50:34 25 4
gpt4 key购买 nike

这更多的是一个好奇心问题。我一直在查看 Linux 网络内核,并注意到 sk_buff 在不同的 union 中有两个指向 ipv4 header 的指针。这背后的原因是什么?是否存在数据包可能具有多个 ip header 的情况?

编辑这是我看到它的地方的链接。我在其他地方也看到过这个。 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 是传输层的 header 。 nh 是网络层的 header 。

但是在原始套接字中,没有传输协议(protocol),因此 header 是网络层 header 。

关于c - 为什么 sk_buff 在 h union 中有一个 ip 头指针(ipiphdr),在 nh union 中有一个常规 ip 头指针(iphdr)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42170382/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com