基于互联网流量的深度包检测方法、系统和存储介质与流程

文档序号:22084194发布日期:2020-09-01 19:50阅读:209来源:国知局
基于互联网流量的深度包检测方法、系统和存储介质与流程

本发明涉及互联网技术领域,尤其是基于互联网流量的深度包检测方法、系统和存储介质。



背景技术:

目前,移动互联网已成为用户使用网络的重要场所。它产生出各种各类的用户app,同时产生大量的用户数据,包括文字,语音,视频等等。作为这些用户流量的通道,运营商如何利用这些流量辨别出具体的业务,挖掘有价值的用户行为等,都存在创造附加价值的巨大的机会。

运营商现有的移动互联网业务识别方法,大多基于tcp包检测技术,需要人工测试得到样本数据报文的识别元素的特征与业务的关联,因此存在以下局限性:

1.现有的业务识别技术耗费的巨大的规则定制和维护成本;因需要对每种业务建立完备的特征关联库,需要靠人工做巨量的业务测试,人力物力和时间成本高;同时,如果业务提供商的服务地址更改或者添加的时候需要更新特征关联库,造成巨大的人力成本。

2.业务识别的粒度大,业务粗糙;现有技术大多都是使用ip地址、端口号port或cdnhost等参数识别互联网业务的,它的特点是粒度比较大,对于要求更细粒度的业务分类缺乏能力。



技术实现要素:

为解决上述技术问题,本发明的目的在于:提供一种基于互联网流量的深度包检测方法、系统和存储介质,降低成本并且实现更细粒度的互联网业务检测。

根据本发明的第一方面,提供了一种基于互联网流量的深度包检测方法,包括:

获取互联网http包的url数据;

构建用于进行url匹配的类三叉搜索树;

基于所述类三叉搜索树对所述url数据进行匹配,生成检测结果;

根据所述检测结果识别互联网业务。

进一步,所述构建用于进行url匹配的类三叉搜索树,包括以下步骤:

确定类三叉搜索树的数据结构;

创建一棵带有root节点的树,该树的三类指针均指向空值;所述三类指针包括trilink指针、linktree指针和dataptr指针;

输入规则字符串以及该规则字符串对应的互联网业务,并确定处理字符的当前位置;

根据所述当前位置,从规则字符串中获取对应位置字符的ascii码值;

根据所述ascii码值新建子节点,以及完成所述三类指针的配置,得到类三叉搜索树。

进一步,所述确定类三叉搜索树的数据结构,包括:

确定trilink指针,所述trilink指针用于根据规则字符串的ascii码索引到相应位置的节点;

确定linktree指针,所述linktree指针用于保存模糊子串的规则子树;

确定dataptr指针,所述dataptr指针用于保存当前规则所对应的互联网业务。

进一步,所述根据所述ascii码值新建子节点,以及完成所述三类指针的配置,得到类三叉搜索树,包括:

判断所述ascii码值是否为预设符号,若是,则新建子节点,并让当前节点的linktree指针指向该新建的子节点,并以该新建的子节点为根,取规则字符串的下一个字符为当前要处理字符;反之,则执行下一步骤;

新建子节点,并让当前节点的trilink指针指向该新建节点,如果当前字符为规则字符串的最后一个字符,则把dataptr指针指向对应的互联网业务。

进一步,所述基于所述类三叉搜索树对所述url数据进行匹配,生成检测结果,包括:

输入url字符串,设置url字符串的当前处理位置为0,以及设置规则树的初始位置为根节点;

获取url字符串当前处理位置字符所对应的ascii码,然后通过ascii码值,从规则树的当前处理节点的trilink指针数组中获取对应的子节点;

判断所述子节点的dataptr指针是否为空,若是,则表示不存在与url字符串对应的互联网业务;反之,则表示存在与url对应的互联网业务;

判断当前处理节点是否存在linktree的节点指针,若是,则执行下一步骤;反之,则生成检测结果;

设置url字符串的下一个字符为当前处理字符,将linktree指向的节点作为根节点,返回执行获取url字符串当前处理位置字符所对应的ascii码,然后通过ascii码值,从规则树的当前处理节点的trilink指针数组中获取对应的子节点的步骤,直至url字符串处理结束。

进一步,所述判断所述子节点的dataptr指针是否为空,若是,则表示不存在与url字符串对应的互联网业务;反之,则表示存在与url对应的互联网业务这一步骤,还包括以下步骤:

确定在先已经存在有旧的互联网业务匹配结果后,执行:

当新的互联网业务匹配结果的权重大于旧的互联网业务匹配结果,则将新的互联网业务匹配结果替换旧的互联网业务匹配结果;

当新的互联网业务匹配结果的权重等于旧的互联网业务匹配结果,判断所述新的互联网业务匹配结果的规则长度是否长于旧的互联网业务匹配结果的规则长度,若是,则将新的互联网业务匹配结果替换旧的互联网业务匹配结果;反之,则不做处理。

根据本发明的第二方面,提供了一种基于互联网流量的深度包检测系统,包括:

获取模块,用于获取互联网http包的url数据;

构建模块,用于构建用于进行url匹配的类三叉搜索树;

匹配模块,用于基于所述url数据对所述url数据进行匹配,生成检测结果;

识别模块,用于根据所述检测结果识别互联网业务。

进一步,所述匹配模块包括:

输入单元,用于输入url字符串,设置url字符串的当前处理位置为0,以及设置规则树的初始位置为根节点;

获取单元,用于获取url字符串当前处理位置字符所对应的ascii码,然后通过ascii码值,从规则树的当前处理节点的trilink指针数组中获取对应的子节点;

第一判断单元,用于判断所述子节点的dataptr指针是否为空,若是,则表示不存在与url字符串对应的互联网业务;反之,则表示存在与url对应的互联网业务;

第二判断单元,用于判断当前处理节点是否存在linktree的节点指针,若是,则执行下一步骤;反之,则生成检测结果;

处理单元,用于设置url字符串的下一个字符为当前处理字符,将linktree指向的节点作为根节点,返回执行获取url字符串当前处理位置字符所对应的ascii码,然后通过ascii码值,从规则树的当前处理节点的trilink指针数组中获取对应的子节点的步骤,直至url字符串处理结束。

根据本发明的第三方面,提供了一种基于互联网流量的深度包检测系统,包括处理器以及存储器;

所述存储器用于存储程序;

所述处理器用于根据所述程序执行如本发明第一方面所述的方法。

根据本发明的第四方面,提供了一种存储介质,其中存储有处理器可执行的指令,所述计算机可读存储介质存储有程序,所述程序被处理器执行完成如本发明第一方面所述的方法。

本发明首先获取互联网http包的url数据,接着构建用于进行url匹配的类三叉搜索树,然后基于所述类三叉搜索树对所述url数据进行匹配,生成检测结果,最后根据所述检测结果识别互联网业务。本发明使用互联网http包的url作为流量的深度包检测参数,与现有的基于ip端口等参数作为深度包检测方法不同,本方法具有更小的粒度,具有更好的实效性,降低了成本。

附图说明

图1为本发明实施例的类三叉搜索树结构示意图;

图2为本发明实施例的规则匹配流程示意图;

图3为本发明实施例的整体步骤流程图。

具体实施方式

下面结合说明书附图和具体实施例对本发明作进一步解释和说明。对于本发明实施例中的步骤编号,其仅为了便于阐述说明而设置,对步骤之间的顺序不做任何限定,实施例中的各步骤的执行顺序均可根据本领域技术人员的理解来进行适应性调整。

针对现有技术在深度包检测的过程中人力成本较高且粒度较大的缺点,本发明提出了基于互联网流量的深度包检测方法、系统和存储介质,本发明基于互联网的http包的url参数实现流量的深度包检测技术(dpi),采用自定义的类三叉搜索树算法实现http包的url业务检测,根据未知业务的http包url检测识别到相应的互联网业务,它可以实现更细粒度的互联网业务检测;另外,本发明针对的是http包的url参数进行识别,因此业务提供商即便更改了传统元素的规则,只要其他识别元素未完全更改,则业务识别依然能够生效,因而采用本方法的业务识别系统不需要实时更新即可保证良好的时效性;再有,本发明使用灵活的类三叉搜索树算法匹配人工定制的规则数据库,可以使得互联网http包的url参数与规则的匹配覆盖度大大提升;一种业务只需要一到两条的特征规则表示就可以。

