linux 内核的skb_buf数据结构中
head与end指针指向分配的skb_buf的缓冲区的首地址和尾地址。
data和tail指针指向分配的skb_buf的缓冲区中的实际的data数据的首地址和尾地址。
《深入理解linux网络技术》 -P37
当调用skb_push函数准备向skb_buf中添加数据时,data指针会向前移动想要添加数据大小的地址。
skb_buf.data指向的地址就是数据包中数据的首地址(在IP层,data指向IP数据包的IP头首地址。在传输层,data指向TCP或UDP头首地址)。可以通过
char *data = skb_buf.data;
如图所示:此时*data指向的地址上的值为0x45,data[28]的值为0x00,data[36]的值也为0x00。