免费注册 查看新帖 |

Chinaunix

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

关于构造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
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-09-04 11:26 |只看该作者 |倒序浏览
当我判断到Http Get请求时,我要直接给请求方发送一个Response包。这里涉及到构造数据包的问题。

如果采用修改请求包的方式,要调整的地方:
IP层,源与目的地址,TTL
TCP层,源与目的端口号,SEQ和ACK number
应用层的话,就是构造出来一个Response包。如果基于原先请求包的修改,在应用层数据部分的长度肯定是要发生变化了,这个时候,我还能用直接修改的方法,还是alloc_skb的方法呢?

论坛徽章:
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 [报告]
发表于 2008-09-04 11:52 |只看该作者
可能要修改tail指针,以及skb->len,下午测试一下

论坛徽章:
0
3 [报告]
发表于 2008-09-04 12:41 |只看该作者
我觉得直接修改原来的包就行,改一下 skb->len 等相应长度参数(IP 头的、TCP 头的),重新计算校验和
IP 的原目的要交换,MAC 的原目的也要交换,skb->data 重新指向 MAC 头,skb->len 要加上 MAC 头的长度以及 payload 变化后的增量

论坛徽章:
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
4 [报告]
发表于 2008-09-04 12:52 |只看该作者
原帖由 platinum 于 2008-9-4 12:41 发表
我觉得直接修改原来的包就行,改一下 skb->len 等相应长度参数(IP 头的、TCP 头的),重新计算校验和
IP 的原目的要交换,MAC 的原目的也要交换,skb->data 重新指向 MAC 头,skb->len 要加上 MAC 头的长度以 ...


多谢白金兄指点啊。那payload变化了,是不是tail也要发生变化呢?

论坛徽章:
0
5 [报告]
发表于 2008-09-04 12:57 |只看该作者
要是payload比原来得长得话,需要重新alloc_skb吧

论坛徽章:
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
6 [报告]
发表于 2008-09-04 13:03 |只看该作者
原帖由 qps104 于 2008-9-4 12:57 发表
要是payload比原来得长得话,需要重新alloc_skb吧


skb分配的时候是有固定大小的吧,一般是可以容纳下一个包的。Payload变化的话,估计调整tail指针就可以了

论坛徽章:
0
7 [报告]
发表于 2008-09-04 13:09 |只看该作者

回复 #6 Godbach 的帖子

不是哦。你去访问下skb->tail后面得地址机器肯定死掉

论坛徽章:
0
8 [报告]
发表于 2008-09-04 13:12 |只看该作者
看你是在哪个处理流程中做了。

直接修改原始skb,再发送出去的话,例如:
rcv ()
{
send()
return
}
容易引起系统崩溃,因为dev_queue_xmit最后会kfree_skb,所以rcv之后的处理流程就会handle NULL pointer。

另外skb数据空间的大小不是固定,是根据网卡接受的大小分配的,所以skb_put前要检查tailroom

论坛徽章:
0
9 [报告]
发表于 2008-09-04 13:13 |只看该作者
原帖由 qps104 于 2008-9-4 13:09 发表
不是哦。你去访问下skb->tail后面得地址机器肯定死掉


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

tail到end还是有一些空间的

论坛徽章:
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
10 [报告]
发表于 2008-09-04 13:52 |只看该作者
原帖由 ShadowStar 于 2008-9-4 13:12 发表
看你是在哪个处理流程中做了。

直接修改原始skb,再发送出去的话,例如:
rcv ()
{
send()
return
}
容易引起系统崩溃,因为dev_queue_xmit最后会kfree_skb,所以rcv之后的处理流程就会handle NULL po ...


我这里接受数据包之后,修改之后然后发出去,这样就结束了,rcv之后的流程不会处理这个数据包了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP