一种网络流量的识别方法及装置
技术领域
本申请涉及网络流量识别技术领域,尤其是一种可以准确并全面地识别网络流量使用的协议及应用的识别方法及装置。
背景技术
OSI(OpenSystemInterconnection)网络协议包括七层,依次为物理层、数据链路层、网络层、传输层、会话层、表示层及应用层。其中,数据链路层、网络层、传输层及应用层各自包含多种网络协议,是网络流量分析时的重要研究对象。具体地,网络流量分析即识别网络数据包使用到的网络协议。
目前,网络流量的识别方法是在数据包中的某些特定字段中提取字段值,利用国际规定的网络协议标准对字段值进行识别,该种识别方式识别准确率低且识别结果不全面。
发明内容
有鉴于此,本发明提供了一种网络流量的识别方法及装置,用以解决现有的识别方法准确率低且识别结果不全面的技术问题。为实现所述目的,本发明提供的技术方案如下:
一种网络流量的识别方法,包括:
获取待识别数据包;
对所述待识别数据包的头部进行识别,以确定所述待识别数据包的传输层及其以下各层分别使用的网络协议;
在所述待识别数据包的头部中提取IP地址及端口;
在预设流表中查找所述IP地址及端口;
当查找到时,将查找到的所述IP地址及端口对应的网络协议及应用确定为所述待识别数据包的应用层使用的网络协议及应用;
当未查找到时,将所述待识别数据包中的负载数据与预设特征库中的特征关键词进行匹配;
当匹配成功时,将匹配成功的特征关键词对应的网络协议及应用确定为所述待识别数据包的应用层使用的网络协议及应用。
优选地,当匹配成功时,还包括:
将所述IP地址及端口添加至所述预设流表中。
优选地,所述对所述待识别数据包的头部进行识别,以确定所述待识别数据包的传输层及其以下各层分别使用的网络协议包括:
利用预设协议树对所述待识别数据包的头部进行识别,以确定所述待识别数据包的传输层及其以下各层分别使用的网络协议。
优选地,所述在所述待识别数据包的头部中提取IP地址及端口包括:
在所述待识别数据包的头部中提取同一端的IP地址及端口;其中,所述同一端为发送端或接收端;或,
在所述待识别数据包的头部中提取两端的IP地址及任意一端的端口;或,
在所述待识别数据包的头部中提取两端的IP地址及两端的端口。
本申请还提供了一种网络流量的识别装置,包括:
数据包获取单元,用于获取待识别数据包;
网络协议确定单元,用于对所述待识别数据包的头部进行识别,以确定所述待识别数据包的传输层及其以下各层分别使用的网络协议;
IP地址端口获取单元,用于在所述待识别数据包的头部中提取IP地址及端口;
IP地址端口查找单元,用于在预设流表中查找所述IP地址及端口;
第一协议及应用确定单元,用于当查找到时,将查找到的所述IP地址及端口对应的网络协议及应用确定为所述待识别数据包的应用层使用的网络协议及应用;
负载数据匹配单元,用于当未查找到时,将所述待识别数据包中的负载数据与预设特征库中的特征关键词进行匹配;
第二协议及应用确定单元,用于当匹配成功时,将匹配成功的特征关键词对应的网络协议及应用确定为所述待识别数据包的应用层使用的网络协议及应用。
优选地,还包括:
流表添加单元,用于当匹配成功时,将所述IP地址及端口添加至所述预设流表中。
优选地,所述网络协议确定单元包括:
网络协议确定子单元,利用预设协议树对所述待识别数据包的头部进行识别,以确定所述待识别数据包的传输层及其以下各层分别使用的网络协议。
优选地,所述IP地址端口获取单元包括:
第一IP地址端口获取子单元,用于在所述待识别数据包的头部中提取同一端的IP地址及端口;其中,所述同一端为发送端或接收端;
第二IP地址端口获取子单元,用于在所述待识别数据包的头部中提取两端的IP地址及任意一端的端口;
第三IP地址端口获取子单元,用于在所述待识别数据包的头部中提取两端的IP地址及两端的端口。
本发明提供了一种网络流量的识别方法及装置,该方法包括:对获取到的待识别数据包的头部进行识别,可以确定出待识别数据包的传输层及其以下各层分别使用的网络协议,另外,在待识别数据包的头部中提取IP地址及端口,并在预设流表中查找该IP地址及端口,当查找到时,将该IP地址及端口对应的网络协议确定为待识别数据包应用层使用的网络协议,并且将该IP地址及端口对应的应用确定为待识别数据包应用层使用的应用类型,当未查找到时,将待识别数据包中的负载数据与预设特征库中的特征关键词进行匹配,若匹配成功,则将该特征关键词对应的网络协议及应用确定为该待识别数据包的应用层使用的网络协议及应用。与现有技术相比,一方面,本发明中预先设置有流表及特征库,流表及特征库是根据检测到的大量数据包生成的,可以真实反映数据包的应用层协议使用的端口,因此利用流表及特征库可以准确识别应用层协议,另一方面,流表及特征库中记录有与应用的对应关系,因此能够确定出待识别数据包使用的应用类型,识别结果更加全面。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明实施例提供的网络流量的识别方法的流程图;
图2为本发明另一实施例提供的网络流量的识别方法的流程图;
图3为本发明实施例提供的网络流量的识别装置的结构示意图;
图4为本发明另一实施例提供的网络流量的识别装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
参见图1,其示出了本发明实施例提供的网络流量的识别方法,具体包括以下步骤:
步骤S101:获取待识别数据包。
本实施例中,首先抓取网络中的数据包,将抓取到的数据包作为待识别数据包。
步骤S102:对所述待识别数据包的头部进行识别,以确定所述待识别数据包的传输层及其以下各层分别使用的网络协议。
其中,待识别数据包包括头部及负载两部分。通常,从头部中的字段可以判断出传输层及网络层使用的网络协议。对待识别数据包的负载部分解封装后,获得数据帧,根据数据帧的帧头部格式及帧头部中的类型字段可以判断出数据链路层使用的网络协议。当然,还可以是现有技术中的其他识别方法,本发明并不做具体限定。
例如,当待识别数据包的版本号字段为0100时表明网络层使用的是IPV4,版本号字段为0110时表明网络层使用的是IPV6;当待识别数据包的协议字段为6时,表明传输层使用的是TCP,协议字段为17时,传输层使用的是UDP,协议字段为1时,传输层使用的是ICMP。数据链路层使用的可能是IEEE802.3或无线传输协议等。
步骤S103:在所述待识别数据包的头部中提取IP地址及端口。
其中,待识别数据包的头部中不仅包含端口信息,还包括IP地址信息。现有技术中仅仅提取端口信息,利用单一的端口信息对应用层使用的协议进行识别,然而,本发明实施例不仅提取端口,而且提取IP地址,利用两者进行判断,识别结果更加全面。识别过程参见下述步骤S104及步骤S105。
步骤S104:在预设流表中查找所述IP地址及端口。
本实施例中,预先设置有流表,流表中存储有会话信息-网络协议及应用的对应关系,即每一个会话信息对应一个网络协议及应用,且不同的会话信息对应不同的网络协议及应用。其中,网络协议为应用层协议,如HTTP协议、FTP协议或者TELNET协议等;应用指的是具体的应用程序,例如,百度、新浪、迅雷、乐视等。
流表可以是通过对大量的数据包进行监测生成的,监测过程中记录数据包使用的应用以及每一个应用使用的应用层层协议,将应用及应用层协议结合起来,并记录应用及应用层协议对应的会话信息。会话信息指的是IP地址及端口。其中,地址及端口可以是源IP地址、源端口、目标IP地址及目标端口。需要说明的是,流表中记录的对应关系并非完全依照国际规定,是从实际的通信数据包中监测到的,因此能真实反映数据包实际使用的应用层协议及应用类型。
需要说明的是,流表中的会话信息中包括IP地址,IP地址与应用之间可能存在唯一的对应关系,例如,新浪网站的IP地址为218.30.13.36。因此,流表中需要记录IP地址,进而在待识别数据包中需要提取IP地址。
步骤S105:当查找到时,将查找到的所述IP地址及端口对应的网络协议及应用确定为所述待识别数据包的应用层使用的网络协议及应用。
其中,若在流表中能查找到待识别数据包的IP地址及端口,将查找到的该IP地址及端口对应的数据确定为待识别数据包的应用层所使用的网络协议及应用。综合来看,步骤S101可以确定出待识别数据包传输层及其以下各层的网络协议,步骤S105可以确定出待识别数据包应用层使用的网络协议以及应用层具体使用到的应用类型。
步骤S106:当未查找到时,将所述待识别数据包中的负载数据与预设特征库中的特征关键词进行匹配;当匹配成功时,将匹配成功的特征关键词对应的网络协议及应用确定为所述待识别数据包的应用层使用的网络协议及应用。
本实施例中,预先设置有特征库,该特征库中预先存储有特征关键词-网络协议及应用的对应关系,即每组特征关键词与每一个网络协议及应用对应,且不同组的特征关键词与不同的网络协议及应用对应。
需要说明的是,一组特征关键词中可以包括一个或多个特征词。例如,特征关键词包括“GET、URL、sina、HTTP/1.1”,该组特征关键词对应的网络协议为HTTP,对应的应用为新浪。将待识别数据包中的负载数据与每组关键词进行匹配,当与某组特征关键词匹配成功时,则将该组特征关键词对应的网络协议及应用确定为应用层的网络协议及应用层使用的应用类型。
可选地,为了提高比对效率,并一定将全部的负载数据与特征库中的特征关键词进行比对,可以是负载数据的第一行数据。因为,负载数据中的第一行往往记录的是协议、域名、IP地址等。
现有技术中,识别应用层的协议时,仅仅使用源端口或者目标端口,即按照国际规定,将端口对应的协议识别为待识别数据包应用层使用的协议。例如,端口使用的是80端口,则认为应用层使用的HTTP协议,若使用的是20或21端口,则认为应用层使用的是FTP协议。
然而,在当今的网络通信过程中,一部分数据包并不符合上述国际规定。如,为了绕过防火墙,大量的非HTTP协议的数据包会使用80端口;又如,为了在同一台服务器上架设多个不同的网站,也会使用8000端口或8080端口发送HTTP协议的数据包;再如,基于P2P协议的各种应用,会随机使用不同的端口。面对这些并未按照国际规定使用端口的情况,利用现有技术中的识别方法识别应用层协议,识别结果不准确。
并且,现有技术中的识别方法只能确定出应用层使用的网络协议,并不能更具体地确定出使用的哪一种应用,识别结果不全面。
本发明实施例提供的网络流量的识别方法,对获取到的待识别数据包的头部进行识别,可以确定出待识别数据包的传输层及其以下各层分别使用的网络协议,并且,在待识别数据包的头部中提取IP地址及端口,并在预设流表中查找该IP地址及端口,当查找到时,将该IP地址及端口对应的网络协议确定为待识别数据包应用层使用的网络协议,并且将该IP地址及端口对应的应用确定为待识别数据包应用层使用的应用类型,与现有技术相比,一方面,本实施例中预先设置有流表及特征库,是检测大量的数据包生成的,可以真实反映数据包的应用层协议使用的端口,因此利用流表及特征库可以准确识别应用层协议,另一方面,流表及特征库中记录有与应用的对应关系,因此能够确定出待识别数据包使用的应用类型,识别结果更加全面。
另外,上述流表可以包括两个,分别为TCP流表及UDP流表,分别存储传输层为TCP协议或UDP协议各自对应的数据,数据即会话信息-网络协议及应用的对应关系。
在实际的网络流量的识别过程中,可能由于流表记录的数据量的限制,在流表中无法查找到待识别数据包的IP地址及端口,面对这种情况,本发明另一实施例提供了网络流量的识别方法,具体地,如图2所示,该识别方法在上述实施例的基础上,还包括:
步骤S107:将IP地址及端口添加至预设流表中。
其中,当待识别数据包中的负载数据与特征库中的特征关键词比对成功时,还可以将IP地址及端口添加至预设流表中,这样,当后续的数据包利用流表进行识别时,识别成功率更高,从而提高了后续数据包的识别效率。
在上述实施例中,将待识别数据包中的负载数据与每组关键词进行匹配,当未与某组特征关键词匹配成功时,说明匹配失败,输出失败信息。
可选地,上述各个实施例中的步骤S102对所述待识别数据包的头部进行识别,以确定所述待识别数据包的传输层及其以下各层分别使用的网络协议的具体实现方式可以是:
利用预设协议树对所述待识别数据包的头部进行识别,以确定所述待识别数据包的传输层及其以下各层分别使用的网络协议。
需要说明的是,预设协议树可以是现有技术中的任意一种协议树,该协议树包括一个根节点及与该根节点具有一定层次关系的其他节点,每个节点表示一个协议,从根节点到其他节点的推导路径上分别包含若干个匹配条件,将待识别数据包与协议树中确定的匹配条件进行匹配,根据匹配结果分层查找对应的网络协议。更详细的识别过程可以参照现有技术中的协议树识别方法。
可选地,上述的步骤S103在所述待识别数据包的头部中提取IP地址及端口的具体实现方式可以是下述三种方式中的任意一种,即:
在所述待识别数据包的头部中提取同一端的IP地址及端口;其中,所述同一端为发送端或接收端;或,在所述待识别数据包的头部中提取两端的IP地址及任意一端的端口;或,在所述待识别数据包的头部中提取两端的IP地址及两端的端口。
其中,发送端也就是源端,接收端也就是目的端。流表中记录的会话信息中包括的是源端IP地址、源端端口、目的端IP地址及目的端端口。因此,可以在待识别数据包中提取四个参数中的两个、三个或四个进行识别。当然,为了提高识别准确度,在提取两个参数时,提取的是同一端的IP地址及端口,在提取三个参数时,提取的是发送端的IP地址、接收端的IP地址及任意一端的端口。
下面对本发明实施例提供的网络流量的识别装置进行介绍,需要说明的是,有关下文的网络流量的识别装置的说明可参照上文的网络流量的识别方法,以下并不做赘述。
参照图3,其示出了本发明实施例提供的网络流量的识别装置的结构,具体包括:数据包获取单元100、网络协议确定单元200、IP地址端口获取单元300、IP地址端口查找单元400、第一协议及应用确定单元500、负载数据匹配单元600及第二协议及应用确定单元700。其中:
数据包获取单元100,用于获取待识别数据包;
网络协议确定单元200,用于对所述待识别数据包的头部进行识别,以确定所述待识别数据包的传输层及其以下各层分别使用的网络协议;
IP地址端口获取单元300,用于在所述待识别数据包的头部中提取IP地址及端口;
IP地址端口查找单元400,用于在预设流表中查找所述IP地址及端口;
第一协议及应用确定单元500,用于当查找到时,将查找到的所述IP地址及端口对应的网络协议及应用确定为所述待识别数据包的应用层使用的网络协议及应用。
负载数据匹配单元600,用于当未查找到时,将所述待识别数据包中的负载数据与预设特征库中的特征关键词进行匹配。
第二协议及应用确定单元700,用于当匹配成功时,将匹配成功的特征关键词对应的网络协议及应用确定为所述待识别数据包的应用层使用的网络协议及应用。
本发明实施例提供的网络流量的识别装置,网络协议确定单元200对获取到的待识别数据包的头部进行识别,可以确定出待识别数据包的传输层及其以下各层分别使用的网络协议,并且,IP地址端口获取单元300在待识别数据包的头部中提取IP地址及端口,IP地址端口查找单元400在预设流表中查找该IP地址及端口,当查找到时,第一协议及应用确定单元500将该IP地址及端口对应的网络协议确定为待识别数据包应用层使用的网络协议,并且将该IP地址及端口对应的应用确定为待识别数据包应用层使用的应用类型,与现有技术相比,一方面,本实施例中预先设置有流表及特征库,是检测大量的数据包生成的,可以真实反映数据包的应用层协议使用的端口,因此利用流表及特征库可以准确识别应用层协议,另一方面,流表及特征库中记录有与应用的对应关系,因此能够确定出待识别数据包使用的应用类型,识别结果更加全面。
可选地,如图4所示,上述的网络流量的识别装置还包括:
流表添加单元800,用于当匹配成功时,将所述IP地址及端口添加至所述预设流表中。
可选地,所述网络协议确定单元200包括:
网络协议确定子单元,利用预设协议树对所述待识别数据包的头部进行识别,以确定所述待识别数据包的传输层及其以下各层分别使用的网络协议。
可选地,所述IP地址端口获取单元300包括:
第一IP地址端口获取子单元,用于在所述待识别数据包的头部中提取同一端的IP地址及端口;其中,所述同一端为发送端或接收端;
第二IP地址端口获取子单元,用于在所述待识别数据包的头部中提取两端的IP地址及任意一端的端口;
第三IP地址端口获取子单元,用于在所述待识别数据包的头部中提取两端的IP地址及两端的端口。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括上述要素的过程、方法、物品或者设备中还存在另外的相同要素。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。