发明内容
本发明实施例提供一种P2P流量的识别方法和设备,解决现有的技术方案中的缺少自动化的P2P应用类型及相应流量的识别方式的问题。
为达到上述目的,本发明实施例一方面提供了一种P2P流量的识别方法,至少包括以下步骤:
根据当前的流量数据,判断当前主机中是否存在P2P应用的UDP监听端口;
如果判断结果为存在,则收集并统计所述UDP监听端口上的数据包,并将所述数据包所对应的行为特征转换成为特征向量;
根据所述特征向量,确定当前所述主机正在运行的,对应于所述UDP监听端口的P2P应用的类型;
根据所述P2P应用的类型,对相应的P2P流量进行识别。
优选的,所述根据当前的流量数据,判断当前主机中是否存在P2P应用的UDP监听端口,具体包括:
收集所述主机的网卡的流量数据,并根据所述流量数据,判断是否存在满足以下条件的端口:
存在一个端口被同一个应用程序所占用的时间长度超过预设阈值,且所述应用程序使用所述端口与多个不同IP地址的节点进行通信;
如果判断结果为存在,则确定所述端口为当前主机中存在的P2P应用的UDP监听端口,如果判断结果为不存在,则确定当前主机中不存在P2P应用的UDP监听端口。
优选的,所述收集并统计所述UDP监听端口上的数据包,并将所述数据包所对应的行为特征转换成为特征向量,具体包括:
确定一个取样时间区间,并确定多个连续的数据包大小区间,其中,所述多个连续的数据包长度区间所对应的数据包长度数值范围包含所述UDP监听端口在所述取样时间区间内所有可能传输的数据包的长度数值;
分别统计在所述取样时间区间内,所述UDP监听端口上所传输的长度数值归属于各数据包长度区间的数据包的数量,以及在所述取样时间区间内所述UDP监听端口上所传输的全部数据包的数量;
确定在所述取样时间区间内,所述UDP监听端口上所传输的数据包的最大长度,以及所传输的数据包的最小长度;
根据所述数据包的最大长度、所述数据包的最大小长度,以及长度数值归属于各数据包长度区间的数据包的数量与所述全部数据包的数量的比值,确定所述UDP监听端口上的数据包所对应的特征向量。
优选的,所述收集并统计所述UDP监听端口上的数据包,并将所述数据包所对应的行为特征转换成为特征向量,具体包括:
确定30秒为一个取样时间区间;
在所述UDP监听端口上的数据包的长度区间为1-1499字节的应用场景中,通过统计所述UDP监听端口在所述30秒内的数据包传输情况,确定以下信息:
所述UDP监听端口在所述30秒内所传输的数据包的总数量为Ntotal;
所述UDP监听端口在所述30秒内所传输的数据包的长度范围在1-99字节的数据包的数量为N1,数据包的长度范围在100-199字节的数据包的数量为N2,依次类推,数据包的长度范围在1400-1499字节的数据包的数量为N15;
其中,Ntotal=N1+N2+……+N15;
确定所述UDP监听端口在所述30秒内所传输的数据包的最大长度为Lmax,所传输的数据包的最小长度为Lmin;
确定所述UDP监听端口在所述30秒内的特征向量为:
(Lmax,Lmin,N1/Ntotal,N2/Ntotal,……,N15/Ntotal)。
优选的,所述根据所述P2P应用的类型,对相应的P2P流量进行识别,具体包括:
如果确定的所述P2P应用的类型为只使用UDP协议传输数据的应用,则直接根据所述UDP监听端口的流量识别所述P2P的流量;
如果确定的所述P2P应用的类型为同时使用UDP协议和TCP协议传输数据的应用,则在根据所述UDP监听端口的流量识别所述P2P的UDP协议的流量的同时,根据所述P2P应用的TCP端口的状态点阵图描述的规律识别所述P2P应用的TCP协议的流量。
另一方面,本发明实施例还提供了一种流量识别设备,包括:
判断模块,用于根据当前的流量数据,判断当前主机中是否存在P2P应用的UDP监听端口;
转换模块,用于在所述判断模块的判断结果为存在时,收集并统计所述UDP监听端口上的数据包,并将所述数据包所对应的行为特征转换成为特征向量;
确定模块,用于根据所述转换模块所转换得到的所述特征向量,确定当前所述主机正在运行的,对应于所述UDP监听端口的P2P应用的类型;
识别模块,用于根据所述确定模块所根据的所述P2P应用的类型,对相应的P2P流量进行识别。
优选的,所述判断模块,具体用于:
收集所述主机的网卡的流量数据,并根据所述流量数据,判断是否存在满足以下条件的端口:
存在一个端口被同一个应用程序所占用的时间长度超过预设阈值,且所述应用程序使用所述端口与多个不同IP地址的节点进行通信;
如果判断结果为存在,则确定所述端口为当前主机中存在的P2P应用的UDP监听端口,如果判断结果为不存在,则确定当前主机中不存在P2P应用的UDP监听端口。
优选的,所述转换模块,具体用于:
在所述判断模块的判断结果为存在时,确定一个取样时间区间,并确定多个连续的数据包大小区间,其中,所述多个连续的数据包长度区间所对应的数据包长度数值范围包含所述UDP监听端口在所述取样时间区间内所有可能传输的数据包的长度数值;
分别统计在所述取样时间区间内,所述UDP监听端口上所传输的长度数值归属于各数据包长度区间的数据包的数量,以及在所述取样时间区间内所述UDP监听端口上所传输的全部数据包的数量;
确定在所述取样时间区间内,所述UDP监听端口上所传输的数据包的最大长度,以及所传输的数据包的最小长度;
根据所述数据包的最大长度、所述数据包的最大小长度,以及长度数值归属于各数据包长度区间的数据包的数量与所述全部数据包的数量的比值,确定所述UDP监听端口上的数据包所对应的特征向量。
优选的,所述转换模块,具体用于:
在所述判断模块的判断结果为存在时,确定30秒为一个取样时间区间;
在所述UDP监听端口上的数据包的长度区间为1-1499字节的应用场景中,通过统计所述UDP监听端口在所述30秒内的数据包传输情况,确定以下信息:
所述UDP监听端口在所述30秒内所传输的数据包的总数量为Ntotal;
所述UDP监听端口在所述30秒内所传输的数据包的长度范围在1-99字节的数据包的数量为N1,数据包的长度范围在100-199字节的数据包的数量为N2,依次类推,数据包的长度范围在1400-1499字节的数据包的数量为N15;
其中,Ntotal=N1+N2+……+N15;
确定所述UDP监听端口在所述30秒内所传输的数据包的最大长度为Lmax,所传输的数据包的最小长度为Lmin;
确定所述UDP监听端口在所述30秒内的特征向量为:
(Lmax,Lmin,N1/Ntotal,N2/Ntotal,……,N15/Ntotal)。
优选的,所述识别模块,具体用于:
如果确定的所述P2P应用的类型为只使用UDP协议传输数据的应用,则直接根据所述UDP监听端口的流量识别所述P2P的流量;
如果确定的所述P2P应用的类型为同时使用UDP协议和TCP协议传输数据的应用,则在根据所述UDP监听端口的流量识别所述P2P的UDP协议的流量的同时,根据所述P2P应用的TCP端口的状态点阵图描述的规律识别所述P2P应用的TCP协议的流量。
与现有技术相比,本发明实施例所提出的技术方案具有以下优点:
通过应用本发明实施例的技术方案,在当前主机中存在P2P应用的UDP监听端口的情况下,根据所述UDP监听端口上的数据包的特征向量,确定当前所述主机正在运行的,对应于所述UDP监听端口的P2P应用的类型,并对相应的P2P流量进行识别,从而,将对P2P应用行为特征的分析转移到对其相对固定的UDP监听端口的研究上,利用UDP监听端口在某些行为特征上对不同的P2P应用确实具有可区分性,实现了自动化的P2P应用类型以及相应流量的识别。
具体实施方式
如背景技术所述,现有的P2P应用类型的识别方式多是依赖人工对于P2P应用网络行为特征(包括节点通信状态、节点交互方式、传输层协议使用情况和TCP端口状态等节点主机的网络行为)的识别来实现的,这些对P2P应用网络行为的描述方式并不适合于机器学习,相应的,也就无法实现P2P应用类型及相应流量的自动化识别。
为了克服这样的缺陷,本发明实施例提出了一种P2P流量的识别方法,将对P2P应用行为特征的分析转移到对其相对固定的UDP监听端口的研究上,利用UDP监听端口在某些行为特征上对不同的P2P应用确实具有可区分性,实现了自动化的P2P应用类型以及相应流量的识别。
如图1所示,为本发明实施例所提出的一种P2P流量的识别方法的流程示意图,该方法具体包括以下步骤:
步骤S101、根据当前的流量数据,判断当前主机中是否存在P2P应用的UDP监听端口。
如果判断结果为存在,则执行步骤S102;
如果判断结果为不存在,则结束当前的P2P流量识别过程。
在具体的应用场景中,本步骤的实现具体可以通过以下方式完成:
收集所述主机的网卡的流量数据,并根据所述流量数据,判断是否存在满足以下条件的端口:
条件一、存在一个端口被同一个应用程序所占用的时间长度超过预设阈值。
条件二、所述应用程序使用所述端口与多个不同IP地址的节点进行通信。
上述两个条件是根据P2P应用的UDP监听端口的特征推到而来,需要同时满足这样的两个条件才能确定P2P应用的UDP监听端口的存在。
如果上述的判断结果为存在,则确定所述端口为当前主机中存在的P2P应用的UDP监听端口,执行步骤S102。
如果上述的判断结果为不存在,则确定当前主机中不存在P2P应用的UDP监听端口,结束当前的P2P流量识别过程。
步骤S102、收集并统计所述UDP监听端口上的数据包,并将所述数据包所对应的行为特征转换成为特征向量。
在具体的应用场景中,本步骤的实现具体可以通过以下方式完成:
(1)确定一个取样时间区间,并确定多个连续的数据包大小区间。
其中,所述多个连续的数据包长度区间所对应的数据包长度数值范围包含所述UDP监听端口在所述取样时间区间内所有可能传输的数据包的长度数值。
(2)分别统计在所述取样时间区间内,所述UDP监听端口上所传输的长度数值归属于各数据包长度区间的数据包的数量,以及在所述取样时间区间内所述UDP监听端口上所传输的全部数据包的数量。
(3)确定在所述取样时间区间内,所述UDP监听端口上所传输的数据包的最大长度,以及所传输的数据包的最小长度。
(4)根据所述数据包的最大长度、所述数据包的最大小长度,以及长度数值归属于各数据包长度区间的数据包的数量与所述全部数据包的数量的比值,确定所述UDP监听端口上的数据包所对应的特征向量。
步骤S103、根据所述特征向量,确定当前所述主机正在运行的,对应于所述UDP监听端口的P2P应用的类型。
步骤S104、根据所述P2P应用的类型,对相应的P2P流量进行识别。
在具体的应用场景中,本步骤的实现具体可以通过以下方式完成:
如果确定的所述P2P应用的类型为只使用UDP协议传输数据的应用,则直接根据所述UDP监听端口的流量识别所述P2P的流量;
如果确定的所述P2P应用的类型为同时使用UDP协议和TCP协议传输数据的应用,则在根据所述UDP监听端口的流量识别所述P2P的UDP协议的流量的同时,根据所述P2P应用的TCP端口的状态点阵图描述的规律识别所述P2P应用的TCP协议的流量。
与现有技术相比,本发明实施例所提出的技术方案具有以下优点:
通过应用本发明实施例的技术方案,在当前主机中存在P2P应用的UDP监听端口的情况下,根据所述UDP监听端口上的数据包的特征向量,确定当前所述主机正在运行的,对应于所述UDP监听端口的P2P应用的类型,并对相应的P2P流量进行识别,从而,将对P2P应用行为特征的分析转移到对其相对固定的UDP监听端口的研究上,利用UDP监听端口在某些行为特征上对不同的P2P应用确实具有可区分性,实现了自动化的P2P应用类型以及相应流量的识别。
下面,结合具体的应用场景,对本发明实施例所提出的技术方案进行说明。
具体的,本发明实施例所提出的一种P2P流量的识别方法的流程示意图如图2所示,具体包括以下步骤:
步骤S201、查找当前主机中所存在的所有UDP端口。
步骤S202、收集主机网卡的流量数据,完成对当前主机流量数据的采集。
步骤S203、根据当前主机流量数据,完成P2P应用的UDP监听端口的识别。
具体的,相应的识别方案要做的就是通过对节点主机流量数据的分析判断节点主机使用的UDP端口中是否存在某一P2P应用的UDP监听端口。
依据对节点行为的分析可知,P2P应用的UDP监听端口应该有如下特征:
(1)端口长时间的被一个应用程序所占用;
(2)应用程序使用该端口与多个不同IP地址的节点进行通信。
如果节点主机中存在符合上述规则的UDP端口,那么就可以认为节点主机正在运行某一P2P应用,并且该UDP端口就是这个P2P应用的UDP监听端口,然后,执行步骤S204。
反之,则结束当前的P2P流量识别过程。
步骤S204、获取该P2P应用的UDP监听端口的行为特征信息。
找到了P2P应用的UDP监听端口,接下来就是对该UDP端口产生的数据包进行统计分析,所统计的信息包括以下两个方面:
(1)数据包长度分布情况。
确定30秒为一个取样时间区间;
在所述UDP监听端口上的数据包的长度区间为1-1499字节的应用场景中,通过统计所述UDP监听端口在所述30秒内的数据包传输情况,确定以下信息:
所述UDP监听端口在所述30秒内所传输的数据包的总数量为Ntotal;
所述UDP监听端口在所述30秒内所传输的数据包的长度范围在1-99字节的数据包的数量为N1,数据包的长度范围在100-199字节的数据包的数量为N2,依次类推,数据包的长度范围在1400-1499字节的数据包的数量为N15;
其中,Ntotal=N1+N2+……+N15。
(2)数据包长度极值。
确定所述UDP监听端口在所述30秒内所传输的数据包的最大长度为Lmax,所传输的数据包的最小长度为Lmin。
步骤S205、行为特征信息的向量化。
支持向量机处理的数据都是以多维向量的形式保存的,因此需要将UDP监听端口的行为特征用向量的方式表示。
根据步骤S204中的统计信息,上述的30秒的时间间隔内P2P应用的UDP监听端口的行为特征可以表示为一个17维的向量:
(Lmax,Lmin,N1/Ntotal,N2/Ntotal,……,N15/Ntotal)。
在具体的应用场景中,长时间收集的P2P流量数据就可以表示为一个监听端口的特征向量空间,然后利用支持向量机对空间内的特征向量进行训练和分类,进而识别出UDP监听端口所属的P2P应用。
步骤S206、将相应的特征向量经由支持向量机的分类器进行识别。
一旦识别出该UDP监听端口属于哪一种P2P应用,就能够得知节点主机在运行何种P2P应用了。具体的识别规则可以根据实际情况进行配置,由于具体的信息均可以通过向量形式进行配置,所以,方便了机器学习,为P2P应用类型的自动化识别奠定了基础。
如果确定的所述P2P应用的类型为只使用UDP协议传输数据的应用,则执行步骤S207;
如果确定的所述P2P应用的类型为同时使用UDP协议和TCP协议传输数据的应用,则执行步骤S208。
在现有的技术方案中,常见的P2P应用类型主要包括:
PPLive、PPStream、Emule、UUSee、Thunder、BitComet以及QQLive等形式,具体P2P类型的变化并不会影响本发明的保护范围。
步骤S207、直接根据所述UDP监听端口的流量识别所述P2P的流量。
如果该P2P应用是PPLive这种只使用UDP协议传输数据的应用,那么获取了UDP监听端口就相当于识别出了P2P应用绝大部分的流量。
步骤S208、在根据所述UDP监听端口的流量识别所述P2P的UDP协议的流量的同时,根据所述P2P应用的TCP端口的状态点阵图描述的规律识别所述P2P应用的TCP协议的流量。
如果该P2P应用是eMule这种同时使用TCP协议传输数据的应用,那么根据P2P应用的TCP端口状态点阵图描述的规律也能够很容易地识别出P2P应用TCP协议的流量。
与现有技术相比,本发明实施例所提出的技术方案具有以下优点:
通过应用本发明实施例的技术方案,在当前主机中存在P2P应用的UDP监听端口的情况下,根据所述UDP监听端口上的数据包的特征向量,确定当前所述主机正在运行的,对应于所述UDP监听端口的P2P应用的类型,并对相应的P2P流量进行识别,从而,将对P2P应用行为特征的分析转移到对其相对固定的UDP监听端口的研究上,利用UDP监听端口在某些行为特征上对不同的P2P应用确实具有可区分性,实现了自动化的P2P应用类型以及相应流量的识别。
为了实现本发明实施例的技术方案,本发明实施例还提供了一种流量识别设备,其结构示意图如图3所示,至少包括:
判断模块31,用于根据当前的流量数据,判断当前主机中是否存在P2P应用的UDP监听端口;
转换模块32,用于在所述判断模块31的判断结果为存在时,收集并统计所述UDP监听端口上的数据包,并将所述数据包所对应的行为特征转换成为特征向量;
确定模块33,用于根据所述转换模块32所转换得到的所述特征向量,确定当前所述主机正在运行的,对应于所述UDP监听端口的P2P应用的类型;
识别模块34,用于根据所述确定模块33所根据的所述P2P应用的类型,对相应的P2P流量进行识别。
优选的,所述判断模块31,具体用于:
收集所述主机的网卡的流量数据,并根据所述流量数据,判断是否存在满足以下条件的端口:
存在一个端口被同一个应用程序所占用的时间长度超过预设阈值,且所述应用程序使用所述端口与多个不同IP地址的节点进行通信;
如果判断结果为存在,则确定所述端口为当前主机中存在的P2P应用的UDP监听端口,如果判断结果为不存在,则确定当前主机中不存在P2P应用的UDP监听端口。
优选的,所述转换模块32,具体用于:
在所述判断模块31的判断结果为存在时,确定一个取样时间区间,并确定多个连续的数据包大小区间,其中,所述多个连续的数据包长度区间所对应的数据包长度数值范围包含所述UDP监听端口在所述取样时间区间内所有可能传输的数据包的长度数值;
分别统计在所述取样时间区间内,所述UDP监听端口上所传输的长度数值归属于各数据包长度区间的数据包的数量,以及在所述取样时间区间内所述UDP监听端口上所传输的全部数据包的数量;
确定在所述取样时间区间内,所述UDP监听端口上所传输的数据包的最大长度,以及所传输的数据包的最小长度;
根据所述数据包的最大长度、所述数据包的最大小长度,以及长度数值归属于各数据包长度区间的数据包的数量与所述全部数据包的数量的比值,确定所述UDP监听端口上的数据包所对应的特征向量。
优选的,所述转换模块32,具体用于:
在所述判断模块31的判断结果为存在时,确定30秒为一个取样时间区间;
在所述UDP监听端口上的数据包的长度区间为1-1499字节的应用场景中,通过统计所述UDP监听端口在所述30秒内的数据包传输情况,确定以下信息:
所述UDP监听端口在所述30秒内所传输的数据包的总数量为Ntotal;
所述UDP监听端口在所述30秒内所传输的数据包的长度范围在1-99字节的数据包的数量为N1,数据包的长度范围在100-199字节的数据包的数量为N2,依次类推,数据包的长度范围在1400-1499字节的数据包的数量为N15;
其中,Ntotal=N1+N2+……+N15;
确定所述UDP监听端口在所述30秒内所传输的数据包的最大长度为Lmax,所传输的数据包的最小长度为Lmin;
确定所述UDP监听端口在所述30秒内的特征向量为:
(Lmax,Lmin,N1/Ntotal,N2/Ntotal,……,N15/Ntotal)。
优选的,所述识别模块34,具体用于:
如果确定的所述P2P应用的类型为只使用UDP协议传输数据的应用,则直接根据所述UDP监听端口的流量识别所述P2P的流量;
如果确定的所述P2P应用的类型为同时使用UDP协议和TCP协议传输数据的应用,则在根据所述UDP监听端口的流量识别所述P2P的UDP协议的流量的同时,根据所述P2P应用的TCP端口的状态点阵图描述的规律识别所述P2P应用的TCP协议的流量。
与现有技术相比,本发明实施例所提出的技术方案具有以下优点:
通过应用本发明实施例的技术方案,在当前主机中存在P2P应用的UDP监听端口的情况下,根据所述UDP监听端口上的数据包的特征向量,确定当前所述主机正在运行的,对应于所述UDP监听端口的P2P应用的类型,并对相应的P2P流量进行识别,从而,将对P2P应用行为特征的分析转移到对其相对固定的UDP监听端口的研究上,利用UDP监听端口在某些行为特征上对不同的P2P应用确实具有可区分性,实现了自动化的P2P应用类型以及相应流量的识别。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明实施例可以通过硬件实现,也可以借助软件加必要的通用硬件平台的方式来实现。基于这样的理解,本发明实施例的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或网络侧设备等)执行本发明实施例各个实施场景所述的方法。
本领域技术人员可以理解附图只是一个优选实施场景的示意图,附图中的模块或流程并不一定是实施本发明实施例所必须的。
本领域技术人员可以理解实施场景中的装置中的模块可以按照实施场景描述进行分布于实施场景的装置中,也可以进行相应变化位于不同于本实施场景的一个或多个装置中。上述实施场景的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
上述本发明实施例序号仅仅为了描述,不代表实施场景的优劣。
以上公开的仅为本发明实施例的几个具体实施场景,但是,本发明实施例并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明实施例的业务限制范围。