HTTP数据特征分析方法及系统与流程

文档序号:12278310阅读:284来源:国知局

本发明涉及数据特征分析方法及系统,尤其是HTTP数据特征分析方法及系统。



背景技术:

深度报文检测技术(即Deep Packet Inspection,以下简称DPI),是一种面向应用层分析的流量分析检测技术,DPI技术已成为高端网络设备的标准配置,用于对网络流量的精细化控制和分析。

但是由于硬件性能、功能适配、系统架构等因素的制约,DPI一直无法在为数众多的低端网络设备(如家庭路由、商业WIFI、瘦AP等)中广泛使用,这主要是由于传统DPI技术在进行数据解析时多不关心上层应用的具体数据结构,对于来源数据均从数据的头部开始逐个字节扫描,直到数据结尾或指定的字节数,进而从扫描的数据中判断是否与数据指纹库相匹配,以此获得对来源数据的识别。

而从数据首字节开始扫描,整个过程对系统资源要求高,造成DPI技术只能应用于资源较充裕的大型网络设备,而对如家庭网关、商业WiFi类等小型网络设备无法使用,从而导致面向广大终端用户的高级流量优化和服务提升的缺失,因此有必要实现能适配于低端网络设备的深度报文检测技术。

另外,由于目前互联网数据,特别是移动互联网数据80%以上为基于HTTP协议的应用数据,因此对HTTP协议的深度解析会极大影响DPI的性能消耗及识别能力。

而为了能够实现性能的兼顾,在进行数据扫描时往往无法做到全量数据覆盖,特别是存在HTTP协议数据的无法全覆盖的问题,因此会增加特征误判、漏判的风险,使得应用的识别能力下降。



技术实现要素:

本发明的目的就是为了解决现有技术中存在的上述问题,该项技术主要是利用HTTP协议数据具有严格的格式规范要求以及目前主流互联网应用以其为宿主协议的特性来达到对DPI技术的性能优化及应用识别能力提升的目的,从而提供一种HTTP数据特征分析方法及系统。

本发明的目的将通过以下技术方案得以实现:

HTTP数据特征分析方法,其特征在于:包括如下步骤:

S1,接收注入的互联网数据,判断注入的互联网数据是否为HTTP数据;

S2,当判断注入的互联网数据不是HTTP数据时,使所述互联网数据进入DPI引擎进行深度包特征检测;

S3,当判断注入的互联网数据是HTTP数据时,识别出HTTP数据的体域及头部;

S4,使体域不做分段解析直接进入所述DPI引擎进行深度包特征检测;

S5,使头部进入HTTP_DPI引擎中进行解析,所述HTTP_DPI引擎将头部划分成若干指针结构体,按指针结构体独立并行解析,并在匹配到特征指纹库后,将与特征指纹库匹配的数据标记为特征指纹所示的应用。

优选的,所述的HTTP数据特征分析方法,其中:所述S1步骤包括如下过程:判断接收到的数据流是否为TCP数据,如果是,则检查其目的端口是否为80;如果是,则依据RFC 2616标准对应用层数据进行数据包拆解,判断其数据包中是否包含HTTP的请求方法,如果包含,则标记该数据流为HTTP数据流;否则,认定该数据流是非HTTP数据流。

优选的,所述的HTTP数据特征分析方法,其中:在所述S5步骤中所述HTTP_DPI引擎对HTTP头部的解析包括如下过程:

S51,所述HTTP_DPI引擎将HTTP头部中的各个头域独立存储,并给每个头域分配一个指针结构体(数据单元);

S52,所述HTTP_DPI引擎对指针结构体(数据单元)进行扫描,并操作多个指针结构体(数据单元)同时偏移,以对多个头部结构进行并行解析;

S53,将扫描得到的指针结构体(数据单元)的数据与特征指纹库进行匹配查找,若可查询到与该数据相吻合的特征指纹,则定义该指针结构体(数据单元)为特征指纹,若获取的特征指纹可唯一指示一个实际应用时即定义该数据流为所述实际应用;若不能,则等待该数据流其他数据单元的特征指纹,然后合并查找是否存在组合特征;若存在,则该数据流定义为组合特征所示的应用,若不存在,则该数据流定义为未被识别的应用。

优选的,所述的HTTP数据特征分析方法,其中:所述HTTP_DPI引擎的数据匹配算法包括HTTP报文单次扫描多次匹配算法。

优选的,所述的HTTP数据特征分析方法,其中:根据RFC规定,将HTTP数据的头部划分成若干指针结构体,针对每个指针结构体均建立独立的指纹匹配DFA图,将若干指针结构体的指纹匹配DFA图集合形成特征指纹库。

优选的,所述的HTTP数据特征分析方法,其中:所述应用指纹库生成算法包括稀疏矩阵的有限状态机算法。

HTTP数据特征分析系统,包括:DPI引擎及HTTP_DPI引擎,还包括依次通信的互联网数据识别单元、非HTTP数据处理单元、HTTP数据识别单元、体域处理单元及头部处理单元;

所述互联网数据识别单元用于接收注入的互联网数据,并判断注入的互联网数据是否为HTTP数据;

所述非HTTP数据处理单元与所述DPI引擎通信,其用于当判断注入的互联网数据不是HTTP数据时,使注入的互联网数据进入DPI引擎进行深度包特征检测;

所述HTTP数据识别单元用于当判断注入的互联网数据是HTTP数据时,识别出HTTP数据的体域及头部;

所述体域处理单元与所述DPI引擎通信,期用于使识别出的体域不做分段解析直接进入所述DPI引擎进行深度包特征检测;

所述头部处理单元与所述HTTP_DPI引擎进行通信,其用于使识别出的头部进入HTTP_DPI引擎中进行解析,所述HTTP_DPI引擎将头部划分成若干指针结构体,按指针结构体独立并行解析,并在匹配到特征指纹库后,将与特征指纹库匹配的数据标记为特征指纹所示的应用。

本发明技术方案的优点主要体现在:

本发明的方法设计精巧,过程简单,通过算法的改进及识别过程的优化,能够有效降低传统DPI识别技术对系统资源的强消耗和高依赖性;同时能够有效的覆盖全部数据,特别是HTTP协议数据,降低了特征误判、漏判的风险,提高了应用的识别能力。

具体实施方式

本发明揭示的HTTP数据特征分析方法,其特征在于:包括如下步骤:

S1,接收注入的互联网数据,判断注入的互联网数据是否为HTTP数据;

HTTP数据流作为一种常见的应用层数据,具有明显的特征标识,HTTP数据采用目的端口为80的TCP流进行传输,同时根据HTTP RFC的相关规定其数据流分为请求和应答,HTTP请求数据结构分为Head Domain和Body Domain,其中Head Domain中包含HTTP的请求方法、请求URI、请求域名等信息,因此,我们对监控到的TCP数据流进行数据包解析,通过判断其端口、数据结构以判断其是否为HTTP数据。

具体的判断过程如下:判断接收到的数据流是否为TCP数据,如果是,则检查其目的端口是否为80;如果是,则依据RFC 2616标准对应用层数据进行数据包拆解,判断其数据包中是否包含HTTP的请求方法,如果包含,则标记该数据流为HTTP数据流;否则,认定该数据流是非HTTP数据流。

S2,当判断注入的互联网数据不是HTTP数据时,使所述互联网数据进入DPI引擎进行深度包特征检测,此处,所述DPI引擎的工作原理及实现机制非本专利要保护的重点,在此不再赘述;而所述DPI引擎对互联网数据处理后,可能产生两种结果:1.可识别出数据的具体应用,如识别出某互联网数据对应的应用为微信;2.无法识别出互联网数据的具体应用,则以二层数据协议的形式存在。

S3,当判断注入的互联网数据是HTTP数据时,识别出HTTP数据的体域及头部(头域);此处,HTTP协议的头域(Head Domain)及体域(Body Domain)在RFC 2616中有明确标准规定,此内容为行业规范,非本专利的保护重点,凡是能够实现HTTP数据的体域及头部识别的任何方法都是可行的,在此不再赘述。

S4,使体域不做分段解析直接进入所述DPI引擎进行深度包特征检测。此处HTTP数据中体域的处理方式同DPI引擎的数据处理方法,不再赘述。

S5,使头部进入HTTP_DPI引擎中进行解析,所述HTTP_DPI引擎将头部划分成若干指针结构体,按指针结构体独立并行解析,并在匹配到特征指纹库后,将与特征指纹库匹配的数据标记为特征指纹所示的应用。

根据RFC 2616对HTTP协议的定义,HTTP数据的每个头域由域名、冒号(:)和域值三部分组成,以\r\n作为结尾,整个HTTP头以一个空行加\r\n结束;每个域值又可根据不同规范,划分出其数据单元,HTTP_DPI引擎即以每个数据单元为原子,进行数据匹配和偏移。

依据上述原理,所述HTTP_DPI引擎对HTTP头部的解析过程如下:

S51,所述HTTP_DPI引擎将HTTP头部中的各个头域独立存储,并给每个头域分配一个指针结构体(数据单元);

S52,所述HTTP_DPI引擎对指针结构体(数据单元)进行扫描,并操作多个指针结构体同时偏移,其中“偏移”即当扫描某一数据单元首字符不匹配时,立即跳越整个数据单元,进入下个数据单元的扫描匹配,此方法的最大好处在于可以同时并行处理多个数据单元,从而实现以对多个头部结构进行并行解析,执行效率高。

S53,将扫描指针结构体(数据单元)得到的指针结构体(数据单元)的实际数据作为样本,与特征指纹库进行匹配查找,若可查询到与该数据相吻合的特征指纹,则定义该指针结构体(数据单元)为特征指纹,若获取的特征指纹可唯一指示一个实际应用时即定义该数据流为所述实际应用;若不能,则等待该数据流其他数据单元的特征指纹,然后合并查找是否存在组合特征;若存在,则该数据流定义为组合特征所示的应用,若不存在,则该数据流定义为未被识别的应用。

并且,在S5步骤之前还包括S6步骤:根据RFC规定,将HTTP数据的头部划分成若干指针结构体(数据单元),针对每个指针结构体(数据单元)均建立独立的指纹匹配DFA图,所述指纹匹配DFA图是指对每个特征标识建立索引,每个指针结构体的指纹匹配DFA图中的元素组合成每个指针结构体自身的特征指纹,每个指针结构体的指纹匹配DFA可能是某个应用的指纹匹配DFA图,也可能是该应用的指纹匹配DFA图的一个组成部分,若干(可能为一个,也可能为多个)指针结构体的特征指纹组合能够形成某种应用的指纹匹配DFA图,即该应用的特征指纹,将若干指针结构体的指纹匹配DFA图集合形成特征指纹库。

本发明的方法通过算法改进,能够实现100Mbps流量情况下,内存占用小于10M;CPU占用:在15%以下。

其核心算法包含如下:

1、稀疏矩阵有限状态机算法

该项技术主要采用基于稀疏矩阵的有限状态机算法,在充分压缩存储占用的情况下,通过状态关联实现报文特征的一次匹配,保证应用识别的性能不随支持应用数量的增加而线性下降;所述稀疏矩阵的有限状态机算法主要用于所述特征指纹库生成。

2、HTTP报文单次扫描多次匹配算法

鉴于目前绝大部分互联网应用都是基于HTTP的传输方式,引擎设计上采用HTTP报文单次扫描多次匹配的模式,在实现多项功能的同时有效提高引擎的工作效率;所述HTTP报文单次扫描多次匹配算法是所述HTTP_DPI引擎的数据匹配的主要算法。

本发明进一步揭示的HTTP数据特征分析系统,包括:DPI引擎及HTTP_DPI引擎,还包括依次通信的互联网数据识别单元、非HTTP数据处理单元、HTTP数据识别单元、体域处理单元及头部处理单元;

所述互联网数据识别单元用于接收注入的互联网数据,并判断注入的互联网数据是否为HTTP数据;

所述非HTTP数据处理单元与所述DPI引擎通信,其用于当判断注入的互联网数据不是HTTP数据时,使注入的互联网数据进入DPI引擎进行深度包特征检测;

所述HTTP数据识别单元用于当判断注入的互联网数据是HTTP数据时,识别出HTTP数据的体域及头部;

所述体域处理单元与所述DPI引擎通信,期用于使识别出的体域不做分段解析直接进入所述DPI引擎进行深度包特征检测;

所述头部处理单元与所述HTTP_DPI引擎进行通信,其用于使识别出的头部进入HTTP_DPI引擎中进行解析,所述HTTP_DPI引擎将头部划分成若干指针结构体,按指针结构体独立并行解析,并在匹配到特征指纹库后,将与特征指纹库匹配的数据标记为特征指纹所示的应用。

本发明尚有多种实施方式,凡采用等同变换或者等效变换而形成的所有技术方案,均落在本发明的保护范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1