下面结合图3,详细说明本发明一种基于互联网流量的深度包检测方法的实施步骤,本方案通过定义互联网http包的url与互联网业务一一对应的规则,使用自定义的类三叉搜索树算法,实现基于url参数的深度包检测方法:

s1,获取互联网http包的url数据;

首先,本发明实施例提供了一种规则定义的方法,定义规则的目标是要让一条或者多条类似的url与一种互联网业务对应起来。要实现这个目标,首先,规则要有模糊匹配的能力。

本实施例定义规则的模板如下:

[?]aaa[?]bbb[?]ccc[?]

规则由一个或者多个的ascii子字符串和问号组成。问号表示存在零个或者多个不匹配的ascii子字符串,它可以出现在规则字符串的前面、中间或者后面,比如:规则“abc?de”是与url“abcxxde”是匹配的。

除了模糊匹配,为了加强规则的辨别细化业务的功能,规则还增加了规则的权重与长度两个属性,而权重的优先级要比长度高。当一条url模糊匹配出现多条规则时,则先按照权重大小来获取权重较高的匹配规则作为结果;在权重一样的情况下,进而比较规则的长度,取最长的规则作为结果。

s2,构建用于进行url匹配的类三叉搜索树;

具体地,要实现以上定义的规则的功能,需要自定义类三叉搜索树的结构。

本发明实施例的类三叉搜索树用来保存和搜索经过定义的规则,它的结构呈树形,包括根节点在内,每个节点带有3类重要的指针:

第一类trilink:是256个子节点的指针数组,它根据规则串字符的ascii码索引到相应位置的节点;

第二类linktree:是指向类三叉树的子树指针,它用于保存规则中带有问号“?”后面的模糊子串的规则子树;

第三类dataptr:是一个保存数据的指针,用于保存当前规则所对应的互联网业务。

下面以规则“aa?b”和“b?ba”为例,它们分别对应的互联网业务为datam、datan,那么,保存它们所对应的类三叉搜索树结构如图1所示。

优选地,本发明实施例的构建用于进行url匹配的类三叉搜索树具体包括以下步骤:

1)新建一棵有root节点的树,它的三类指针均指向空值;

2)输入规则字符串(如:?aa?bb?cc?)和对应互联网业务,设置当前处理字符的位置为0;

3)根据当前处理的字符位置,从规则字符串的取对应字符的ascii码值,这里假设为“n”,若ascii码值不为“?”符号,则进入下一步,否则,进入步骤6);

4)新建子节点,并让当前节点的trilink[n]指针指向新建节点,如果当前字符为规则字符串的最后一个字符,则把dataptr指针指向对应的互联网业务;

5)取规则字符串的下一个字符为当前要处理字符,重复步骤3),直到规则的字符串处理完毕;

6)取规则字符串的下一个字符为当前处理字符,新建子节点,并让当前节点的linktree指针指向新建节点,并以此节点为根,取规则字符串的下一个字符为当前要处理字符,重复步骤3);

本实施例以规则串“aa?b”(图1的左边子树)为例具体说明,步骤如下:

1)新建root节点,取规则串的0位置的字符“a”,新建节点a,让当前节点root的trilink[a]指针指向它;

2)取规则串1位置的字符“a”,新建节点a,让步骤1)新建的节点a的trilink[a]指针指向它;

3)取规则串2位置字符“?”,继续取位置3的字符“b”,新建节点b,让步骤2)新建的节点a的linktree指针指向它;

4)规则串3位置为结束位置,新建节点datam,让步骤3)新建的节点b的dataprr指针指向它,至此,规则串“aa?b”的存储流程结束。

规则串“b?ba”存储过程与“aa?b”类似,它生成图1中root节点的右边子树。

s3,基于所述类三叉搜索树对所述url数据进行匹配,生成检测结果;

具体地,本发明实施例的类三叉搜索树匹配过程概括为:

输入:一个互联网http包的url字符串,一棵构建好的保存了规则信息的类三叉搜索树;

输出:url字符串所对应的互联网业务。

参照图2,整体匹配过程如下:

1)输入url字符串,设置当前处理的字符串的位置为0;设置规则树的初始位置为根节点;

2)获取url字符串当前处理位置字符所对应的ascii码,然后通过ascii码值,从规则树的当前处理节点的trilink指针数组中获取对应的子节点;

3)如果子节点的dataptr指针不为空,则表示存在与url对应的互联网业务。在把这个匹配结果作为最新的结果前,有可能已经存在匹配结果。检查是否已经有存在的结果,若有,则需要做两种情况的判断。一种情况是:新结果的权重是否比旧的大,如果是,则新结果替换旧的结果;另一种情况是:新结果权重与旧结果相等,这时,如果新的结果的规则长度要比旧的长,则替换旧的结果。

4)在判断规则存在后,需要判断当前节点是否存在linktree的节点指针,若存在,进入步骤5);与此同时,设置url字符串的下一个字符为当前处理字符,进入步骤2),直到处理url字符串结束。最后返回的结果就是该url字符串所对应的互联网业务,至此,搜索结束。

5)设置url字符串的下一个字符为当前处理字符,linktree节点为根节点,进入步骤2)做嵌套处理。

s4,根据所述检测结果识别互联网业务。

综上所述,相较于传统的以ip地址、端口、host等特征识别业务的方法,本发明实施例具有以下优点:

1.使用互联网http包流量中的url作为参数识别互联网业务,提高了业务定制的灵活性,不需要为每种业务定制对应的规则;

2.采用多个自定义规则对应到一种互联网业务的策略,提升了规则对互联网业务的覆盖率;

3.提供的权重和长度比较功能,可以在存在多种类似的业务的情况下,根据权重的不同实现不同的互联网业务分类。

另外,本发明实施例还提供了一种基于互联网流量的深度包检测系统,包括:

获取模块,用于获取互联网http包的url数据;

构建模块,用于构建用于进行url匹配的类三叉搜索树;

匹配模块,用于基于所述url数据对所述url数据进行匹配,生成检测结果;

识别模块,用于根据所述检测结果识别互联网业务。

进一步作为优选的实施方式,所述匹配模块包括:

输入单元,用于输入url字符串,设置url字符串的当前处理位置为0,以及设置规则树的初始位置为根节点;

获取单元,用于获取url字符串当前处理位置字符所对应的ascii码,然后通过ascii码值,从规则树的当前处理节点的trilink指针数组中获取对应的子节点;

第一判断单元,用于判断所述子节点的dataptr指针是否为空,若是,则表示不存在与url字符串对应的互联网业务;反之,则表示存在与url对应的互联网业务;

第二判断单元,用于判断当前处理节点是否存在linktree的节点指针,若是,则执行下一步骤;反之,则生成检测结果;

处理单元,用于设置url字符串的下一个字符为当前处理字符,将linktree指向的节点作为根节点,返回执行获取url字符串当前处理位置字符所对应的ascii码,然后通过ascii码值,从规则树的当前处理节点的trilink指针数组中获取对应的子节点的步骤,直至url字符串处理结束。

本发明实施例还提供了一种基于互联网流量的深度包检测系统,包括处理器以及存储器;

所述存储器用于存储程序;

所述处理器用于根据所述程序执行如本发明所述的方法。

本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有程序,所述程序被处理器执行完成前述各个实施例所述的基于互联网流量的深度包检测方法。

本发明实施例还提供一种包括指令的计算机程序产品,当其在计算机上运行时,使得计算机执行前述各个实施例所述的基于互联网流量的深度包检测方法。

本申请的说明书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

应当理解,在本申请中,“至少一个(项)”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,用于描述关联对象的关联关系,表示可以存在三种关系,例如,“a和/或b”可以表示:只存在a,只存在b以及同时存在a和b三种情况,其中a,b可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b或c中的至少一项(个),可以表示:a,b,c,“a和b”,“a和c”,“b和c”,或“a和b和c”,其中a,b,c可以是单个,也可以是多个。

在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括多指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-onlymemory,简称rom)、随机存取存储器(randomaccessmemory,简称ram)、磁碟或者光盘等各种可以存储程序的介质。

以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。

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