[发明专利]网络数据包的过滤方法和装置有效
申请号: | 201310538417.9 | 申请日: | 2013-11-04 |
公开(公告)号: | CN104618170B | 公开(公告)日: | 2019-02-26 |
发明(设计)人: | 陈贵根 | 申请(专利权)人: | 腾讯科技(北京)有限公司 |
主分类号: | H04L12/26 | 分类号: | H04L12/26 |
代理公司: | 北京康信知识产权代理有限责任公司 11240 | 代理人: | 吴贵明;李志刚 |
地址: | 100080 北京市海淀区海淀*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 网络 数据包 过滤 方法 装置 | ||
本发明公开了一种网络数据包的过滤方法和装置。该网络数据包的过滤方法包括:获取数据包,其中,数据包包括定长部分和变长部分;获取预先设定的过滤语句;以及通过过滤语句对数据包执行过滤计算,其中,过滤语句中存在可偏移读点,通过执行可偏移读点跳过数据包的定长部分和变长部分以对数据包执行过滤计算。通过本发明,能够解决现有技术中过滤数据包容易出错的问题。
技术领域
本发明涉及数据处理领域,具体而言,涉及一种网络数据包的过滤方法和装置。
背景技术
在Linux后台用户数据包协议(User Datagram Protocol,简称UDP)服务的开发、调试、维护过程中,常常需要采用抓包来定位问题。目前被广泛使用的是tcpdump命令行工具,一句简单的“tcpdump-Xlns0”就可以抓包,但是该方案在抓包时会抓获网卡的全部数据包,这在大部分场合下不是所期望的。在大部分场合下,需要抓获指定条件的数据包,即抓包过滤。如需要抓取UDP数据包中应用层数据第1字节为0xa的包,则可以使用“tcpdump-Xlns0udp[8:1]=0xa”来完成,其中的“udp[8:1]=0xa”就是柏克莱封包过滤器(BerkeleyPacket Filter,简称BPF)过滤表达式,使用该表达式可以过滤掉不关注(不符合条件)的数据包,从而能够快速定位问题。其中,采用“udp[x:y]”的语法来访问数据包的内容是从UDP头部开始,将第x字节作为起点、长度为y字节视为一个整数(即网络序)并读取它的值,其中y只能为1、2、4,分别对应8位整数、16位整数、32位整数。
对于抓包而言,执行抓包的大部分数据包并非是定长结构的,例如,对于微博平台使用的CS协议,其格式如下:
定长部分A+变长部分B+定长部分C+变长部分D+定长部分E+包体。
定长部分A为28字节。
变长部分B最小长度为4字节,其中的第3、4字节为整个变长部分B的长度,其中,第3、4字节为网络序的16位无符号整数。
定长部分C为10字节。
变长部分D最小长度为2字节,其中第1、2字节为整个变长部分D的长度减2,即为其后面的变长长度,该值可能为0。其中,第1、2字节为网络序的16位无符号整数。
定长部分E为12字节。
对于响应包,包体的第一个字节为返回码,返回0表示响应正常,返回非0表示响应异常。
若要抓获响应异常的数据包则需要如下的BPF表达式:
udp[8+28+udp[8+28+2:2]+10+2+udp[8+28+udp[8+28+2:2]+10:2]+12:1]!=0
其中,“8+28”是计算UDP头部和定长部分A的长度,紧跟的“udp[8+28+2:2]”是计算变长部分B的长度,紧跟的“10”是定长部分C的长度,紧跟的“2+udp[8+28+udp[8+28+2:2]+10:2]”是计算变长部分D的长度,再紧跟的“12”是定长部分E的长度,跳过前面全部,最后访问包体的第1字节并判断不为0。
由于BPF表达式是无状态的表达式,因此对于变长部分D的计算需要依赖于变长部分B的长度和定长部分A、C的长度。从上述表达式可以看出变长部分D的计算式中包含了计算变长部分B的子计算式以及定长部分A、C的长度。对BPF表达式而言,若数据包中有n个变长部分。令A1~An分别表示每个变长部分间的定长值(可能小于等于0),如A2表示第1个变长部分结束到第2个变长部分开始的长度。令B1~Bn分别表示每个变长部分中表示其长度的字段的字节数(一般为1,2,4),令X1~Xn分别表示每个变长部分的长度,则有:
X1=[A1:B1]
X2=[A1+X1+A2:B2]=[A1+[A1:B1]+A2:B2]
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于腾讯科技(北京)有限公司,未经腾讯科技(北京)有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201310538417.9/2.html,转载请声明来源钻瓜专利网。
- 上一篇:用于安全的远程访问的系统和方法
- 下一篇:主备存储节点切换方法和系统