免费注册 查看新帖 |

Chinaunix

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

如何判断数据包为http协议的GET请求包? [复制链接]

论坛徽章:
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-08-28 17:03 |只看该作者
原帖由 qtdszws 于 2008-8-28 16:47 发表
放入内核?那你可以参考v2.4中khttpd


对,我这个要在内核实现。LS是指2.4内核中的这个文件吗

论坛徽章:
3
金牛座
日期:2014-06-14 22:04:062015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:45
12 [报告]
发表于 2008-08-28 17:33 |只看该作者
原帖由 Godbach 于 2008-8-27 17:54 发表
rt.偶想对http协议中的GET请求的数据包做自己的处理,因此涉及到如何判断为该种类型的数据包。
这里涉及到两个地方需要判断:
1. 如何判断是http协议;
2. 如何判断是Get请求。

大家有什么思路,讨论一下啊。


应用层协议数据分析,分析关键字。单从连接的五元组来看,似乎分析比较困难。

论坛徽章:
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-08-29 14:20 |只看该作者
原帖由 dreamice 于 2008-8-28 17:33 发表


应用层协议数据分析,分析关键字。单从连接的五元组来看,似乎分析比较困难。


我这部分功能准备在内核中实现,如果分析应用数据,是不是会导致内核模块的效率变低啊

论坛徽章:
3
金牛座
日期:2014-06-14 22:04:062015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:45
14 [报告]
发表于 2008-08-29 14:30 |只看该作者
原帖由 Godbach 于 2008-8-29 14:20 发表


我这部分功能准备在内核中实现,如果分析应用数据,是不是会导致内核模块的效率变低啊


肯定对效率是有影响的,而且本身没有先兆特征,等于说每一个包都要去分析,网络流量大的时候,就可想而知了。

[ 本帖最后由 dreamice 于 2008-8-29 15:04 编辑 ]

论坛徽章:
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
15 [报告]
发表于 2008-08-29 14:47 |只看该作者
原帖由 dreamice 于 2008-8-29 14:30 发表


肯定对效率是有影响的,而且本身没有先兆特征,等于说没有一个包都要去分析,网络流量大的时候,就可想而知了。


看来,有可能还要加一些状态分析啊

论坛徽章:
2
巨蟹座
日期:2014-03-09 21:37:25射手座
日期:2014-04-16 16:23:03
16 [报告]
发表于 2008-09-01 19:50 |只看该作者

回复 #15 Godbach 的帖子

1.先分析目的端口号是否为80,绝大多数http协议都是用这个端口。
2.再分析TCP协议的状态是否是在三次握手以后。
3.最后分析应用层关键字,比如读出的第一行数据是否是:GET / HTTP/1.1,这个可以参考RFC文档中关于http协议的描述。

论坛徽章:
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-01 20:18 |只看该作者
原帖由 kwest 于 2008-9-1 19:50 发表
1.先分析目的端口号是否为80,绝大多数http协议都是用这个端口。
2.再分析TCP协议的状态是否是在三次握手以后。
3.最后分析应用层关键字,比如读出的第一行数据是否是:GET / HTTP/1.1,这个可以参考RFC文档中 ...


多谢LS的,说的很详细。
对于第1点,有可能再加上8080的分析。
对于第3点,我觉得人家未必请求的一定是缺省的页,所以还是判定GET 以及 HTTP/1.1应该就可以了吧

论坛徽章:
0
18 [报告]
发表于 2008-09-02 10:34 |只看该作者
其实现在性能是一个大问题,这样对每个包都分析应用层关键字对性能有很大损失。
个人愚见:
    用类似于conntrack,基于连接的思想,对每个连接开始的N个包(N<20)进行应用层匹配检查,然后其余的包只检查源目的ip、port,就可以看作同一条连接。这样可以优化应用层检查的性能损失。

我没试过,只是个人觉得应该可以这样。
至于是Get还是Post,暂时还没想到可以优化性能的辙

欢迎大家拍砖

论坛徽章:
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-02 10:48 |只看该作者
原帖由 jaycu 于 2008-9-2 10:34 发表
其实现在性能是一个大问题,这样对每个包都分析应用层关键字对性能有很大损失。
个人愚见:
    用类似于conntrack,基于连接的思想,对每个连接开始的N个包(N


也就是需要保存一些链接的状态,如果刚开始的连接通过了,以后查询状态就可以了。如果状态中没有的,在经过自己的代码进行处理。。

论坛徽章:
3
金牛座
日期:2014-06-14 22:04:062015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:45
20 [报告]
发表于 2008-09-02 11:08 |只看该作者
原帖由 jaycu 于 2008-9-2 10:34 发表
其实现在性能是一个大问题,这样对每个包都分析应用层关键字对性能有很大损失。
个人愚见:
    用类似于conntrack,基于连接的思想,对每个连接开始的N个包(N


实际的很多协议分析的产品都是这么做的。在没有识别之前,利用应用层的关键字进行判断,当识别出来后,就添加相应的conntrack连接,这样以后只需要在内核识别就可以了,而不需要每次都分析应用层数据来判断。可以说,应用层的协议通过数据关键字判断分析,优先级放到最低,如果netfilter能够通过五元组识别了,那么就无需分析应用层数据了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP