网络内存管理
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缓冲区。