免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1708 | 回复: 7
打印 上一主题 下一主题

[网络子系统] 关于linux skb缓冲区 UDP首部位置的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-04-10 13:19 |只看该作者 |倒序浏览
本帖最后由 ykai229 于 2014-04-13 22:03 编辑

按照书上的说法,skb的缓冲结构中,data到tail指向实际数据的开端和尾端,head到end指向已经分配的缓冲区空间和尾端,协议栈各层首部在缓冲区中连续存放(先不考虑对齐)。

1.jpg (93.1 KB, 下载次数: 41)

1.jpg

2.jpg (43.78 KB, 下载次数: 82)

2.jpg

3.jpg (27.09 KB, 下载次数: 44)

3.jpg

4.jpg (55.69 KB, 下载次数: 44)

4.jpg

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
2 [报告]
发表于 2014-04-10 16:26 |只看该作者
回复 1# ykai229

通过 skb 取到 network header,然后header 加上通过 header 中头部的长度,即可取到四层的 header 指针。如果是 UDP 协议的话,就是 UDP header 了。头部就那 8 个 bytes


   

论坛徽章:
0
3 [报告]
发表于 2014-04-10 20:39 |只看该作者
谢谢斑竹的回答,之前写模块都是这样做的,也都没有问题,但是这一次使用的是无线网卡,不知道这个是不是有什么不同,data到tail的大小是20个字节,按理说data+20(IP首部的长度,这里就是20个字节)就是UDP的首部了,但是打印出来的内容和抓包的结果完全对不上啊回复 2# Godbach


   

论坛徽章:
0
4 [报告]
发表于 2014-04-11 10:21 |只看该作者
回复 1# ykai229

skb非线性化引起的,
pskb_may_pull可以搞定。

论坛徽章:
0
5 [报告]
发表于 2014-04-11 10:43 |只看该作者
为什么会非线性化啊,接受到的数据包大小又不可能分片。。。
回复 4# oscarvei


   

论坛徽章:
0
6 [报告]
发表于 2014-04-11 15:28 |只看该作者
收包方向上: 是否线性化跟网卡驱动有关系.跟报文大小没关系

论坛徽章:
0
7 [报告]
发表于 2014-04-11 18:20 |只看该作者
谢谢大神的回复,现在我也是这么猜想的,有没有什么资料有讲这块的知识点呢,网络内幕里面没瞧见呢(看里面的说法感觉都是线性空间)
回复 6# oscarvei


   

论坛徽章:
0
8 [报告]
发表于 2014-04-16 19:09 |只看该作者
回复 7# ykai229

skbuff.c
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP