CN110519179B - 一种用于网络流量识别的流量数据公共特征提取方法 - Google Patents
一种用于网络流量识别的流量数据公共特征提取方法 Download PDFInfo
- Publication number
- CN110519179B CN110519179B CN201910854204.4A CN201910854204A CN110519179B CN 110519179 B CN110519179 B CN 110519179B CN 201910854204 A CN201910854204 A CN 201910854204A CN 110519179 B CN110519179 B CN 110519179B
- Authority
- CN
- China
- Prior art keywords
- characteristic
- sequence
- subsequence
- flow
- cur
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/24—Traffic characterised by specific attributes, e.g. priority or QoS
- H04L47/2483—Traffic characterised by specific attributes, e.g. priority or QoS involving identification of individual flows
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明了公开了一种用于网络流量识别的流量数据公共特征提取方法,目的是解决网络流量数据公共特征快速提取问题。技术方案是先构建网络流量数据公共特征提取系统。该系统从流量数据文件读取网络数据报文,生成网络流链表;对网络流链表中的元素分别构建流数据序列;根据特征子序列参数将流数据序列截取为不同长度的特征子序列,根据特征子序列生成流特征树;对每个节点计算特征子序列的长度和每个特征子序列在流数据序列中出现的概率,从计算节点概率后的流特征树中提取出符合特征序列限定参数条件的公共特征序列。采用本发明能满足目前网络流量识别对于公共特征提取的速度和准确性的要求。
Description
技术领域
本发明属于网络应用流量识别技术领域,尤其涉及一种用于网络流量识别的流量数据公共特征提取方法。
背景技术
随着计算机网络技术的发展,网络流量数据公共特征成为网络流量分析和分类的有效技术手段。网络流量数据公共特征是指同一类网络流量中共同包含的字节序列。图1为现有网络流量识别方法与网络流量数据特征提取的关系示意图。如图1所示,现有的网络流量识别方法包括以下步骤:
第一步,从已识别的网络流量数据中获取已识别报文数据;
第二步,对已识别报文数据进行网络流量公共特征提取,得到网络流量数据公共特征;
第三步,根据网络流量数据公共特征对网络流量进行识别。
由以上步骤可知,网络流量数据公共特征提取是利用网络流量数据特征进行网络流量识别的基础。
目前网络流量数据公共特征提取方法主要采用最长公共子序列算法LCS(LongestCommon Subsequence),LCS方法存在如下缺陷:
1)用于网络流量识别的流量特征需要从大量的已识别流量数据序列中找出出现概率最高的公共特征,而最长公共子序列算法每次计算只能获取2个数据序列的公共子序列,导致要从大量的已识别流量数据序列中找出出现概率最高的公共特征,须经过多次两两数据序列比对,计算量呈指数增长,计算复杂、计算速度慢,因此无法满足网络流量识别的速度需要。
2)最长公共子序列算法主要用于计算2个数据序列最长公共子序列,对于不同子序列在流量数据中的出现概率等无法统计,导致无法确定提取的公共子序列是否为网络流特征。
如何从大量网络流量数据中快速、准确地提取到网络流量数据公共特征是网络流量识别领域技术人员极为关注的技术问题。
发明内容
本发明要解决的技术问题是提出一种应用于网络流量识别的流量数据公共特征提取方法,解决网络流量数据公共特征快速提取问题,为基于流量数据公共特征提取的网络流量识别提供支撑。
本发明从已识别流量数据文件(可以使用UNIBS-2009网络流量数据集(netweb.ing.unibs.it/~ntw/tools/traces)或者CAIDA网络流量数据集(www.caida.org/data/overview/))中提取出每种流量的公共特征,满足目前网络流量识别对于公共特征提取的速度和准确性的要求。
本发明包括以下步骤:
第一步,构建网络流量数据公共特征提取系统。该系统由流重组部件、流数据序列构建部件、特征子序列提取部件、流特征树构建部件、特征子序列概率统计部件、特征序列输出部件、参数配置文件组成。
参数配置文件用于存储网络流量数据公共特征提取系统的输入参数,包括流数据序列参数(包括构建流数据序列的最大报文数量Np、构建流数据序列时使用的每个报文最大字节数量Nb,Np和Nb均为整数,10≤Np≤50,40≤Nb≤200,Np优选值为20,Nb优选值为100)、特征子序列参数(包括特征子序列的最小长度MINL、特征子序列的最大长度MAXL,2≤MINL≤6,2≤MAXL≤6,MINL和MAXL均为整数,MINL优选值为3,MAXL优选值为20)、流数据序列总数N、特征序列限定参数(包括特征序列在数据流中最小出现概率F,特征子序列最小长度MINL,特征子序列最大长度MAXL)。
流重组部件与流数据序列构建部件和流量数据文件相连,它从流量数据文件获取网络数据报文,并根据网络数据报文的五元组(五元组为源IP地址、目的IP地址、源端口、目的端口、协议号)以及时间标签,将流量数据文件中属于同一个网络流的数据报文组合到一起,成为网络流链表的一个元素,并将网络流链表输出给流数据序列构建部件。网络流链表中1个元素存储1个网络流的数据报文。网络流链表元素包括7个域,分别为:网络流的源IP地址、目的IP地址、源端口、目的端口、协议号、时间标签信息、报文链表。报文链表用于存储网络流的报文(报文链表中每个元素存储一个报文,若属于同一个网络流的数据报文有M个,则报文链表中有M个元素)。
流数据序列构建部件与流重组部件、特征子序列提取部件和参数配置文件相连,流数据序列构建部件从参数配置文件读取流数据序列参数Np和Nb,从流重组部件接收网络流链表,根据Np和Nb,将网络流链表中的每个元素构建成流数据序列,并统计流数据序列总数N,将构建的N个流数据序列输出给特征子序列提取部件,将流数据序列总数N输出给参数配置文件。
特征子序列提取部件与流数据序列构建部件、流特征树构建部件和参数配置文件相连,它从流数据序列构建部件接收N个流数据序列,从参数配置文件读取特征子序列参数,根据特征子序列参数将N个流数据序列分解为Ns个长度不一的特征子序列,并将特征子序列、特征子序列所属流数据序列序号、特征子序列总数Ns发送给流特征树构建部件。
流特征树构建部件与特征子序列提取部件和特征子序列概率统计部件相连,它从特征子序列提取部件接收特征子序列、特征子序列所属流数据序列序号、特征子序列总数Ns,构建流特征树,并将流特征树输出给特征子序列概率统计部件。流特征树是存储特征子序列的数据结构。流特征树中的1个节点存储特征子序列中的1个字节,从根节点直至某个节点的各级子节点存储的字节连接来构成一个特征子序列。节点包含8个域:①c,记录当前节点表示的字节的值;②flag,记录该节点存储的字节是否为所属特征子序列的结尾字节,1表示是结尾字节,0表示不是结尾字节;③deep,记录当前字节在所属特征子序列中的位置,特征子序列中第k个字节对应节点的deep值为k;④count,值为包含以当前字节结尾的特征子序列的流数据序列的个数;⑤flownum,记录以当前字节结尾的特征子序列最后出现的流数据序列的编号;⑥parent,是指针,指向该节点的父节点;⑦f,是实数,记录从根节点直至当前节点的各级子节点存储的字节构成的特征子序列在报文链表中出现的概率;⑧next[MAX],指针数组,每个元素指向本节点的1个子节点,每个子节点存储本字节在特征子序列中的下一个字节,其中其中MAX为整数且MAX≥256,优选值为256。
特征子序列概率统计部件与流特征树构建部件、特征序列输出部件和参数配置文件相连,它从流特征树构建部件接收流特征树,扫描流特征树的每个节点,计算流特征树的一个节点记录的特征子序列的长度和每个特征子序列在流数据序列中出现的概率,将计算特征子序列在流数据序列中出现概率后的流特征树输出给特征序列输出部件。
特征序列输出部件与特征子序列概率统计部件和参数配置文件相连,它从特征子序列概率统计部件接收计算特征子序列在流数据序列中出现概率后的流特征树,从参数配置文件读取特征序列限定参数,扫描计算特征子序列在流数据序列中出现概率后的流特征树,根据特征序列限定参数找出满足特征序列限定参数条件的节点,获得流数据序列中的公共特征序列。
第二步,流重组部件从流量数据文件读取网络数据报文,根据网络数据报文的五元组和时间标签,将同一个网络流的M个网络报文组合到一起,生成网络流链表。具体方法是:
2.1流重组部件初始化网络流链表为空。
2.2令网络报文序号d=1。
2.3流重组部件从流量数据文件读取第d个网络数据报文,提取第d个网络数据报文的五元组,判定第d个网络数据报文是否属于网络流链表中已经存在的某元素所代表的网络流,根据判定结果进行以下步骤:
2.3.1如果第d个网络数据报文的源IP地址与网络流链表中某个元素(令为元素Y)的源IP地址相同且第d个网络数据报文的目的IP地址与元素Y的目的IP地址相同,或者第d个网络数据报文的源IP地址与元素Y的目的IP地址相同且报文的目的IP地址与元素Y的源IP地址相同,转步骤2.3.2,否则说明第d个网络数据报文属于新的网络流(即第d个网络数据报文不属于网络流链表中已经存在的任何元素所代表的网络流),转步骤2.4。
2.3.2流重组部件判断端口,如果第d个网络数据报文的源端口与网络流链表中元素Y的源端口相同且第d个网络数据报文的目的端口与元素Y的目的端口相同,或者报文的源端口与网络流链表中元素Y的目的端口相同且第d个网络数据报文的目的端口与元素Y的源端口相同,转步骤2.3.3,否则说明第d个网络数据报文属于新的网络流,转步骤2.4。
2.3.3流重组部件判断时间标签,如果第d个网络数据报文的时间标签与元素Y的时间标签之差在阈值m内,0<m≤100毫秒,m优选值为100毫秒,则第d个网络数据报文属于元素Y所代表的网络流,转步骤2.3.4,否则第d个网络数据报文属于新的网络流,转步骤2.4。
2.3.4将第d个网络数据报文加入到元素Y的报文链表中,转步骤2.5。
2.4在网络流链表中添加网络流链表元素,以第d个网络数据报文五元组为新网络流链表元素的五元组,将第d个网络数据报文加至该新网络流链表元素的报文链表。
2.5令d=d+1,若流量数据文件中还有未处理的报文,转步骤2.3,若流量数据文件中的所有报文均已处理完,转2.6。
2.6流重组部件将网络流链表发送给流数据序列构建部件,令此时的网络流链表元素为N个。
第三步,流数据序列构建部件从参数配置文件读取流数据序列参数Np和Nb,从流重组部件接收网络流链表,根据Np、Nb对网络流链表中的N个元素分别构建流数据序列,得到N个流数据序列。具体方法为:
3.1流数据序列构建部件从参数配置文件读取参数Np和Nb。
3.2初始化循环参数i=1。
3.3若Np≤s,s是第i个网络流链表元素的报文链表中报文数量,流数据序列构建部件从第i个网络流链表元素的报文链表中提取前Np个报文,令取出的报文为S1,S2,…Su…,其中1≤u≤Np,转3.4;若Np>s,则取第i个网络流链表元素的报文链表中所有s个报文,令取出的报文为S1,S2,…Sv…,Ss,其中1≤v≤s,转3.5。
3.5流数据序列构建部件分别从S1,S2,…Sv…,Ss中提取前Nb个字节,按照先后顺序将提取的s个长度为Nb的字节串接在一起构建第i条流数据序列,转3.6。
3.6若i<N,令i=i+1,转步骤3.2,若i=N,转步骤3.7。
3.7流数据序列构建部件将N个流数据序列发送给特征子序列提取部件,此时流数据序列总数为N,流数据序列构建部件将参数N发送给参数配置文件。
第四步,特征子序列提取部件从参数配置文件读取特征子序列参数,从流数据序列构建部件接收N个流数据序列,并根据特征子序列参数将N个流数据序列截取为Ns个不同长度的特征子序列。特征子序列是流数据序列中的子序列,作为流数据公共特征的候选。具体方法为:
4.1特征子序列提取部件从参数配置文件读取特征子序列参数。特征子序列参数包括特征子序列的最小长度MINL、特征子序列的最大长度MAXL。初始化循环参数i=1,初始化提取的特征子序列的个数Ns=0。
4.2特征子序列提取部件按字节计算第i条流数据序列的长度LENi。
4.3特征子序列提取部件定义用于截取特征子序列的2个指针p和q,其中p为截取子序列的首指针,q为截取子序列的尾指针。通过移动p和q,截取第i条流数据序列的不同的特征子序列。具体方法如下:
4.3.1定义第一循环变量jp=1,第二循环变量jq=1。
4.3.2移动p,使p指向第i条流数据序列的第jp个字节,令jq=jp+MINL-1。
4.3.3令jq=jq+1,移动q,使q指向第i条流数据序列的第jq个字节。
4.3.4截取并存储指针p和q间的特征子序列,并将该特征子序列所在流数据的序号放到序号数组fn中,即令fn[Ns]=i。令Ns=Ns+1。
4.3.5如果jq<jp+MAXL,转4.3.3。
4.3.6如果jp<LENi-MAXL,令jp=jp+1,返回4.3.2;否则第i条流数据序列提取完毕(即第i条流数据序列中剩下的字节长度达不到MINL,构不成一个特征子序列),得到Ns个特征子序列、Ns个特征子序列所在流数据序号数组fn,转4.4。
4.4若i<N,令i=i+1,转步骤4.2,若i=N,将4.3.4步中提取的Ns个特征子序列、Ns个特征子序列所在流数据序号数组fn以及特征子序列总数Ns发送给流特征数构建部件。
第五步,流特征树构建部件从特征子序列提取部件接收Ns个特征子序列,根据Ns个特征子序列生成流特征树。具体方法为:
5.1初始化流特征树根节点V0,V0的各个域初始化为:V0的c=0,V0的flag=0,V0的deep=0,V0的count=0,V0的flownum=0,V0的parent=V0,V0的f=0,V0的next[i2]=0(i2=0,1…MAX-1)。
5.2令第三循环变量i3=1,令第i3个特征子序列为Bi3。
5.3以字节为单位计算Bi3的长度NBi3(即Bi3中所含的字节数)。对Bi3中的第k个字节建立特征树节点,将字节在Bi3中的前后顺序关系转换为特征树中节点间的父子关系,以V0作为记录Bi3首字节的节点的父节点,将Bi3加入特征树。具体方法如下:
5.3.1定义当前处理的特征树节点cur0,令cur0=V0,初始化特征子序列字节序号k=1;
5.3.2获取Bi3的第k个字节Bik,设Bik的无符号整数值为Xk(由于Bik是一个字节,其无符号整数值最大为28-1,必然小于MAX)。
5.3.3如果cur0节点的next[Xk]值不为0,转步骤5.3.6;如果cur0节点的next[Xk]值为0,转步骤5.3.4。
5.3.4为字节Bik建立特征树节点VBik,按照下述方法为VBik赋值:
如果k<NBi3-1,则:令VBik的c=Xk,flag=0,令VBik的deep=k,令VBik的count=0,令VBik的flownum=0,令VBik的parent=cur0,令VBik的next[i4]=0(i4=0,1…MAX-1),转5.3.5。
如果k=NBi3-1,令VBik的flag=1,令VBik的deep=k,令VBik的count=1,令VBik的flownum=0,令VBik的parent=cur0,令VBik的next[i4]=0,转5.3.5。
5.3.5将节点VBik插入特征树,方法是令节点cur0的next[Xk]为VBik,即令cur0->next[Xk]=VBik。
5.3.6令节点VBik为当前节点:即令cur0=VBik。
5.3.7如果k=NBi3-1且节点cur0的flownum不等于fn[i3]并且cur0的flag等于0,重置cur0中各域的值,即令flag=1,count=count+1,flownum=fn[i3],转5.3.9;否则,转5.3.8。
5.3.8若k<NBi3-1,令k=k+1,转步骤5.3.2处理下一个字节。
5.3.9若i3<Ns,令i3=i3+1,转5.3。否则将构建的流特征树(根节点为V0)发送给特征子序列概率统计部件。
第六步,特征子序列概率统计部件从流特征树构建部件接收流特征树,从参数配置文件读取流数据序列总数N,扫描流特征树的每个节点,对每个节点计算其所有子节点存储的特征子序列的长度和每个特征子序列在流数据序列中出现的概率,并将计算节点概率后的流特征树输出给特征序列输出部件。具体步骤如下:
6.1定义特征树当前节点cur1,令cur1为特征树根节点V0。
6.2判断cur1是否为空。若cur1不为空,转步骤6.3,若cur1为空,转6.4.2。
6.3计算cur1代表的特征子序列的概率,方法为:
cur1->f=cur1->count/N,cur1->f表示cur1的f,cur1->count表示cur1的count。
6.4定义循环变量i4=0,循环处理cur1节点的每个子节点,步骤如下:
6.4.1令cur1=cur1->next[i4],cur1->next[i4]表示cur1的next[i4]。转步骤6.2。
6.4.2令i4=i4+1,如果i4<MAX,转步骤6.4.1,否则转6.5。
6.5将计算节点概率后的流特征树发送给特征序列输出部件。
第七步,特征序列输出部件从特征子序列概率统计部件接收计算节点概率后的流特征树,从参数配置文件读取特征序列限定参数(即特征序列在数据流中最小出现概率F,特征子序列最小长度MINL,特征子序列最大长度MAXL),根据特征序列限定参数从计算节点概率后的流特征树中提取出符合特征序列限定参数条件的特征序列,即流数据序列中的公共特征序列。从计算节点概率后的流特征树中提取出流数据串中的公共特征序列,具体步骤如下:
7.1定义特征树节点cur2,令cur2为计算节点概率后的流特征树的根节点V0。
7.2判断cur2是否为空。若cur2不为空,转步骤7.3,若cur2为空或者cur2->count=0,cur2->count指cur2的count,转7.4.2。
7.3判断cur2代表的子序列是否满足特征序列条件,是则获取并输出公共特征序列,否则遍历下一个节点。具体步骤如下:
7.3.1判断cur2是否同时满足以下2个条件:以cur2为结尾字节的子序列是否同时满足特征序列条件即:
①cur2->f大于F,cur2->f指cur2的f;
②cur2->deep小于MAXL并且大于MINL,cur2->deep指cur2的deep。
如果2个条件均满足,以cur2为结尾字节的子序列满足公共特征序列条件,执行7.3.4,否则转7.4。
7.3.4定义变量deep0=cur2->deep,定义用于存储特征序列的长度为deep0的数组str,令str[j]=0(j的范围为0,1…deep0-1),初始化循环变量j=0,定义变量cur3=cur2。
7.3.5令str[j]=cur3->c,cur3=cur3->parent,cur3->c指cur3的c,cur3->parent指cur3的parent。
7.3.6令j=j+1,如果j小于deep0,转7.3.5;如果j大于等于deep0,转7.3.7。
7.3.7令str[j]=0(表示公共特征序列结尾),将公共特征序列str输出至文件file。
7.4定义循环变量i4=0,循环处理cur2的每个子节点,计算步骤如下:
7.4.1将第i4个子节点赋值给cur2,令cur2=cur2->next[i4]。转步骤7.2。
7.4.2令i4=i4+1,如果i4<MAX转步骤7.4.1,否则转第八步。
第八步,输出存储所有公共特征序列的文件file,结束。
采用本发明可以达到以下技术效果:
1)本发明第二步到第六步将所有特征子序列插入流特征结构树中,生成流特征树,扫描流特征树的每个节点,对每个节点计算其所有子节点存储的特征子序列的长度和每个特征子序列在流数据序列中出现的概率,计算方法简单精确、计算量低,满足网络流量识别的需要,解决了最长公共子序列算法1次计算只能获取2个数据序列的公共子序列,从大量的已识别流量数据序列中找出出现概率最高的公共特征须经过多次两两数据序列比对时计算量呈指数增长,计算复杂、计算速度慢的缺陷。
2)本发明第六步通过构建的流特征树精确计算所有公共子序列在已识别网络流量中的出现概率,从而确定公共子序列成为特征序列的概率,提高了特征序列提取的准确性。
3)本发明第七步根据特征序列限定参数从统计节点概率后的流特征树中提取流数据串中的公共特征,提高了对网络流量数据公共特征提取的速度,解决了最长公共子序列算法主要用于计算最长公共子序列,对于不同子序列在流数据中的出现概率等无法统计的缺陷。
附图说明
图1是背景技术所述网络流量识别方法与网络流量数据特征提取的关系示意图;
图2是本发明总体流程图;
图3是本发明第一步构建的网络流量数据公共特征提取系统逻辑结构图。
具体实施方式
图2是本发明总体流程图;如图2所示,本发明包括以下步骤:
第一步,构建网络流量数据公共特征提取系统。该系统如图3所示,由流重组部件、流数据序列构建部件、特征子序列提取部件、流特征树构建部件、特征子序列概率统计部件、特征序列输出部件、参数配置文件组成。
参数配置文件用于存储网络流量数据公共特征提取系统的输入参数,包括流数据序列参数(包括构建流数据序列的最大报文数量Np、构建流数据序列时使用的每个报文最大字节数量Nb,Np和Nb均为整数)、特征子序列参数(包括特征子序列的最小长度MINL、特征子序列的最大长度MAXL)、流数据序列总数N、特征序列限定参数(包括特征序列在数据流中最小出现概率F,特征子序列最小长度MINL,特征子序列最大长度MAXL)。
流重组部件与流数据序列构建部件和流量数据文件相连,它从流量数据文件获取网络数据报文,并根据网络数据报文的五元组(五元组为源IP地址、目的IP地址、源端口、目的端口、协议号)以及时间标签,将流量数据文件中属于同一个网络流的数据报文组合到一起,成为网络流链表的一个元素,并将网络流链表输出给流数据序列构建部件。网络流链表中1个元素存储1个网络流的数据报文。网络流链表元素包括7个域,分别为:网络流的源IP地址、目的IP地址、源端口、目的端口、协议号、时间标签信息、报文链表。报文链表用于存储网络流的报文(报文链表中每个元素存储一个报文,若属于同一个网络流的数据报文有M个,则报文链表中有M个元素)。
流数据序列构建部件与流重组部件、特征子序列提取部件和参数配置文件相连,流数据序列构建部件从参数配置文件读取流数据序列参数Np和Nb,从流重组部件接收网络流链表,根据Np和Nb,将网络流链表中的每个元素构建成流数据序列,并统计流数据序列总数N,将构建的N个流数据序列输出给特征子序列提取部件,将流数据序列总数N输出给参数配置文件。
特征子序列提取部件与流数据序列构建部件、流特征树构建部件和参数配置文件相连,它从流数据序列构建部件接收N个流数据序列,从参数配置文件读取特征子序列参数,根据特征子序列参数将N个流数据序列分解为Ns个长度不一的特征子序列,并将特征子序列、特征子序列所属流数据序列序号、特征子序列总数Ns发送给流特征树构建部件。
流特征树构建部件与特征子序列提取部件和特征子序列概率统计部件相连,它从特征子序列提取部件接收特征子序列、特征子序列所属流数据序列序号、特征子序列总数Ns,构建流特征树,并将流特征树输出给特征子序列概率统计部件。流特征树是存储特征子序列的数据结构。流特征树中的1个节点存储特征子序列中的1个字节,从根节点直至某个叶子节点的各级子节点存储的字节连接来构成一个特征子序列。节点包含8个域:①c,记录当前节点表示的字节的值;②flag,记录该节点存储的字节是否为所属特征子序列的结尾字节,1表示是结尾字节,0表示不是结尾字节;③deep,记录当前字节在所属特征子序列中的位置,特征子序列中第k个字节对应节点的deep值为k;④count,值为包含以当前字节结尾的特征子序列的流数据序列的个数;⑤flownum,记录以当前字节结尾的特征子序列最后出现的流数据序列的编号;⑥parent,是指针,指向该节点的父节点;⑦f,是实数,记录从根节点直至当前节点的各级子节点存储的字节构成的特征子序列在报文链表中出现的概率;⑧next[MAX],指针数组,每个元素指向本节点的1个子节点,每个子节点存储本字节在特征子序列中的下一个字节。
特征子序列概率统计部件与流特征树构建部件、特征序列输出部件和参数配置文件相连,它从流特征树构建部件接收流特征树,扫描流特征树的每个节点,计算流特征树的一个节点记录的特征子序列的长度和每个特征子序列在流数据序列中出现的概率,将计算特征子序列在流数据序列中出现概率后的流特征树输出给特征序列输出部件。
特征序列输出部件与特征子序列概率统计部件和参数配置文件相连,它从特征子序列概率统计部件接收计算特征子序列在流数据序列中出现概率后的流特征树,从参数配置文件读取特征序列限定参数,扫描计算特征子序列在流数据序列中出现概率后的流特征树,根据特征序列限定参数找出满足特征序列限定参数条件的节点,获得流数据序列中的公共特征序列。
第二步,流重组部件从流量数据文件读取网络数据报文,根据网络数据报文的五元组和时间标签,将同一个网络流的M个网络报文组合到一起,生成网络流链表。具体方法是:
2.1流重组部件初始化网络流链表为空。
2.2令网络报文序号d=1。
2.3流重组部件从流量数据文件读取第d个网络数据报文,提取第d个网络数据报文的五元组,判定第d个网络数据报文是否属于网络流链表中已经存在的某元素所代表的网络流,根据判定结果进行以下步骤:
2.3.1如果第d个网络数据报文的源IP地址与网络流链表中某个元素(令为元素Y)的源IP地址相同且第d个网络数据报文的目的IP地址与元素Y的目的IP地址相同,或者第d个网络数据报文的源IP地址与元素Y的目的IP地址相同且报文的目的IP地址与元素Y的源IP地址相同,转步骤2.3.2,否则说明第d个网络数据报文属于新的网络流,转步骤2.4。
2.3.2流重组部件判断端口,如果第d个网络数据报文的源端口与网络流链表中元素Y的源端口相同且第d个网络数据报文的目的端口与元素Y的目的端口相同,或者报文的源端口与网络流链表中元素Y的目的端口相同且第d个网络数据报文的目的端口与元素Y的源端口相同,转步骤2.3.3,否则说明第d个网络数据报文属于新的网络流,转步骤2.4。
2.3.3流重组部件判断时间标签,如果第d个网络数据报文的时间标签与元素Y的时间标签之差在阈值m内,0<m≤100毫秒,m优选值为100毫秒,则第d个网络数据报文属于元素Y所代表的网络流,转步骤2.3.4,否则第d个网络数据报文属于新的网络流,转步骤2.4。
2.3.4将第d个网络数据报文加入到元素Y的报文链表中,转步骤2.5。
2.4在网络流链表中添加网络流链表元素,以第d个网络数据报文五元组为新网络流链表元素的五元组,将第d个网络数据报文加至该新网络流链表元素的报文链表。
2.5令d=d+1,若流量数据文件中还有未处理的报文,转步骤2.3,若流量数据文件中的所有报文均已处理完,转2.6。
2.6流重组部件将网络流链表发送给流数据序列构建部件,令此时的网络流链表元素为N个。
第三步,流数据序列构建部件从参数配置文件读取流数据序列参数Np和Nb,从流重组部件接收网络流链表,根据Np、Nb对网络流链表中的N个元素分别构建流数据序列,得到N个流数据序列。具体方法为:
3.1流数据序列构建部件从参数配置文件读取参数Np和Nb。
3.2初始化循环参数i=1。
3.3若Np≤s,s是第i个网络流链表元素的报文链表中报文数量,流数据序列构建部件从第i个网络流链表元素的报文链表中提取前Np个报文,令取出的报文为S1,S2,…Su…,其中1≤u≤Np,转3.4;若Np>s,则取第i个网络流链表元素的报文链表中所有s个报文,令取出的报文为S1,S2,…Sv…,Ss,其中1≤v≤s,转3.5。
3.5流数据序列构建部件分别从S1,S2,…Sv…,Ss中提取前Nb个字节,按照先后顺序将提取的s个长度为Nb的字节串接在一起构建第i条流数据序列,转3.6。
3.6若i<N,令i=i+1,转步骤3.2,若i=N,转步骤3.7。
3.7流数据序列构建部件将N个流数据序列发送给特征子序列提取部件,此时流数据序列总数为N,流数据序列构建部件将参数N发送给参数配置文件。
第四步,特征子序列提取部件从参数配置文件读取特征子序列参数,从流数据序列构建部件接收N个流数据序列,并根据特征子序列参数将N个流数据序列截取为Ns个不同长度的特征子序列。特征子序列是流数据序列中的子序列,作为流数据公共特征的候选。具体方法为:
4.1特征子序列提取部件从参数配置文件读取特征子序列参数。特征子序列参数包括特征子序列的最小长度MINL、特征子序列的最大长度MAXL。初始化循环参数i=1,初始化提取的特征子序列的个数Ns=0。
4.2特征子序列提取部件按字节计算第i条流数据序列的长度LENi。
4.3特征子序列提取部件定义用于截取特征子序列的2个指针p和q,其中p为截取子序列的首指针,q为截取子序列的尾指针。通过移动p和q,截取第i条流数据序列的不同的特征子序列。具体方法如下:
4.3.1定义第一循环变量jp=1,第二循环变量jq=1。
4.3.2移动p,使p指向第i条流数据序列的第jp个字节,令jq=jp+MINL-1。
4.3.3令jq=jq+1,移动q,使q指向第i条流数据序列的第jq个字节。
4.3.4截取并存储指针p和q间的特征子序列,并将该特征子序列所在流数据的序号放到序号数组fn中,即令fn[Ns]=i。令Ns=Ns+1。
4.3.5如果jq<jp+MAXL,转4.3.3。
4.3.6如果jp<LENi-MAXL,令jp=jp+1,返回4.3.2;否则第i条流数据序列提取完毕,得到Ns个特征子序列、Ns个特征子序列所在流数据序号数组fn,转4.4。
4.4若i<N,令i=i+1,转步骤4.2,若i=N,将4.3.4步中提取的Ns个特征子序列、Ns个特征子序列所在流数据序号数组fn以及特征子序列总数Ns发送给流特征数构建部件。
第五步,流特征树构建部件从特征子序列提取部件接收Ns个特征子序列,根据Ns个特征子序列生成流特征树。具体方法为:
5.1初始化流特征树根节点V0,V0的各个域初始化为:V0的c=0,V0的flag=0,V0的deep=0,V0的count=0,V0的flownum=0,V0的parent=V0,V0的f=0,V0的next[i2]=0(i2=0,1…MAX-1)。
5.2令第三循环变量i3=1,令第i3个特征子序列为Bi3。
5.3以字节为单位计算Bi3的长度NBi3(即Bi3中所含的字节数)。对Bi3中的第k个字节建立特征树节点,将字节在Bi3中的前后顺序关系转换为特征树中节点间的父子关系,以V0作为记录Bi3首字节的节点的父节点,将Bi3加入特征树。具体方法如下:
5.3.1定义当前处理的特征树节点cur0,令cur0=V0,初始化特征子序列字节序号k=1;
5.3.2获取Bi3的第k个字节Bik,设Bik的无符号整数值为Xk。
5.3.3如果cur0节点的next[Xk]值不为0,转步骤5.3.6;如果cur0节点的next[Xk]值为0,转步骤5.3.4。
5.3.4为字节Bik建立特征树节点VBik,按照下述方法为VBik赋值:
如果k<NBi3-1,则:令VBik的c=Xk,flag=0,令VBik的deep=k,令VBik的count=0,令VBik的flownum=0,令VBik的parent=cur0,令VBik的next[i4]=0(i4=0,1…MAX-1),转5.3.5。
如果k=NBi3-1,令VBik的flag=1,令VBik的deep=k,令VBik的count=1,令VBik的flownum=0,令VBik的parent=cur0,令VBik的next[i4]=0,转5.3.5。
5.3.5将节点VBik插入特征树,方法是令节点cur0的next[Xk]为VBik,即令cur0->next[Xk]=VBik。
5.3.6令节点VBik为当前节点:即令cur0=VBik。
5.3.7如果k=NBi3-1且节点cur0的flownum不等于fn[i3]并且cur0的flag等于0,重置cur0中各域的值,即令flag=1,count=count+1,flownum=fn[i3],转5.3.9;否则,转5.3.8。
5.3.8若k<NBi3-1,令k=k+1,转步骤5.3.2处理下一个字节。
5.3.9若i3<Ns,令i3=i3+1,转5.3。否则将构建的流特征树(根节点为V0)发送给特征子序列概率统计部件。
第六步,特征子序列概率统计部件从流特征树构建部件接收流特征树,从参数配置文件读取流数据序列总数N,扫描流特征树的每个节点,对每个节点计算其所有子节点存储的特征子序列的长度和每个特征子序列在流数据序列中出现的概率,并将计算节点概率后的流特征树输出给特征序列输出部件。具体步骤如下:
6.1定义特征树当前节点cur1,令cur1为特征树根节点V0。
6.2判断cur1是否为空。若cur1不为空,转步骤6.3,若cur1为空,转6.4.2。
6.3计算cur1代表的特征子序列的概率,方法为:
cur1->f=cur1->count/N,cur1->f表示cur1的f,cur1->count表示cur1的count。
6.4定义循环变量i4=0,循环处理cur1节点的每个子节点,步骤如下:
6.4.1令cur1=cur1->next[i4],cur1->next[i4]表示cur1的next[i4]。转步骤6.2。
6.4.2令i4=i4+1,如果i4<MAX,转步骤6.4.1,否则转6.5。
6.5将计算节点概率后的流特征树发送给特征序列输出部件。
第七步,特征序列输出部件从特征子序列概率统计部件接收计算节点概率后的流特征树,从参数配置文件读取特征序列限定参数(即特征序列在数据流中最小出现概率F,特征子序列最小长度MINL,特征子序列最大长度MAXL),根据特征序列限定参数从计算节点概率后的流特征树中提取出符合特征序列限定参数条件的特征序列,即流数据序列中的公共特征序列。从计算节点概率后的流特征树中提取出流数据串中的公共特征序列,具体步骤如下:
7.1定义特征树节点cur2,令cur2为计算节点概率后的流特征树的根节点V0。
7.2判断cur2是否为空。若cur2不为空,转步骤7.3,若cur2为空或者cur2->count=0,cur2->count指cur2的count,转7.4.2。
7.3判断cur2代表的子序列是否满足特征序列条件,是则获取并输出公共特征序列,否则遍历下一个节点。具体步骤如下:
7.3.1判断cur2是否同时满足以下2个条件:以cur2为结尾字节的子序列是否同时满足特征序列条件即:
①cur2->f大于F,cur2->f指cur2的f;
②cur2->deep小于MAXL并且大于MINL,cur2->deep指cur2的deep。
如果2个条件均满足,以cur2为结尾字节的子序列满足公共特征序列条件,执行7.3.4,否则转7.4。
7.3.4定义变量deep0=cur2->deep,定义用于存储特征序列的长度为deep0的数组str,令str[j]=0(j的范围为0,1…deep0-1),初始化循环变量j=0,定义变量cur3=cur2。
7.3.5令str[j]=cur3->c,cur3=cur3->parent,cur3->c指cur3的c,cur3->parent指cur3的parent。
7.3.6令j=j+1,如果j小于deep0,转7.3.5;如果j大于等于deep0,转7.3.7。
7.3.7令str[j]=0(表示公共特征序列结尾),将公共特征序列str输出至文件file。
7.4定义循环变量i4=0,循环处理cur2的每个子节点,计算步骤如下:
7.4.1将第i4个子节点赋值给cur2,令cur2=cur2->next[i4]。转步骤7.2。
7.4.2令i4=i4+1,如果i4<MAX转步骤7.4.1,否则转第八步。
第八步,输出存储所有公共特征序列的文件file,结束。
Claims (6)
1.一种用于网络流量识别的流量数据公共特征提取方法,其特征在于包括以下步骤:
第一步,构建网络流量数据公共特征提取系统,网络流量数据公共特征提取系统由流重组部件、流数据序列构建部件、特征子序列提取部件、流特征树构建部件、特征子序列概率统计部件、特征序列输出部件、参数配置文件组成;
参数配置文件用于存储网络流量数据公共特征提取系统的输入参数,包括流数据序列参数、特征子序列参数、流数据序列总数N、特征序列限定参数;流数据序列参数包括构建流数据序列的最大报文数量Np、构建流数据序列时使用的每个报文最大字节数量Nb,Np和Nb均为整数;特征子序列参数包括特征子序列的最小长度MINL、特征子序列的最大长度MAXL,MINL和MAXL均为整数;特征序列限定参数包括特征序列在数据流中最小出现概率F,特征子序列最小长度MINL,特征子序列最大长度MAXL;
流重组部件与流数据序列构建部件和流量数据文件相连,它从流量数据文件获取网络数据报文,并根据网络数据报文的五元组以及时间标签,将流量数据文件中属于同一个网络流的数据报文组合到一起,成为网络流链表的一个元素,并将网络流链表输出给流数据序列构建部件;网络流链表中1个元素存储1个网络流的数据报文,网络流链表元素包括7个域,分别为:网络流的源IP地址、目的IP地址、源端口、目的端口、协议号、时间标签信息、报文链表;报文链表中每个元素存储一个数据报文,若属于同一个网络流的数据报文有M个,则报文链表中有M个元素;所述五元组为源IP地址、目的IP地址、源端口、目的端口、协议号;
流数据序列构建部件与流重组部件、特征子序列提取部件和参数配置文件相连,流数据序列构建部件从参数配置文件读取流数据序列参数Np和Nb,从流重组部件接收网络流链表,根据Np和Nb,将网络流链表中的每个元素构建成流数据序列,并统计流数据序列总数N,将构建的N个流数据序列输出给特征子序列提取部件,将流数据序列总数N输出给参数配置文件;
特征子序列提取部件与流数据序列构建部件、流特征树构建部件和参数配置文件相连,它从流数据序列构建部件接收N个流数据序列,从参数配置文件读取特征子序列参数,根据特征子序列参数将N个流数据序列分解为Ns个长度不一的特征子序列,并将特征子序列、特征子序列所属流数据序列序号、特征子序列总数Ns发送给流特征树构建部件;
流特征树构建部件与特征子序列提取部件和特征子序列概率统计部件相连,它从特征子序列提取部件接收特征子序列、特征子序列所属流数据序列序号、特征子序列总数Ns,构建流特征树,并将流特征树输出给特征子序列概率统计部件;流特征树是存储特征子序列的数据结构,流特征树中的1个节点存储特征子序列中的1个字节,从根节点直至某个叶子节点的各级子节点存储的字节连接构成一个特征子序列;节点包含8个域:①c,记录当前节点表示的字节的值;②flag,记录该节点存储的字节是否为所属特征子序列的结尾字节,1表示是结尾字节,0表示不是结尾字节;③deep,记录当前字节在所属特征子序列中的位置,特征子序列中第k个字节对应节点的deep值为k;④count,值为包含以当前字节结尾的特征子序列的流数据序列的个数;⑤flownum,记录以当前字节结尾的特征子序列最后出现的流数据序列的编号;⑥parent,是指针,指向该节点的父节点;⑦f,是实数,记录从根节点直至当前节点的各级子节点存储的字节构成的特征子序列在报文链表中出现的概率;⑧next[MAX],指针数组,每个元素指向本节点的1个子节点,每个子节点存储本字节在特征子序列中的下一个字节,其中MAX为整数且MAX3256;
特征子序列概率统计部件与流特征树构建部件、特征序列输出部件和参数配置文件相连,它从流特征树构建部件接收流特征树,扫描流特征树的每个节点,计算流特征树的一个节点记录的特征子序列的长度和每个特征子序列在流数据序列中出现的概率,将计算特征子序列在流数据序列中出现概率后的流特征树输出给特征序列输出部件;
特征序列输出部件与特征子序列概率统计部件和参数配置文件相连,它从特征子序列概率统计部件接收计算特征子序列在流数据序列中出现概率后的流特征树,从参数配置文件读取特征序列限定参数,扫描计算特征子序列在流数据序列中出现概率后的流特征树,根据特征序列限定参数找出满足特征序列限定参数条件的节点,获得流数据序列中的公共特征序列;
第二步,流重组部件从流量数据文件读取网络数据报文,根据网络数据报文的五元组和时间标签,将同一个网络流的M个网络报文组合到一起,生成网络流链表,方法是:
2.1流重组部件初始化网络流链表为空;
2.2令网络报文序号d=1;
2.3流重组部件从流量数据文件读取第d个网络数据报文,提取第d个网络数据报文的五元组,判定第d个网络数据报文是否属于网络流链表中已经存在的某元素所代表的网络流,根据判定结果进行以下步骤:
2.3.1如果第d个网络数据报文的源IP地址与网络流链表中元素Y的源IP地址相同且第d个网络数据报文的目的IP地址与元素Y的目的IP地址相同,或者第d个网络数据报文的源IP地址与元素Y的目的IP地址相同且报文的目的IP地址与元素Y的源IP地址相同,转步骤2.3.2,否则说明第d个网络数据报文属于新的网络流,转步骤2.4;
2.3.2流重组部件判断端口,如果第d个网络数据报文的源端口与网络流链表中元素Y的源端口相同且第d个网络数据报文的目的端口与元素Y的目的端口相同,或者报文的源端口与网络流链表中元素Y的目的端口相同且第d个网络数据报文的目的端口与元素Y的源端口相同,转步骤2.3.3,否则说明第d个网络数据报文属于新的网络流,转步骤2.4;
2.3.3流重组部件判断时间标签,如果第d个网络数据报文的时间标签与元素Y的时间标签之差在阈值m内,0<m≤100毫秒,则第d个网络数据报文属于元素Y所代表的网络流,转步骤2.3.4,否则第d个网络数据报文属于新的网络流,转步骤2.4;
2.3.4将第d个网络数据报文加入到元素Y的报文链表中,转步骤2.5;
2.4在网络流链表中添加网络流链表元素,以第d个网络数据报文五元组为新网络流链表元素的五元组,将第d个网络数据报文加至该新网络流链表元素的报文链表;
2.5令d=d+1,若流量数据文件中还有未处理的报文,转步骤2.3,若流量数据文件中的所有报文均已处理完,转2.6;
2.6流重组部件将网络流链表发送给流数据序列构建部件,令此时的网络流链表元素为N个;
第三步,流数据序列构建部件从参数配置文件读取流数据序列参数Np和Nb,从流重组部件接收网络流链表,根据Np、Nb对网络流链表中的N个元素分别构建流数据序列,得到N个流数据序列,方法为:
3.1流数据序列构建部件从参数配置文件读取参数Np和Nb;
3.2初始化循环参数i=1;
3.3若Np≤s,s是第i个网络流链表元素的报文链表中报文数量,流数据序列构建部件从第i个网络流链表元素的报文链表中提取前Np个报文,令取出的报文为其中1≤u≤Np,转3.4;若Np>s,则取第i个网络流链表元素的报文链表中所有s个报文,令取出的报文为S1,S2,…Sv…,Ss,其中1≤v≤s,转3.5;
3.5流数据序列构建部件分别从S1,S2,…Sv…,Ss中提取前Nb个字节,按照先后顺序将提取的s个长度为Nb的字节串接在一起构建第i条流数据序列,转3.6;
3.6若i<N,令i=i+1,转步骤3.2,若i=N,转步骤3.7;
3.7流数据序列构建部件将N个流数据序列发送给特征子序列提取部件,此时流数据序列总数为N,流数据序列构建部件将参数N发送给参数配置文件;
第四步,特征子序列提取部件从参数配置文件读取特征子序列参数,从流数据序列构建部件接收N个流数据序列,并根据特征子序列参数将N个流数据序列截取为Ns个不同长度的特征子序列,特征子序列是流数据序列中的子序列,作为流数据公共特征的候选,方法为:
4.1特征子序列提取部件从参数配置文件读取特征子序列参数,初始化循环参数i=1,初始化提取的特征子序列的个数Ns=0;
4.2特征子序列提取部件按字节计算第i条流数据序列的长度LENi;
4.3特征子序列提取部件定义用于截取特征子序列的2个指针p和q,其中p为截取子序列的首指针,q为截取子序列的尾指针,通过移动p和q,截取第i条流数据序列的不同的特征子序列,得到Ns个特征子序列、Ns个特征子序列所在流数据序号数组fn,方法是:
4.3.1定义第一循环变量jp=1,第二循环变量jq=1;
4.3.2移动p,使p指向第i条流数据序列的第jp个字节,令jq=jp+MINL-1;
4.3.3令jq=jq+1,移动q,使q指向第i条流数据序列的第jq个字节;
4.3.4截取并存储指针p和q间的特征子序列,并将该特征子序列所在流数据的序号放到序号数组fn中,即令fn[Ns]=i;令Ns=Ns+1;
4.3.5如果jq<jp+MAXL,转4.3.3;
4.3.6如果jp<LENi-MAXL,令jp=jp+1,返回4.3.2;否则第i条流数据序列提取完毕,得到Ns个特征子序列、Ns个特征子序列所在流数据序号数组fn,转4.4;
4.4若i<N,令i=i+1,转步骤4.2,若i=N,将Ns个特征子序列、Ns个特征子序列所在流数据序号数组fn以及特征子序列总数Ns发送给流特征数构建部件;
第五步,流特征树构建部件从特征子序列提取部件接收Ns个特征子序列,根据Ns个特征子序列生成流特征树,方法为:
5.1初始化流特征树根节点V0,V0的各个域初始化为:V0的c=0,V0的flag=0,V0的deep=0,V0的count=0,V0的flownum=0,V0的parent=V0,V0的f=0,V0的next[i2]=0,i2=0,1…MAX-1;
5.2令第三循环变量i3=1,令第i3个特征子序列为Bi3;
5.3以字节为单位计算Bi3的长度NBi3,对Bi3中的第k个字节建立特征树节点,将字节在Bi3中的前后顺序关系转换为特征树中节点间的父子关系,以V0作为记录Bi3首字节的节点的父节点,将Bi3加入特征树,方法如下:
5.3.1定义当前处理的特征树节点cur0,令cur0=V0,初始化特征子序列字节序号k=1;
5.3.2获取Bi3的第k个字节Bik,设Bik的无符号整数值为Xk;
5.3.3如果cur0节点的next[Xk]值不为0,转步骤5.3.6;如果cur0节点的next[Xk]值为0,转步骤5.3.4;
5.3.4为字节Bik建立特征树节点VBik,按照下述方法为VBik赋值:
如果k<NBi3-1,则:令VBik的c=Xk,flag=0,令VBik的deep=k,令VBik的count=0,令VBik的flownum=0,令VBik的parent=cur0,令VBik的next[i4]=0,i4=0,1…MAX-1,转5.3.5;
如果k=NBi3-1,令VBik的flag=1,令VBik的deep=k,令VBik的count=1,令VBik的flownum=0,令VBik的parent=cur0,令VBik的next[i4]=0,转5.3.5;
5.3.5将节点VBik插入特征树,方法是令节点cur0的next[Xk]为VBik,即令cur0->next[Xk]=VBik;
5.3.6令节点VBik为当前节点:即令cur0=VBik;
5.3.7如果k=NBi3-1且节点cur0的flownum不等于fn[i3]且cur0的flag等于0,重置cur0中各域的值,即令flag=1,count=count+1,flownum=fn[i3],转5.3.9;否则,转5.3.8;
5.3.8若k<NBi3-1,令k=k+1,转步骤5.3.2
5.3.9若i3<Ns,令i3=i3+1,转5.3;否则将构建的根节点为V0的流特征树发送给特征子序列概率统计部件;
第六步,特征子序列概率统计部件从流特征树构建部件接收流特征树,从参数配置文件读取流数据序列总数N,扫描流特征树的每个节点,对每个节点计算其所有子节点存储的特征子序列的长度和每个特征子序列在流数据序列中出现的概率,并将计算节点概率后的流特征树输出给特征序列输出部件;具体方法是:
6.1定义特征树当前节点cur1,令cur1为特征树根节点V0;
6.2判断cur1是否为空,若cur1不为空,转步骤6.3,若cur1为空,转6.4.2;
6.3计算cur1代表的特征子序列的概率,方法为:
cur1->f=cur1->count/N,cur1->f表示cur1的f,cur1->count表示cur1的count;
6.4定义循环变量i4=0,循环处理cur1节点的每个子节点,步骤如下:
6.4.1令cur1=cur1->next[i4],cur1->next[i4]表示cur1的next[i4],转步骤6.2;
6.4.2令i4=i4+1,如果i4<MAX,转步骤6.4.1,否则转6.5;
6.5将计算节点概率后的流特征树发送给特征序列输出部件;
第七步,特征序列输出部件从特征子序列概率统计部件接收计算节点概率后的流特征树,从参数配置文件读取特征序列限定参数,根据特征序列限定参数从计算节点概率后的流特征树中提取出符合特征序列限定参数条件的特征序列,即流数据序列中的公共特征序列;从计算节点概率后的流特征树中提取出流数据序列中的公共特征序列,方法是:
7.1定义特征树节点cur2,令cur2为计算节点概率后的流特征树的根节点V0;
7.2判断cur2是否为空,若cur2不为空,转步骤7.3,若cur2为空或者cur2->count=0,cur2->count指cur2的count,转7.4.2;
7.3判断cur2代表的子序列是否满足特征序列条件,是则获取并输出公共特征序列,否则遍历下一个节点,具体步骤如下:
7.3.1判断cur2是否同时满足以下2个条件:以cur2为结尾字节的子序列是否同时满足特征序列条件即:
①cur2->f大于F,cur2->f指cur2的f;
②cur2->deep小于MAXL并且大于MINL,cur2->deep指cur2的deep;
如果2个条件均满足,以cur2为结尾字节的子序列满足公共特征序列条件,执行7.3.4,否则转7.4;
7.3.4定义变量deep0=cur2->deep,定义用于存储特征序列的长度为deep0的数组str,令str[j]=0,初始化循环变量j=0,定义变量cur3=cur2;
7.3.5令str[j]=cur3->c,cur3=cur3->parent,cur3->c指cur3的c,cur3->parent指cur3的parent;
7.3.6令j=j+1,如果j小于deep0,转7.3.5;如果j大于等于deep0,转7.3.7;
7.3.7令str[j]=0,将公共特征序列str输出至文件file;
7.4定义循环变量i4=0,循环处理cur2的每个子节点,计算步骤如下:
7.4.1将第i4个子节点赋值给cur2,令cur2=cur2->next[i4],转步骤7.2;
7.4.2令i4=i4+1,如果i4<MAX转步骤7.4.1,否则转第八步;
第八步,输出存储所有公共特征序列的文件file,结束。
2.如权利要求1所述的一种用于网络流量识别的流量数据公共特征提取方法,其特征在于所述Np和Nb满足10≤Np≤50,40≤Nb≤200,所述MINL、MAXL满足2≤MINL≤6,16≤MAXL≤30。
3.如权利要求2所述的一种用于网络流量识别的流量数据公共特征提取方法,其特征在于所述Np为20,Nb为100;所述MINL为3,MAXL为20。
4.如权利要求1所述的一种用于网络流量识别的流量数据公共特征提取方法,其特征在于第二步所述流量数据文件采用UNIBS-2009流量数据集或CTU-13网络流量数据集。
5.如权利要求1所述的一种用于网络流量识别的流量数据公共特征提取方法,其特征在于2.3.3步所述阈值m为100毫秒。
6.如权利要求1所述的一种用于网络流量识别的流量数据公共特征提取方法,其特征在于所述MAX为256。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910854204.4A CN110519179B (zh) | 2019-09-10 | 2019-09-10 | 一种用于网络流量识别的流量数据公共特征提取方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910854204.4A CN110519179B (zh) | 2019-09-10 | 2019-09-10 | 一种用于网络流量识别的流量数据公共特征提取方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110519179A CN110519179A (zh) | 2019-11-29 |
CN110519179B true CN110519179B (zh) | 2020-06-12 |
Family
ID=68630459
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910854204.4A Active CN110519179B (zh) | 2019-09-10 | 2019-09-10 | 一种用于网络流量识别的流量数据公共特征提取方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110519179B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111222547B (zh) * | 2019-12-30 | 2021-08-17 | 中国人民解放军国防科技大学 | 一种面向移动应用的流量特征提取方法及系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108900430A (zh) * | 2018-06-15 | 2018-11-27 | 杭州迪普科技股份有限公司 | 一种网络流量阻断的方法及装置 |
CN110138681A (zh) * | 2019-04-19 | 2019-08-16 | 上海交通大学 | 一种基于tcp报文特征的网络流量识别方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9602338B2 (en) * | 2013-12-20 | 2017-03-21 | Nec Corporation | System and method for network packet event characterization and analysis |
-
2019
- 2019-09-10 CN CN201910854204.4A patent/CN110519179B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108900430A (zh) * | 2018-06-15 | 2018-11-27 | 杭州迪普科技股份有限公司 | 一种网络流量阻断的方法及装置 |
CN110138681A (zh) * | 2019-04-19 | 2019-08-16 | 上海交通大学 | 一种基于tcp报文特征的网络流量识别方法及装置 |
Non-Patent Citations (2)
Title |
---|
互联网流量特征智能提取关键技术研究;牟澄;《中国博士学位论文全文数据库》;20150430;全文 * |
互联网流量识别技术研究;田旭;《中国博士学位论文全文数据库》;20120531;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN110519179A (zh) | 2019-11-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Shiloach et al. | An O (n2log n) parallel max-flow algorithm | |
CN101345707B (zh) | 一种实现IPv6报文分类的方法及设备 | |
JP6055548B2 (ja) | データストリームにおいてデータパターンを検出する装置、方法、及びネットワークサーバ | |
WO2017050038A1 (zh) | 报文识别方法、装置和计算机存储介质 | |
CN113612749B (zh) | 一种面向入侵行为的溯源数据聚类方法及装置 | |
CN106452868A (zh) | 一种支持多维度聚合分类的网络流量统计实现方法 | |
CN109167680A (zh) | 一种基于深度学习的流量分类方法 | |
CN110519179B (zh) | 一种用于网络流量识别的流量数据公共特征提取方法 | |
CN108234452B (zh) | 一种网络数据包多层协议识别的系统和方法 | |
CN105827603A (zh) | 未明协议特征库建立方法、未明报文分类方法及相关装置 | |
CN109450876B (zh) | 一种基于多维度状态转移矩阵特征的DDos识别方法和系统 | |
CN108449356B (zh) | 一种基于多序列比对的在线协议格式推断方法 | |
WO2022217866A1 (zh) | 信道编码中的数据处理方法、计算机设备及存储介质 | |
CN108494620B (zh) | 一种网络业务流特征选择与分类方法 | |
CN101163058A (zh) | 基于流集合随机抽样的报文测量方法 | |
CN103095718B (zh) | 一种基于Hadoop的应用层协议特征提取方法 | |
Hirata et al. | Estimating topological entropy via a symbolic data compression technique | |
CN108566335B (zh) | 一种基于NetFlow的网络拓扑生成方法 | |
CN103986667B (zh) | 选择数据包分类算法的方法和装置 | |
CN106550387B (zh) | 一种无线传感器网络路由层服务质量评价方法 | |
Savari | Variable-to-fixed length codes and the conservation of entropy | |
CN115438629A (zh) | 数据处理方法、装置、存储介质及电子设备 | |
CN112968906A (zh) | 一种基于多元组的Modbus TCP异常通讯检测方法和系统 | |
CN109522915B (zh) | 病毒文件聚类方法、装置及可读介质 | |
CN105071984B (zh) | 一种自动化挖掘比特粒度特征的网络流量分类与应用识别方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |