Writer: admin Time:2023-08-01 Browse:179
lroom中用户数据块地域:skb_put用于点窜指向数据区末端的指针tail:
可能看到tail指针的移动是蔓延数据地区,即数据区向下伸展len字节,并刷新数据区长度len。
增加headroom地区的协议头:skb_push函数用于转变data指针,填补头部契约,与skb_reserve()相像,也并没有确实向数据缓存区中填充数据,而可是变更数据缓存区的头指针data。数据由其他们函数复制到数据缓存区中。函数如下:
如下两张图阔别是由传输层、搜集层,数据包向下传递时data指针改观,举办头部和议的封装。
可能看到在数据包封装的经过中,每一层改观data指针进行数据报头的封装。
数据报文解封装,打消协议头:skb_pull经历将data指针向下移动,举办数据报文的解封装,函数如下所示:
如下图所示,在收包历程上,向上层和议,如下汇集层向传输层传送的时刻,挪用skb_pull举办数据包的解封装。
以上便是struct sk_buff的四大指针的关连驾御,始末相识可得:
data指针在数据包头部封装息争封装的过程中改观,指向各层的同意头,skb_push函数将data的指向,向低地址迁移(进步),完工协议头空间的攻下,skb_pull函数将data的指向,向高地点转移(向下),完工同意头的解封装。
tail指针在增加使用层用户缓冲数据时蜕变,skb_put函数将该指针向高地方搬动(向上),竣工用户数据空间的霸占。
电话:400-123-4567
Email: admin@baidu.com
传真:+86-123-4567
手机:13888888888