1.简介
目前正在学习linux内核,因为项目需要主要学习linux网络技术。
在linux内核TCP/IP实现中,需要对数据报进行头尾部的添加和移除,并且还需要在多层的网络结构中进行传递。为了应对这些需求,在linux网络系统中有一个被称为sk_buff的结构体。在该结构体中,存在的大量的结构体指针变量,这也是为了在不同网络层直接相互传递时,复杂的缓存操作就变为了修改指针的操作,从而提高了内核的效率。
本次使用的kernel(内核)版本为linux-2.6.32,不同版本的sk_buff略有区别。
2.sk_buff成员介绍
struct sk_buff {
/* These two members must be first. */
struct sk_buff *next;
struct sk_buff *prev;
首先介绍的sk_buff中的两个成员指针:*next和*prev。从指针的类型和命名可以容易得出该成员的功能。