sk_buff 是在 Linux 内核中的数据结构,常用于网络子系统中以管理和传输网络数据包。`sk_buff`(Socket Buffer)是一个复杂的数据结构,它涵盖了数据包的相关信息,例如数据包的头部、有效载荷和各种元数据。以下是一些关于 sk_buff 的重要信息:
1. 结构体定义:`sk_buff` 是一个 C 语言的结构体,定义在内核源码中的 linux/skbuff.h 文件中。它包含了大量的字段,用于存储与数据包相关的信息。
struct sk_buff {
/* These two members must be first. */
struct sk_buff *next;
struct sk_buff *prev;
struct sock *sk;
ktime_t tstamp;
struct net_device *dev;
char cb[48] __aligned(8);
unsigned long _skb_refdst;
void (*destructor)(struct sk_buff *skb);
/* More fields... */
};
2. 数据管理:`sk_buff` 的核心是一个可变大小的数据缓冲区,用于存储实际的网络数据。通