Linux内核--网络内核实现分析(一)--与sk_buff有关的几个重要的数据结构

2014-11-24 10:19:20 · 作者: · 浏览: 0

本文分析基于Linux Kernel 3.2.1


几个月之前做了关于Linux内核版本1.2.13网络栈的结构框架分析并实现了基于Netfilter的包过滤防火墙,这里以内核3.2.1内核为例来进一步分析,更全面的分析网络栈的结构。


1、先说一下sk_buff结构体


这个结构体是套接字的缓冲区,详细记录了一个数据包的组成,时间、网络设备、各层的首部及首部长度和数据的首尾指针。


下面是他的定义,挺长


可以看到新版本内核中发生了很多变化,其中数据包的首部在早期版本是以union的形式定义的,例如mac_header的定义方式如下:


这里是以指针的形式给出的