免费注册 查看新帖 |

Chinaunix

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

[内核模块] 增加SKB缓冲区问题。 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-09-03 11:44 |只看该作者 |倒序浏览
我现在有个问题也是和很多朋友一样子。大概就是修改HTTP的TCP数据包。 skb 的 tailroom够的话我一般可以插入数据然后发送。但是如果想增加tailroom的话就麻烦了。我不知道是用pskb_expand_head好还是用skb_copy_expand。我现在用pskb_expand_head增加了长度。直接是NF_ACCEPT发送出去。出现的问题是说网络帧FCS效验错误。调用dev_queue_xmit发送吧。好像又没收到包。SKB的数据一开始得到的时候他带没带MAC头部的?请高手指教。

论坛徽章:
16
CU十二周年纪念徽章
日期:2013-10-24 15:41:3415-16赛季CBA联赛之广东
日期:2015-12-23 21:21:55青铜圣斗士
日期:2015-12-05 10:35:30黄金圣斗士
日期:2015-11-26 20:42:16神斗士
日期:2015-11-19 12:47:50每日论坛发贴之星
日期:2015-11-18 06:20:00程序设计版块每日发帖之星
日期:2015-11-18 06:20:002015亚冠之城南
日期:2015-11-10 19:10:492015亚冠之萨济拖拉机
日期:2015-10-28 18:47:282015亚冠之柏太阳神
日期:2015-08-30 17:21:492015亚冠之山东鲁能
日期:2015-07-07 18:48:39摩羯座
日期:2014-08-29 23:01:42
2 [报告]
发表于 2014-09-03 12:43 |只看该作者
是不是ip头部检验和没有重新设置

论坛徽章:
6
金牛座
日期:2013-10-08 10:19:10技术图书徽章
日期:2013-10-14 16:24:09CU十二周年纪念徽章
日期:2013-10-24 15:41:34狮子座
日期:2013-11-24 19:26:19未羊
日期:2014-01-23 15:50:002015年亚洲杯之阿联酋
日期:2015-05-09 14:36:15
3 [报告]
发表于 2014-09-03 16:38 |只看该作者
回复 1# bobioo
我现在有个问题也是和很多朋友一样子。大概就是修改HTTP的TCP数据包。 skb 的 tailroom够的话我一般可以插入数据然后发送。但是如果想增加tailroom的话就麻烦了。我不知道是用pskb_expand_head好还是用skb_copy_expand。我现在用pskb_expand_head增加了长度。直接是NF_ACCEPT发送出去。出现的问题是说网络帧FCS效验错误。调用dev_queue_xmit发送吧。好像又没收到包。SKB的数据一开始得到的时候他带没带MAC头部的?请高手指教。

(1)pskb_expand_head使用的时候要非常注意,因为是直接操作源包,如果数据包被多个owner使用,那么直接就panic了。skb_copy_expand相对来说是完全copy一份出来,效率会低一些。
(2)对于tcp协议,修改了内容后,需要修改相应的synseq和ackseq

   

论坛徽章:
0
4 [报告]
发表于 2014-09-03 17:20 |只看该作者
事实上是扩展成功了。但是发送出去的数据用截包软件提示MAC的校验有问题。

论坛徽章:
0
5 [报告]
发表于 2014-09-03 17:22 |只看该作者
我基本上如果不扩展SKB的话是可以修改或者增加 (tailroom够的话)HTTP里面的内容。但我现在想扩展SKB数据后加入一些内容。

论坛徽章:
0
6 [报告]
发表于 2014-09-03 17:24 |只看该作者
基本上如果不扩展的话我已经可以加入少量的内容的。不过没扩展的话 tailroom实在是太小。做不得了什么东西。扩展之后那个包又不是包了。很烦。

论坛徽章:
0
7 [报告]
发表于 2014-09-03 17:29 |只看该作者
(2)对于tcp协议,修改了内容后,需要修改相应的synseq和ackseq
我回去看看。这个问题。

论坛徽章:
0
8 [报告]
发表于 2014-09-03 21:27 |只看该作者
你说的是seq和ack序号吧,那个只是在结束后发送fin包的时候修改。和我说的问题不相关。

论坛徽章:
0
9 [报告]
发表于 2014-09-04 09:27 |只看该作者
昨晚上找到什么问题了。是使用pskb_expand_head之后。之前定义的IP头部的指针和TCP的指针失效了。造成了本来修改的IP长度和IP效验和TCP效验都是原来的。所以传出去的包被丢弃了。

论坛徽章:
0
10 [报告]
发表于 2014-09-05 09:11 |只看该作者
感谢各位朋友。此问题解决了。呵虽然花了点时间不过可以做一些HTTP的窜可以做广告插入之类的开发了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP