免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: Godbach
打印 上一主题 下一主题

关于构造Http Response包的问题 [复制链接]

论坛徽章:
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
11 [报告]
发表于 2008-09-04 13:53 |只看该作者
原帖由 ShadowStar 于 2008-9-4 13:13 发表


不一定会死,但是要是put到end外面就挂了

tail到end还是有一些空间的


多谢。那也就是如果tail只要不超过end,还是可以进行调整的,对吗?

论坛徽章:
0
12 [报告]
发表于 2008-09-04 14:10 |只看该作者
原帖由 Godbach 于 2008-9-4 13:53 发表


多谢。那也就是如果tail只要不超过end,还是可以进行调整的,对吗?


是的

不过要注意一下调用的发送函数,要是直接用dev_queue_xmit的话,需要skb_push

论坛徽章:
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
13 [报告]
发表于 2008-09-04 14:23 |只看该作者
原帖由 ShadowStar 于 2008-9-4 14:10 发表


是的

不过要注意一下调用的发送函数,要是直接用dev_queue_xmit的话,需要skb_push


是吗,我在测试时,接收到SYN包,回应SYN+ACK包,没有使用skb_push。只是直接修改了MAC层的源与目的MAC

论坛徽章:
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
14 [报告]
发表于 2008-09-04 14:26 |只看该作者
这个函数是用来调整data和tail空间大小的吧

论坛徽章:
0
15 [报告]
发表于 2008-09-04 14:31 |只看该作者
原帖由 Godbach 于 2008-9-4 14:23 发表


是吗,我在测试时,接收到SYN包,回应SYN+ACK包,没有使用skb_push。只是直接修改了MAC层的源与目的MAC


netif_receive_skb时,skb->data指向iph,而不是mac。

dev_queue_xmit从skb->data开始发送数据。

skb_push改data,put改tail

论坛徽章:
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
16 [报告]
发表于 2008-09-04 14:40 |只看该作者
dev_queue_xmit从skb->data开始发送数据。


多谢。当我调用dev_queue_xmit时,skb->data是否需要指向mac,我之前测试方法是,在调用该函数前,skb->data指向了mac,同时修改了skb->len.

skb_push改data,put改tail


我现在的应用应该是修改应用层的数据内容,数据内核比接收到数据包的内容少,也就是data和tail之间的大小变小了,兄台的意思是这里调用skb_put函数来实现吗

我查了一下这个函数,作用是向一个报文的当前数据区的末尾追加数据

论坛徽章:
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
17 [报告]
发表于 2008-09-04 14:42 |只看该作者
/**
*        skb_put - add data to a buffer
*        @skb: buffer to use
*        @len: amount of data to add
*
*        This function extends the used data area of the buffer. If this would
*        exceed the total buffer size the kernel will panic. A pointer to the
*        first byte of the extra data is returned.
*/

2.4的内核中是这样解释这个函数的

论坛徽章:
0
18 [报告]
发表于 2008-09-04 15:08 |只看该作者
原帖由 Godbach 于 2008-9-4 14:40 发表


多谢。当我调用dev_queue_xmit时,skb->data是否需要指向mac,我之前测试方法是,在调用该函数前,skb->data指向了mac,同时修改了skb->len.



我现在的应用应该是修改应用层的数据内容,数据内核比接 ...


调用dev_queue_xmit前当然需要将data指到mac

用skb_push和skb_put操作起来更简单些, 但是实际和你手动设定data和len是一样效果。

论坛徽章:
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
19 [报告]
发表于 2008-09-04 15:16 |只看该作者
调用dev_queue_xmit前当然需要将data指到mac


是的,这个地方我也正是这样处理的。

用skb_push和skb_put操作起来更简单些, 但是实际和你手动设定data和len是一样效果。


我这里是并不是扩充skb的数据空间,而是减小,skb中提供了相关的API实现吗,skb_push是调整data指针使数据空间变大,skb_put是调整tail指针,使数据空间变大。

总之,都是让数据空间变大的,而skb_pull是通过调整data指针使数据空间变小的。

论坛徽章:
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
20 [报告]
发表于 2008-09-04 15:26 |只看该作者
内核中还是有实现截取skb为固定长度的函数:
skb_trim:

/**
*        skb_trim - remove end from a buffer
*        @skb: buffer to alter
*        @len: new length
*
*        Cut the length of a buffer down by removing data from the tail. If
*        the buffer is already under the length specified it is not modified.
*/
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP