一种应用层协议特征的提取方法

文档序号:7722806阅读:431来源:国知局

专利名称::一种应用层协议特征的提取方法
技术领域
:本发明属于互联网
技术领域
,具体地说,是涉及一种采用数据挖掘的思想和方法提取出应用层的协议特征的方法。
背景技术
:随着互联网的逐步发展,网上用户和业务流量在不断增长,除传统数据业务外,P2P、网络游戏、IPTV等新兴业务占用了互联网的大部分带宽,一方面使得运营商的服务质量出现问题,另一方面也使得运营商的基础网络建设陷入了"拥塞_扩容_再拥塞"的非正常局面,盈利能力相应降低。在同一网络内,如果某些用户严重占用带宽进行网游、BT下载等活动,就会影响别人对网络资源的正常使用,或者对他人的工作造成影响。毕竟现在互联网的发展,已经使很多工作都要求在网络上交互和完成。应用层软件造成的带宽拥塞问题已经引起了中小型企业,多分支机构企业和网络运营商的注意,而他们就是促使网络带宽产品不断发展的最大推动者。随着市场的不断发展,网络带宽控制产品具有极大的市场潜力,而且市场份额也越来越大。目前,国内的主要带宽管理和流量控制产品包括Panabit、P2P终结者、聚生网管等。但是,这些产品只从网络流量控制方面给用户提供流量控制方面的应用。当然普通用户也不会关心其内部的识别原理和方法,更不用说应用层的协议特征了。但另一方面,一些应用和分析应用层协议的企业和公司,提出了分析应用层协议和获取相应协议特征的需求,而现有的网络流量控制产品只提供了流量控制的功能,并没有提供应用层协议提取和分析功能的方法和接口。而且如果聘请专门人员手动分析应用层协议特征,将会影响工作效率和进度,并给企业和公司带来人力资源的负担。当前,最流行的流量监测技术为DPI(De印PacketInspection)深度包检测技术,相对于传统的基于端口、协议类型的流量检测技术,DPI增加了应用层分析功能,是一种基于应用层的流量检测和控制技术,它通过深入读取IP包载荷的内容来对0SI7层网络模型中的应用层信息进行重组,从而得到整个应用层协议的内容,然后按照系统定义的管理策略对流量进行整形操作,通过识别各种应用层的内容达到高效地识别出网络上的各种应用协议的目的。数据挖掘技术作为一种数据信息处理的关键技术,其主要特点是对数据库中的海量数据进行抽取、转换、分析和其他模型化处理,从中提取关键性和决策性的数据。将数据挖掘技术运用到网络流量分析,在极度膨胀地网络带宽需求中,根据用户的网络带宽使用情况、实时地对带宽进行分配,从占据带宽重要比重的应用层软件中提取和挖掘出应用层协议的重要识别特征,以分析出影响网络带宽的软件和用户,具有重大的意义。很多学者从数据挖掘的角度对DPI技术进行了理论和科学实验研究。但是,随着网络流量分析和特征提取工程应用需求的增加,对理论研究转换成实际工程应用提出了市场需求。
发明内容本发明的目的在于提供一种适于实际工程应用的应用层协议特征提取方法,从数据挖掘角度出发对协议特征的提取过程进行完善设计,从而加快了协议特征的提取速度,为分析应用层协议提供了依据。为解决上述技术问题,本发明采用以下技术方案予以实现—种应用层协议特征的提取方法,包括以下步骤(1)捕获待监听的流量数据包;(2)提取流量数据包中的频繁1项集,所述频繁1项集的长度设定为2的整数倍;(3)采用如下合并过程将频繁k项集合并成候选k+1项集,k>1:、=Lines[x]+Lines[y].substring(Lines[y].length()_1,Lines[y].length());b2=Lines[y]+Lines[x].substring(Lines[x].length()_1,Lines[x].length());其中,Lines[x]、Lines[y]分别为第x个和第y个频繁k项集,频繁k项集的长度为LEN;substring(p,q)表示提取从序列的第p位开始到第q位的子序列,^和b2为得到的候选k+1项集,其长度为LEN+2;(4)计算候选k+1项集的支持度su卯ort,提取满足支持度条件support>minimum_sup的候选k+1项集,作为频繁k+1项集;所述minimum_sup为频繁项集支持度的最小阈值;(5)在频繁k项集中,删除频繁k+1项集包含的项集;由步骤(3)、(4)、(5)获取的各个频繁项集即构成应用层的协议特征集合。为了加快产生频繁项集的过程,在所述步骤(2)的频繁l项集提取过程中,可以采用BloomFilter算法对重复出现的频繁1项集进行判断,进而将重复的频繁1项集删除,以达到加快协议特征提取速度的设计目的。为了得到更优的应用层协议特征集合并将冗余的应用层协议特征删除,本发明还设计了删除冗余的应用层协议特征的过程,即在完成频繁k+1项集的提取过程后,紧接着进行删除冗余的频繁k项集的过程令fz为一个频繁k+1项集;fx和fy为两个频繁k项集,且fx=fz.substring(1,fz.length()-2),fy=fz.substring(3,fz.length()),那么删除频繁k项集fx和fy。进一步的,在所述步骤(2)之前包括以下建立流量数据包的频繁项集数据模型的过程令I=i2,....id},每个项ig(g=1到d)由两位十六进制数组成,是应用层流量数据包的最小单位;T={tpt2,....td}为所有数据包的集合,ti={I的子集构成的序列},为一个应用层协议信息数据包;令S=substring(ti),S表示应用层协议信息数据包ti的一个子序列,为I的项集;频繁项集的支持度support=P(S)/T);若support>minimum_sup,则应用层流量数据包ti的子序列S为该应用层的协议特征。优选的,所述频繁1项集的长度取值为2的整数倍,且大于等于4。为了进一步加快频繁项集的提取速度,在所述步骤(2)和(4)的频繁1项集和频繁k+1项集的提取过程中,还包括删除不产生频繁1项集和频繁k+1项集的应用层协议信息数据包的过程,使其在后面的频繁项集挖掘过程中不再进行频繁项集的计算和挖掘。优选的,所述频繁项集支持度的最小阈值minimum_sup在0.2到0.8之间取值。又进一步的,在所述步骤(1)中还包括对捕获到的流量数据包进行预处理的过程,即将捕获到流量数据包进行上行网络流量和下行网络流量的分流,只保留上行网络流量。并且将捕获到的每一个流量数据包的链路层、网络层、传输层的头文件信息去除,只保留应用层数据信息,进而形成应用层协议信息数据包供后续步骤使用。再进一步的,在所述对捕获到的流量数据包进行预处理的过程中还包括根据设定的应用层协议信息数据包长度阈值L对应用层协议信息数据包进行限制和截取的过程,使得每个应用层协议信息数据包只保留长度为L的数据信息。更进一步的,在所述步骤(5)之后还包括对提取出的应用层的协议特征集合进行优化的过程,即删除协议特征集合中不具代表性的协议特征和应用层通用的协议特征。与现有技术相比,本发明的优点和积极效果是本发明从工程应用角度提出了一套较完整的应用层协议特征提取方法,丰富了应用层协议特征提取在工程中的应用。该应用层协议特征提取方法从数据挖掘的角度提出了一套智能化的提取算法,克服了手动分析的不足,促进了企业和公司应用层协议分析工作的信息化和智能化,为企业和公司减轻了人力资源的负担,提高了工作效率。将提取到的应用层协议特征保存在特征数据库中,并对特征数据库进行周期性更新,以不断丰富应用层特征数据库的内容,这样可以为后续的应用层协议识别提供指导,提高协议识别的准确率。结合附图阅读本发明实施方式的详细描述后,本发明的其他特点和优点将变得更加清楚。图1是本发明所提出的应用层协议特征提取方法的一种实施例的流程图;图2是基于图1所示协议特征提取方法所设计的应用层协议特征提取系统的一种实施例的系统架构示意图。具体实施例方式下面结合附图对本发明的具体实施方式进行详细地描述。本发明针对现有应用层协议特征提取方法在工程应用中的不足,及其企业和公司提出用智能方法(即自动分析方法)分析应用层协议的需求,提出了一种适于工程应用的应用层协议特征提取方法。将数据挖掘的思想和方法实际应用到应用层协议特征的提取过程中,并根据应用层协议流量数据量大的特点,从应用层协议数据包的有效包长、有效流量和无用流量等角度出发,提出了对流量数据包进行限制预处理的策略。下面通过一个具体的实施例来详细阐述所述应用层协议特征提取方法的具体设计过程以及基于该设计思想所构建的应用层协议特征提取系统的具体组建结构。实施例一,参见图1所示,本实施例的应用层协议特征提取方法主要由以下步骤设计实现St印l、设置使用权限,对系统的安全使用进行管理;出于对系统使用的安全性考虑,本实施例优选在系统正常运行前,对登录用户的合法身份进行验证,即要求用户输入用户名和密码,进行身份验证,进而根据事先保存的权限信息验证用户输入的用户名和密码是否正确,如果用户名和密码与保存的权限信息相符,则用户通过验证,进入系统;如果用户名或密码错误,则提醒用户确认输入的用户名或密码是否正确,并重新要求用户输入用户名和密码,直到身份验证通过后,再执行后续步骤。St印2、捕获待监听的流量数据包;用户在选择启动应用层协议特征提取功能时,首先选择需要监听的网卡,并设置流量数据包的过滤条件,然后启动流量捕获功能,开始捕获待监听网卡的流量数据包。所述流量捕获功能可以直接应用现有的Pcap功能函数库进行软件开发应用,对应用层协议的网络流量进行实时捕获。在调用该函数库时,输入捕获网络流量数据包的过滤条件,比如捕获全部网络数据包、捕获TCP数据包和捕获UDP数据包等,即可获得满足过滤条件的流量数据包。根据经验获悉应用层的协议特征主要存在于协议进行连接时的前几个数据包中,而在下载时的流量数据包包含的协议特征信息较少,甚至没有。因此,只需要提取应用协议在连接时的流量数据包的特征,即可以达到很好的特征提取和识别效果。对下载时的流量数据包进行特征提取,反而会增加数据处理的难度。基于此,本实施例在设计应用层协议特征提取方法的过程中,只捕获应用协议连接时的流量数据包。在流量数据包捕获结束后,将捕获到的流量数据包另存为.pc即文件,传输至St印3进行预处理。St印3、对捕获到的流量数据包进行预处理;本步骤是为了提高后续协议特征提取的准确率和速度而设计的,主要做以下三步流量预处理(1)对网络流量进行上行网络流量和下行网络流量的分流。通过步骤St印l捕获到的网络流量数据包括上行网络流量和下行网络流量。将捕获到的网络流量进行上行网络流量和下行网络流量的分流,上行网络流量是用户端向服务器端发送请求服务等功能(一般为TCP数据包)和上传相关数据信息(一般为UDP数据包)的流量数据包,其中的发送请求服务等功能的流量数据包包括极其有用的和有效的应用层协议特征;而下行网络流量是服务器向客户端确认请求(一般为TCP数据包)并发送请求数据(一般为UDP数据包)的流量数据包,其中的确认请求数据包虽然也包括一些有效的应用层协议特征,但是很多数据包都只包含简单的建立连接响应的内容,并不包含明显的协议特征。因此,此处对网络流量进行上行和下行网络流量的分流,只保留上行的网络流量供后续步骤使用。可以以客户端的IP地址实现分流,即如果客户端的IP为源IP地址,那么该流量为上行网络流量;如果客户端的IP为目的IP地址,那么该流量为下行网络流量。(2)提取应用层数据信息。上行网络流量包括了0SI7层模型的全部数据,而只有应用层部分的网络数据对我们研究应用层协议特征有用。所以,在该数据预处理阶段对捕7获到的流量数据包(即.pcap文件)进行应用层协议信息的提取,即将捕获到的每一个流量数据包的链路层、网络层、传输层的头文件信息去除,只保留应用层协议数据,进而形成应用层协议信息数据包供后续步骤使用。(3)对应用层协议信息数据包的大小进行限制。应用层协议信息数据包由两部分组成控制信息+数据。当前应用层协议的有用信息基本集中在控制信息部分,而数据部分基本是下载时的数据信息,提供特征的信息较少。所以,在流量预处理阶段可以根据协议的定义或者特点设置一个阈值L,以对应用层协议信息数据包的大小进行限制和截取,使得每个应用层协议信息数据包只保留从数据包开始到长度为L的数据信息,并保存到.txt文件中。其中,阈值L的大小范围是根据各应用层协议的定义而确定的,不同的应用层协议其控制信息的有效长度L也是不一样。一般来讲,L在200byte到400byte之间取值即可满足控制信息的提取要求,比如L=380byte。St印4、应用层协议特征提取过程;为了实现应用层协议特征的准确、快速提取,本实施例对现有的Apriori频繁模式挖掘算法进行改进,提出了一种基于Apriori的数据挖掘算法,并命名为AC(AprioriFrequentSignatureandConstraint)算法,以完善应用层协议特征的提取设计。Apriori算法作为数据挖掘中关联规则挖掘算法的典型代表,由Agrawal等人在1993年提出。Apriori算法分为两部分频繁项集产生+关联规则挖掘。频繁项集产生过程用于挖掘海量数据中频繁出现的数据项,为关联规则的建立提供数据对象。频繁模式挖掘算法的基本原理如下频繁模式挖掘是关联规则挖掘里的一个重要内容,挖掘待研究事务的频繁项集,是产生关联规则的重要前提和保证。应用关联规则里产生频繁项集的方法来提取应用层流量数据包中的协议特征。其基本思想是不考虑流量数据的结构信息,只关注流量数据的内容,而内容具体含义事先也不考虑,在这种模糊的条件下,提取流量数据包的频繁子串,并作为待考虑的应用层协议特征。频繁项集挖掘的数据集和支持度定义频繁模式挖掘的数据集定义如下令I=Upi2,....id}是数据中所有项的集合,T=&,t2,....td}是所有事务的集合,每个事务ti包含的项集都是I的子集,包含O个或多个项的集合S被称为项集。如果一个项集S包含k个项,则称它为k项集。项集S在事务中的出现频率用支持度support来描述,support=P&(S)/T),分子ti(S)表示项集S在事务中出现的次数,分母T表示事务个数。给定一个支持度的最小阈值minimum—sup,若support>minimum_sup,那么项集S为频繁项集。频繁项集挖掘过程频繁项集挖掘过程都是根据原创性算法Apriori衍生出来的,因此他们的总体挖掘过程都大同小异。Apriori算法使用一种逐层搜索的迭代方法,用k项集探索(k+1)项集。第一次迭代挖掘所有长度为1且支持度support大于等于最小支持度minimum—sup的项集作为频繁1项集。第二次迭代挖掘长度为2的频繁2项集。在第二次迭代过程8中,算法会基于第一次迭代的结果来生成长度为2的候选2项集,然后计算每个候选2项集的支持度su卯ort,将满足su卯ort>minimum_sup的候选2项集选出来作为频繁2项集。重复第二次迭代过程可以挖掘大小分别为3、4、5...的频繁项集,直到没有满足最小支持度条件support>minimum_sup的项集产生为止。本实施例所提出的应用层协议特征提取方法采用AC算法实现,AC算法定义的应用层流量数据包的频繁项集数据模型为令I={ipi2,....ij,每个项ig(g二l到d)由两位十六进制数组成,是应用层流量数据包的最小单位;T={、,t2,....td}为所有数据包的集合,ti={I的子集构成的序列},为一个应用层协议信息数据包;令S=substring(ti),S表示应用层协议信息数据包ti的一个子序列,为I的项集;频繁项集的支持度su卯ort=P(ti(S)/T);若su卯ort>minimum—sup,那么应用层流量数据包^的子序列S为该应用层的协议特征。AC算法相比其它算法的独特之处体现在以下两个方面—、引入BloomFilter函数改进Apriori算法,产生频繁1项集,以加快产生频繁项集的过程。引入BloomFilter算法对Apriori算法进行改进,BloomFilter算法用多个哈希函数(即Hash函数)提高识别频繁项的准确性。BloomFilter算法最初是由FangHao等人提出来的,目的是加快对频繁项集的提取。AC算法引入BloomFilter的思想对Apriori算法产生频繁1项集的过程进行改进,在执行效率和精确度方面都有了很大的提高。二、在AC算法中引入产生协议特征即频繁项集的限制条件,以加快应用协议特征的提取过程。By皿g-ChulPark等人提出LASER(IXS-based(Longestcommonsubsequence)ApplicationSignatureExtRactionalgorithm)算法,艮卩基于最长公共子序列的应用特征提取算法,来提取应用层特征。在LASER算法产生应用层特征的过程中,引入最小子串长度的限制条件算法将要产生的特征的最小长度进行限制。AC算法在沿用最小子串长度的限制条件,即协议特征长度的限制条件的基础上,再提出了两个限制条件屏蔽不提供协议特征的应用层协议信息数据包和删除冗余的应用层协议特征,从而加快协议特征的提取过程和优化提取得到的应用层协议特征。下面对将AC算法应用于应用层协议特征提取过程的具体实现步骤阐述如下(1)导入经过步骤St印3预处理后的应用层协议信息数据包,即.txt文件。(2)设定频繁1项集的长度len。由于流量数据包是按原始捕获的流量数据格式即十六进制的格式保存的,每两个十六进制符号表示一个十进制ASCII码字符,因此,频繁1项集的长度取值应该为2的整数倍。此处引入协议特征长度的限制条件在频繁项集的产生过程中,前面的项集的产生是为后面项集的产生服务的,但是这些前面的项集往往是些过渡项集,对最终项集的产生很少或不产生影响。如果在产生频繁l项集时,项集的大小|S|=2,产生频繁2项集时,项集的大小|S|=4...,那么将会影响后续项集的递增处理效率,而且协议特征过短没有实际意义和参考价值。因此,本实施例通过对频繁1项集的长度len进行限制,从而对协议特征最小长度进行限制,使其不产生过短的没有实际意义的协议特征。这样不但可以提高提取效率,也为最终产生更高质量的协议特征提供重要保障。基于此,本实施例提出将频繁1项集的长度len设定为2的整数倍,最好为大于等于4的值,优选len=4。(3)提取频繁1项集。即提取应用层协议信息数据包中满足支持度条件support>minimum_sup的频繁项集。在频繁l项集的提取过程中,引入BloomFilter算法来判断重复频繁项集,以提高产生频繁1项集的效率。BloomFilter算法提取频繁1项集的原理和过程为BloomFilter是一个M位的二进制字符串,每位初始为0。为每个候选1项集设定h个哈希函数,h个哈希函数的值与BloomFilter的二进制字符串的位置相对应。当判断一个候选1项集是否已经为频繁1项集时,只要计算这h个Hash函数的值,然后根据得到的函数值去寻找BloomFilter二进制字符串的对应位,如果h个对应位的值都为l,则说明该候选1项集已经为频繁1项集,这样BloomFilter就将其过滤掉,而不用做进一步的支持度计算来判断该候选1项集是否为频繁1项集;如果h个对应位的值只要有一位不为l,则说明要做进一步的支持度计算才能判断该候选1项集是否为频繁1项集。BloomFilter算法过滤候选1项集的准确度和错误率由Hash函数的个数h决定,FangHao等人已证明h=6时BloomFilter算法过滤的错误率已接近极小化。BloomFilter算法使用的Hash函数定义为假设候选1项集为C=(Q,C2,...,Ck),根据以下的哈希函数计算候选1项集C所有长度为k(k>1)的子集的哈希值。假设一个素数q,则第一个长度为k的子集的哈希函数为&=Ciqk—^(^qk—2+...+Ck—iq+Ck(ModM)其中,M为BloomFilter的二进制字符串的长度;第二个长度为k的子集的哈希函数为H2=C2qk—^Qqk—2++Ckq+Ck+1(ModM)。最小支持度阈值minimum—sup的取值范围根据具体的应用而定,不同的应用层协议数据其最小支持度阈值也不同,根据实验经验可知minimUm_SUp的取值范围优选为0.2<minimum—sup<0.8。此处引入限制条件屏蔽不提供协议特征的应用层协议信息数据包。如果已提取的频繁1项集没有一个包含在一个应用层协议信息数据包中,那么该应用层协议数据包被认为是不包含频繁1项集的数据包,则在以后的频繁项集的挖掘过程中,该应用层协议信息数据包也不会包含频繁项集。因此,将不提供协议特征的应用层协议信息数据包屏蔽,在后面的频繁项集挖掘过程中不再进行频繁项集的计算和挖掘。(4)由频繁k项集提取候选k+1项集。假设Lines[x]、Lines[y]分别为第x个和第y个频繁k项集,频繁k项集的长度为LEN。substring(p,q)表示提取从序列的第p位开始到第q位的子序列,h和b2为得到的候选k+1项集,其长度为LEN+2。我们知道流量数据包的内容是一个有序序列,各项间的顺序和位置是固定的。因此,不能简单地像集合一样合并各k项集,来产生候选(k+1)项集。而候选k+l项集是由频繁k项集间合并生成的,且在频繁k项集的基础上增加2个十六进制字符,即候选k+1项集的长度为LEN+2。根据频繁项集产生的先验原理如果一个项集是频繁的,那么它的所有子集一定也是频繁的。由此,我们知道候选k+1项集长度为LEN的子序列必为频繁k项集,艮卩Lines[x].substring(1,Lines[x].length-2)禾口Lines[x].substring(3,Lines[x].length)必为频繁k项集。因此,我们可以通过以下方式由频繁k项集合并为候选k+l项集如果Lines[x]频繁k项集从第3个字符开始到最后一个字符结束的子序列与Lines[y]频繁k项集的从第1个字符开始到倒数第三个字符结束的子序列相等,艮卩Lines[x].substring(3,Lines[x].length0)=Lines[y].substring(1,Lines[y].length()_2),那么Lines[x]和Lines[y]用以下方式合并为候选k+1项集:、=Lines[x]+Lines[y].substring(Lines[y].length()_1,Lines[y].length());如果Lines[x]频繁k项集从第1个字符开始到倒数第3个字符结束的子序列与Lines[y]频繁k项集的从第3个字符开始到最后一个字符结束的子序列相等,即Lines[x].substring(1,Lines[x].length0_2)=Lines[y].substring(3,Lines[y].length()),那么Lines[x]和Lines[y]用以下方式合并为候选k+1项集:b2=Lines[y]+Lines[x].substring(Lines[x].length()_1,Lines[x].length());HongHan等人提出该合并过程并应用于病毒特征的提取过程中,他们提出当产生频繁2项集时,直接由频繁1项集间的合并产生,因为此时的频繁1项集为项集的最小单位;当产生频繁3项集开始以后的项集时,根据项集间子序列的相等性来合并频繁k项集为候选k+1项集。当产生频繁3项集以后项集的方法对AC算法产生长度为2的频繁项集时已经开始适用,因为本实施例定义的应用层流量数据包的最小单位长度为2,而AC算法初始设定频繁1项集的长度len—般大于等于4,因此此时频繁1项集不是项集的最小单位,由频繁1项集生成候选2项集,可直接应用以上合并过程。(5)由候选k+l项集产生频繁k+l项集。计算候选k+1项集的支持度su卯ort,将满足支持度条件su卯ort>minimum_sup的候选k+1项集提取出来,作为频繁k+1项集。(6)根据频繁k+1项集,删除频繁k项集中的项集。此处引入限制条件删除冗余的应用层协议特征。根据提取得到的频繁k+1项集删除频繁k+1项集中已经挖掘的频繁k项集。为了得到更优的应用层协议特征集合并将冗余的应用层协议特征删除,本实施例根据频繁项集产生的先验原理如果一个项集是频繁的,那么它的所有子集一定也是频繁的,设计了删除冗余的应用层协议特征的过程,即在完成频繁K+1项集的提取过程后,紧接着进行删除冗余的频繁K项集的删除过程。因为频繁k+1项集是由频繁k项集挖掘产生的,那么每个频繁k+1项集的子序列,一定也包含在频繁k项集中,频繁k+1项集已经包含了其对应的频繁k项集的挖掘项集。相反的,频繁k项集不一定都包含在频繁k+1项集中,因为由频繁k项集产生的候选k+1项集并不一定能成为频繁k+1项集。因此在频繁k项集中删除频繁k+1项集包含的项集,即如果满足以下条件,那么对应的频繁k项集将被删除fz为一个频繁k+l项集;fx和fy为两个频繁k项集,且fx=fz.substring(1,fz.length()-2),fy=fz.substring(3,fz.length()),那么删除频繁k项集fx和fy。在这个过程中,删除了频繁k项集中重复出现的频繁k+l项集的子序列,且保留了频繁k项集中不产生频繁k+1项集的项集。(7)如此反复执行步骤(4)、(5)和(6),直到没有新的频繁项集产生为止。通过以上步骤获取的各个频繁项集即构成应用层的协议特征集合。St印5、对获取的应用层的协议特征集合进行优化处理。在此步骤中,包括删除协议特征集合中不具代表性的协议特征和应用层通用的协议特征,使得到更优的协议特征集合。St印6、将经过优化处理后的协议特征结果以图表或者文字等形式进行展示。St印7、将经过优化处理后的协议特征与特征数据库中已保存的协议特征进行比较,以不断更新特征数据库,进而为应用层协议的准确识别提供支持。基于上述应用层协议特征提取方法,本实施例又提出了一种应用层协议特征提取系统,参见图2所示,具体包括以下主要组成部分权限管理模块提供系统的用户、用户组的定义及其各自权限的管理,保证数据库的安全访问,即完成St印l的功能。其中,用户管理,用于定义系统的用户及相应的用户权限;用户组管理,用于定义系统的用户组及相应的权限。设置的各权限数据保存在权限数据库中。流量捕获模块捕获待监听的网络流量数据包,即完成St印2的功能。应用层协议流量预处理模块根据流量数据包的特点对流量数据包进行预处理,去掉无用或不相关的流量数据,即完成St印3的功能。应用层协议特征提取模块为本系统的关键模块,应用数据挖掘AC算法实现对应用层协议特征的提取,即完成St印4的功能。在此模块中还可以包括数据挖掘算法的选择、数据挖掘算法的实现与应用模块等。此模块提供一个公用的接口支持数据挖掘算法的扩展。参数配置模块提供应用层协议特征提取数据挖掘算法的参数,如特征长度len、支持度最小阈值minimUm_SUp以及选择的特征提取数据挖掘算法的其他各相关参数等。应用层协议特征优化模块优化应用层协议特征提取模块提取得到的协议特征,将冗余的协议特征删除,使得到更优的协议特征集合,即完成St印5的功能。应用层协议特征提取结果展示模块将经过优化后的协议特征及其支持度(支持度=协议特征在流量数据包中出现的次数/捕获流量中总的数据包个数)以图形、表格等方式输出展示,即完成St印6的功能。应用层协议特征周期性更新模块实现最新协议特征数据库更新。将最新提取得到的协议特征与特征数据库相应协议特征进行比较,如果有新的协议特征产生,则将该新特征更新到特征数据库,即完成St印7的功能。下面结合图1、图2,以提取PPStream应用软件在应用层中的特征为例对本实施例的协议特征提取方法进行详细的说明。以PPStream应用层软件为实例,提取与PPstream软件相关的应用层协议的特征。12在实验主机上必须首先打开PPStream软件。1、用户登录系统用户输入用户名和密码,系统从权限数据库查找相应的用户登录信息,并进行用户验证。用户验证通过,则允许用户进入系统,否则提醒用户再次输入用户名和密码。2、流量捕获在应用层协议流量捕获模块中,选择应用层协议提取功能,并选择当前需要监听的网卡RealtekRTL8139/810xFamilyFastEthernetNIC,输入流量数据包过滤条件"TCP&&notsmb&&notnbss",即捕获TCP数据包,开始捕获应用层协议流量数据包。流量捕获结束后,可随时点击"停止流量捕获"按钮,最后将捕获的流量数据包另存为PPStream.pc即文件。3、应用层协议流量预处理将PPStream.pc即文件导入应用层协议流量预处理模块,设置预处理参数截取流量数据包大小L=380byte。分流出PPStream.pcap流量数据包的上行网络流量,并提取该上行网络流量的应用层协议信息数据包,并对每个应用层协议信息数据包进行截取,只保留L长度的数据信息。然后,将流量数据预处理后的结果以PPStream.txt文件的形式发送给应用层协议特征提取模块。进行预处理后,流量数据包的格式为(每个流量数据包用#号隔开)#474554202F766F642F696D616765732F2E30362544302541312543392546322544312546342543392545442542432544422542312541392544352543373630302542312542362542372541322543412543342542322542422543352544372543362544452E6A706720485454502F312E31ODOA486F73743A20706C2E7070732E7476ODOA4163636570743A202A2F2AODOA557365722D4167656E743A20505053747265616D2D436C69656E742F312E30ODOAOD#474554202F766F642F2E30362544302541312543392546322544312546342543392545442542432544422542312541392544352543373630302542312542362542372541322543412543342542322542422543352544372543362544452E786D6C20485454502F312E31ODOA486F73743A20706C2E7070732E7476ODOA4163636570743A202A2F2AODOA557365722D4167656E743A20505053747265616D2D436C6965i6E'74:2F312E30ODOAODOA#474554202F6368616E6E656C5F6C6973742F6C6973742F303230362544302541312543392546322544312546342543392545442542432544422542312541392544352543373630302542312542362542372541322543412543342542322542422543352544372543362544452E68746D6C20485454502F312E31ODOA4163636570743A202A2F2AODOA4163636570742D4C616E67756167653A207A682D636EOD0A55412D4350553A20783836ODOA416363657013<table>tableseeoriginaldocumentpage14</column></row><table>..............................4.应用层协议特征提取选择AC算法,配置AC算法的参数频繁l项集长度len=6,最小支持度阈值minimum_sup=0.2。启动应用层协议特征提取模块的分析功能,从PPStream.txt文件中提取出PPStream软件的特征,并将提取得到的协议特征集合输出到应用层协议特征优化模块。表1是提取得到的PPStream软件的协议特征及其支持度<table>tableseeoriginaldocumentpage14</column></row><table><table>tableseeoriginaldocumentpage15</column></row><table>表l5、PPStream软件特征优化应用层协议特征优化模块接收应用层协议特征提取模块送来的协议特征集合,对协议特征集合进行优化处理,删除多余的、不具代表性的和应用层通用的协议特征。表2是优化后的PPStream软件的协议特征及其支持度<table>tableseeoriginaldocumentpage15</column></row><table><table>tableseeoriginaldocumentpage16</column></row><table>表26、将经过优化处理后的协议特征传送给应用层协议特征提取结果展示模块,以图表和文字的形式展示提取得到的协议特征结果。7、将协议特征结果发送给应用层协议特征周期性更新模块,通过应用层协议特征周期性更新模块对提取得到的协议特征与特征数据库的协议特征进行比较和更新。本发明的应用层协议特征提取方法可以充分满足实际工程应用的需求,提高了网络协议分析处理的效率和进度,为网络运营商实时监控网络资源、解决网络拥堵问题提供了技术上的支持。当然,以上所述仅是本发明的一种优选实施方式,应当指出的是,对于本
技术领域
的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。权利要求一种应用层协议特征的提取方法,包括以下步骤(1)捕获待监听的流量数据包;(2)提取流量数据包中的频繁1项集,所述频繁1项集的长度设定为2的整数倍;(3)采用如下合并过程将频繁k项集合并成候选k+1项集,k≥1b1=Lines[x]+Lines[y].substring(Lines[y].length()-1,Lines[y].length());b2=Lines[y]+Lines[x].substring(Lines[x].length()-1,Lines[x].length());其中,Lines[x]、Lines[y]分别为第x个和第y个频繁k项集,频繁k项集的长度为LEN;substring(p,q)表示提取从序列的第p位开始到第q位的子序列,b1和b2为得到的候选k+1项集,其长度为LEN+2;(4)计算候选k+1项集的支持度support,提取满足支持度条件support≥minimum_sup的候选k+1项集,作为频繁k+1项集;所述minimum_sup为频繁项集支持度的最小阈值;(5)在频繁k项集中,删除频繁k+1项集包含的项集;由步骤(3)、(4)、(5)获取的各个频繁项集即构成应用层的协议特征集合。2.根据权利要求1所述的应用层协议特征的提取方法,其特征在于在所述步骤(2)的频繁1项集提取过程中,采用BloomFilter算法来判断重复频繁1项集,并将重复的频繁l项集删除。3.根据权利要求1所述的应用层协议特征的提取方法,其特征在于在完成频繁k+1项集的提取过程后,紧接着进行删除冗余的频繁k项集的过程令fz为一个频繁k+1项集;fx和fy为两个频繁k项集,且fx=fz.substring(1,fz.length()-2),fy=fz.substring(3,fz.length()),那么删除频繁k项集fx和fy。4.根据权利要求1所述的应用层协议特征的提取方法,其特征在于在所述步骤(2)之前包括建立流量数据包的频繁项集数据模型的过程令I=Upi2,....id},每个项ig(g=1到d)由两位十六进制数组成,是应用层流量数据包的最小单位;T={tpt2,....td}为所有数据包的集合,ti={I的子集构成的序列},为一个应用层协议信息数据包;令S=substring(ti),S表示应用层协议信息数据包ti的一个子序列,为I的项集;频繁项集的支持度support=P&(S)/T);若support>minimum_sup,则应用层流量数据包ti的子序列S为该应用层的协议特征。5.根据权利要求1所述的应用层协议特征的提取方法,其特征在于所述频繁1项集的长度为2的倍数,且大于等于4。6.根据权利要求2所述的应用层协议特征的提取方法,其特征在于在所述步骤(2)和(4)的频繁项集的提取过程中,包括删除不产生频繁项集的流量数据包的过程。7.根据权利要求1至6中任一项所述的应用层协议特征的提取方法,其特征在于在所述步骤(1)中还包括对捕获到的流量数据包进行预处理的过程将捕获到流量数据包进行上行网络流量和下行网络流量的分流,只保留上行网络流8.根据权利要求7所述的应用层协议特征的提取方法,其特征在于在所述对捕获到的流量数据包进行预处理的过程中还包括对上行网络流量的每一个流量数据包的链路层、网络层、传输层的头文件信息去除,只保留应用层数据信息,形成应用层协议信息数据包供后续步骤使用的过程。9.根据权利要求8所述的应用层协议特征的提取方法,其特征在于在所述对捕获到的流量数据包进行预处理的过程中还包括根据设定的应用层协议信息数据包长度阈值L对应用层协议信息数据包进行限制和截取的过程,使得每个应用层协议信息数据包只保留长度为L的数据信息。10.根据权利要求1至6中任一项所述的应用层协议特征的提取方法,其特征在于在所述步骤(5)之后还包括对提取出的应用层的协议特征集合进行优化的过程删除协议特征集合中不具代表性的协议特征和应用层通用的协议特征。全文摘要本发明公开了一种应用层协议特征的提取方法,从工程应用角度出发将数据挖掘的思想和方法实际应用到应用层协议特征的提取过程中,提出了一套基于Apriori算法的数据挖掘AC算法,并在此基础上根据应用层协议流量数据量大的特点,从应用层协议数据包的有效包长、有效流量和无用流量等角度出发,提出了对流量数据包进行限制预处理的策略,从而克服了手动分析的不足,促进了企业和公司应用层协议分析工作的信息化和智能化,为企业和公司减轻了人力资源的负担,提高了工作效率和协议识别的准确率。文档编号H04L29/08GK101753622SQ20091026010公开日2010年6月23日申请日期2009年12月25日优先权日2009年12月25日发明者刘荣烨申请人:青岛朗讯科技通讯设备有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1