vimer linux kernel 爱好者

linux 内核栈基础

2016-05-11

网络内存管理

sk_buff

数据包在应用层为data,在TCP为segment, 在IP层为packet,在数据链路层为frame. 这个结构会在各个层次中使用存放接收或者发送的数据

接下来的这张图片说明了调用sk_buff的方式. 图片

图中的data这个指针指向的位置是可变的。它有可能随着报文所处的层次而变动。

图中的h是第四层/传输层,用h表示:在sk_buff结构体中有三个联合体的简写。

nh是第三层/网络层,也就是传说中的IP头,以network header 命名。

mac也就是MAC层的头,这种安排也体现了报文各层头部的逻辑关系。

使用alloc_skb,就创建了一个套接字缓冲区,其实,内核中的很多结构有自己的alloc 可以类比,其他的也是创建了xx缓冲区。


Comments

Content