一种数据包的识别方法及设备的制作方法

文档序号:7772904阅读:169来源:国知局
一种数据包的识别方法及设备的制作方法
【专利摘要】本发明公开了一种数据包的识别方法及设备,具体内容为:利用预先设置的Cache对接收到的数据包进行识别,可快速识别出使用P2P协议封装的数据包以及对该数据包使用P2P协议进行封装的应用,大大提高了P2P数据包的识别效率,并可识别出加密的P2P数据包,且不会消耗较多的资源。
【专利说明】一种数据包的识别方法及设备
【技术领域】
[0001]本发明涉及通信【技术领域】,尤其涉及一种数据包的识别方法及设备。
【背景技术】
[0002]对等联网(Peer-to-Peer, P2P)技术又称点对点(Point to Point)技术,是一种对等网络技术,利用客户端的处理能力实现客户端之间的点到点通信。在P2P网络应用中,所有的客户端节点都是对等的,各节点之间通过直接互连来共享信息资源或进行文件交互而无需依赖集中式服务器。因此,利用P2P技术可以方便快捷地共享和得到各类资源。
[0003]然而,随着P2P技术的大范围使用,P2P流量逐渐成为了互联网流量的重要组成部分,网络中的大量带宽被P2P流量占用,由此可能引起严重的网络拥塞,例如,严重影响网络中的终端用户浏览网页或发送电子邮件等。为了有效地管理网络以及合理地利用网络资源,需要对网络中的P2P数据包(即使用P2P协议封装的数据包)进行识别,以便对P2P流量进行控制。由于对P2P流量进行控制时,一般会针对不同的P2P应用(即对数据包使用P2P协议进行封装的应用)采用不同的控制方式,因此目前对数据包进行识别的目标在于:首先,识别其是否为P2P数据包;其次,在识别出其为P2P数据包的基础上,进一步识别出与对其使用P2P协议进行封装的P2P应用。
[0004]按照目前的现有技术,每接收到一个数据包都会采用预先设置的P2P协议的识别方法(如基于深度包检测的识别方法等)对接收到的数据包进行识别,以确定接收到的数据包是否为P2P数据包,并在确定出接收到的数据包为P2P数据包时,进一步确定与接收到的数据包相对应的P2P应用(即对接收到的数据包使用P2P协议进行封装的应用),从而完成对数据包的识别。可见,现有技术中采用的识别方式会消耗较多的处理资源。
[0005]此外,现有技术中的采用的识别方法还存在着对于加密数据包的识别率较低的问题。

【发明内容】

[0006]本发明实施例提供了一种数据包的识别方法,用以解决现有技术中存在的识别出与数据包相对应的P2P应用会消耗较多的处理资源,并且对于加密数据包的识别率较低的问题。
[0007]—种数据包的识别方法,所述方法包括:
[0008]接收数据包;
[0009]从预先设置的高速缓冲存储器Cache中查找所述数据包中包含的特定标识,若能查找到,则确定所述数据包为使用点对点P2P协议封装的数据包,并根据所述Cache中与所述特定标识对应存储的应用标识APP ID,确定对所述数据包使用P2P协议进行封装的应用;所述特定标识为发送所述数据包的源节点的因特网协议IP地址和端口号,或接收所述数据包的目的节点的IP地址和端口号;
[0010]其中,所述Cache包含:传输预先被确定为使用P2P协议封装的数据包的节点的IP地址和端口号,以及使用相应的P2P协议的应用的APP ID三者的对应关系;
[0011 ] 所述对应关系中的IP地址和端口号的获得方式包括:
[0012]从获得的数据包中确定使用P2P协议封装且包含有指示信息的数据包,其中,所述指示信息用于表示包含有指示信息的数据包中存在节点信息列表;从所述包含有指示信息的数据包的应用层数据中获得所述节点信息列表所包含的IP地址和端口号;和/或
[0013]获得命令会话和握手会话中传输的数据包中包含的IP地址和端口号。
[0014]由于预先设置的Cache中已经包含传输预先被确定为使用P2P协议封装的数据包的节点的IP地址和端口号,以及使用相应的P2P协议的应用的APP ID,因此,利用预先设置的Cache对接收到的数据包进行识别,可快速识别出使用P2P协议封装的数据包(即P2P数据包)以及对该数据包使用P2P协议进行封装的应用(即P2P应用),大大提高了识别效率,且不会消耗较多的资源。同时,由于会将节点信息列表中包含的IP地址和端口号存储到Cache中,和/或将命令会话和握手会话中传输的数据包中的IP地址和端口号存储到Cache中,从而即便后续节点信息列表中包含的IP地址所表示的P2P节点会传输加密数据包(加密数据包一般包含加密的应用层数据、未加密的网络层数据和未加密的传输层数据),或命令会话和握手会话中传输的数据包中的IP地址所表示的P2P节点会传输加密数据包,也可以根据加密数据包中的未加密的网络层数据(包含IP地址)和传输层数据(包含端口号),以及保存在Cache中的IP地址和端口号,正确识别出加密数据包为P2P数据包,从而大大提高了对于加密数据包的识别率。
[0015]所述方法还包括:
[0016]若不能查找到,则依次采用预先设定的多个使用P2P协议的应用的识别方法中的各识别方法,识别对接收到的数据包使用P2P协议进行封装的应用;
[0017]在识别出对所述接收到的数据包使用P2P协议进行封装的应用后,在所述接收到的数据包中添加识别出的应用的APP ID,从APP ID与节点标识获得方法的预设对应关系中,确定与所述识别出的应用的APP ID对应的节点标识获得方法;其中,所述节点标识包括节点的IP地址和端口号;
[0018]根据确定出的节点标识获得方法从所述接收到的数据包中获得至少一组IP地址和端口号,并针对获得的每一组IP地址和端口号分别执行:将所述识别出的应用的APP ID以及获得的IP地址和端口号对应存储至所述Cache中。
[0019]如果根据预先设置的Cache不能识别出接收到的数据包为P2P数据包及其对应的P2P应用,则可依次采用预先设定的P2P应用的识别方法,识别与接收到的数据包相对应的P2P应用,如果识别出与接收到的数据包相对应的P2P应用,则将该数据包中包含的IP地址和端口号以及识别出的P2P应用的标识对应存储至Cache中,如此,即可进一步充实Cache的内容,达到更新Cache的目的。此外,采用多种P2P应用的识别方法对接收到的数据包进行识别,可提高对P2P数据包的识别率。
[0020]所述多个使用P2P协议的应用的识别方法包括下述方法中的一种或多种:
[0021 ] 流量统计;深度包检测;IP地址检测。
[0022]当从预先设置的Cache中查找到所述数据包中包含的源节点的IP地址和端口号时,则所述方法还包括:将所述Cache中与所述源节点的IP地址和端口号对应存储的APPID,以及所述目的节点的IP地址和端口号对应存储至所述Cache中;或者[0023]当从预先设置的Cache中查找到所述数据包中包含的目的节点的IP地址和端口号时,则所述方法还包括:将所述Cache中与所述目的节点的IP地址和端口号对应存储的APP ID,以及所述源节点的IP地址和端口号对应存储至所述Cache中。
[0024]由于P2P节点既是客户端又是服务器,因此如果源节点是P2P应用的节点,那么目的节点必然是P2P应用的节点。鉴于此,如果识别出源节点是P2P应用的节点则将目的节点的IP地址和端口号对应存储至Cache中,或者,识别出目的节点是P2P应用的节点则将源节点的IP地址和端口号对应存储至Cache中,可进一步充实Cache的内容,达到更新Cache的目的。
[0025]所述Cache中还保存有与APP ID、IP地址和端口号对应存储的时间戳;且所述时间戳表示将与所述时间戳对应的APP ID、IP地址和端口号存储至所述Cache的时刻;则所述方法还包括:
[0026]在从所述Cache中确定出与所述接收到的数据包中包含的时间戳的差值大于预设阈值的时间戳时,删除确定出的时间戳以及相应的APP ID、IP地址和端口号。
[0027]如此,即可将Cache中超时的时间戳以及对应的APP ID、IP地址和端口号删除,可避免Cache无限膨胀。
[0028]一种数据包的识别设备,所述设备包括:
[0029]接收模块,用于接收数据包;
[0030]查找模块,用于从预先设置的Cache中查找所述数据包中包含的特定标识,若能查找到,则确定所述数据包为使用P2P协议封装的数据包,并根据所述Cache中与所述特定标识对应存储的APP ID,确定对所述数据包使用P2P协议进行封装的应用;所述特定标识为发送所述数据包的源节点的因特网协议IP地址和端口号,或接收所述数据包的目的节点的IP地址和端口号;其中,所述Cache包含:传输预先被确定为使用P2P协议封装的数据包的节点的IP地址和端口号,以及使用相应的P2P协议的应用的APP ID三者的对应关系;所述对应关系中的IP地址和端口号的获得方式包括:从获得的数据包中确定使用P2P协议封装且包含有指示信息的数据包,其中,所述指示信息用于表示包含有指示信息的数据包中存在节点信息列表;从所述包含有指示信息的数据包的应用层数据中获得所述节点信息列表所包含的IP地址和端口号;和/或获得命令会话和握手会话中传输的数据包中包含的IP地址和端口号。
[0031]所述设备还包括:
[0032]识别模块,用于在查找模块不能从预先设置的Cache中查找到所述数据包中包含的特定标识时,依次采用预先设定的多个使用P2P协议的应用的识别方法中的各识别方法,识别对接收到的数据包使用P2P协议进行封装的应用;
[0033]确定模块,用于在识别模块识别出对所述接收到的数据包使用P2P协议进行封装的应用后,在所述接收到的数据包中添加识别出的应用的APP ID,从APP ID与节点标识获得方法的预设对应关系中,确定与所述识别出的应用的APP ID对应的节点标识获得方法;其中,所述节点标识包括节点的IP地址和端口号;
[0034]第一存储模块,用于根据确定模块确定出的节点标识获得方法从所述接收到的数据包中获得至少一组IP地址和端口号,并针对获得的每一组IP地址和端口号分别执行:将所述识别出的应用的APP ID以及获得的IP地址和端口号对应存储至所述Cache中。[0035]所述设备还包括:
[0036]第二存储模块,用于当查找模块从预先设置的Cache中查找到所述数据包中包含的源节点的IP地址和端口号时,将所述Cache中与所述源节点的IP地址和端口号对应存储的APP ID,以及所述目的节点的IP地址和端口号对应存储至所述Cache中;或者
[0037]当查找模块从预先设置的Cache中查找到所述数据包中包含的目的节点的IP地址和端口号时,将所述Cache中与所述目的节点的IP地址和端口号对应存储的APP ID,以及所述源节点的IP地址和端口号对应存储至所述Cache中。
[0038]所述Cache中还保存有与APP ID、IP地址和端口号对应存储的时间戳;且所述时间戳表示将与所述时间戳对应的APP ID、IP地址和端口号存储至所述Cache的时刻;则所述设备还包括:
[0039]删除模块,用于在从所述Cache中确定出与接收模块接收到的数据包中包含的时间戳的差值大于预设阈值的时间戳时,删除确定出的时间戳以及相应的APP ID、IP地址和
端口号。
【专利附图】

【附图说明】
[0040]图1为本发明实施例一中的方法步骤示意图;
[0041]图2为本发明实施例二中的设备结构示意图;
[0042]图3为本发明实施例三中的流程示意图。
【具体实施方式】
[0043]本发明实施例的方案利用预先设置的包含传输预先被确定为使用P2P协议封装的数据包(使用P2P协议封装的数据包以下简称为P2P数据包)的节点的因特网协议(Internet Protocol,IP)地址和端口(PORT)号,以及使用相应的P2P协议的应用的应用标识APP ID的对应关系的高速缓冲存储器Cache,对接收到的数据包进行识别,如果在预先设置的Cache中能查找到接收到的数据包中包含的源节点的IP地址和端口号,或者目的节点的IP地址和端口号,则确定接收到的数据包为P2P数据包,并且根据查找到的与源节点的IP地址和端口号,或者目的节点的IP地址和端口号对应存储的应用标识APP ID,即可确定对该数据包使用P2P协议进行封装的应用(对数据包使用P2P协议进行封装的应用以下简称P2P应用)。采用本发明实施例的方案可快速识别出P2P数据包以及与接收到的数据包相对应的P2P应用,且消耗较少的处理资源。并且由于事先存储预先被确定为传输P2P数据包的节点的IP地址和端口号,当后续接收到该节点发送的加密的P2P数据包时,相对于现有技术可快速识别出加密的P2P数据包。
[0044]下面结合说明书附图对本发明实施例的方案作进一步说明,但本发明并不限于以下实施例。
[0045]实施例一:
[0046]如图1所示,为本发明实施例一中数据包的识别方法的步骤示意图,所述方法主要包括以下步骤:
[0047]步骤101:接收数据包。
[0048]本步骤101接收到的数据包可能是P2P数据包,也可能不是P2P数据包。[0049]步骤102:从预先设置的Cache中查找该数据包中包含的特定标识,若能查找到,则转至步骤103 ;若不能查找到,则转至步骤104。
[0050]本步骤102中的特定标识为发送该数据包的源节点的IP地址和端口号,或接收该数据包的目的节点的IP地址和端口号,可以从该数据包的网络层数据(包含源节点和目的节点的IP地址)和传输层数据(包含源节点和目的节点的端口号)中获得。
[0051]本步骤102的具体实现方式可以为:
[0052]从预先设置的高速缓冲存储器Cache中查找步骤101接收到的数据包中包含的源节点的IP地址和端口号,如果能查找到,则将Cache中与该源节点的IP地址和端口号对应存储的APP ID,以及接收到的数据包中包含的目的节点的IP地址和端口号对应存储至Cache 中。
[0053]如果在预先设置的Cache中查找不到接收到的数据包中包含的源节点的IP地址和端口号,则进一步从预先设置的Cache中查找接收到的数据包中包含的目的节点的IP地址和端口号,如果能查找到,则将Cache中与目的节点的IP地址和端口号对应存储的APPID,以及接收到的数据包中包含的源节点的IP地址和端口号对应存储至Cache中。
[0054]需要说明的是,本步骤102也可以先从预先设置的Cache中查找接收到的数据包中包含的目的节点的IP地址和端口号,如果查找不到再从预先设置的Cache中查找接收到的数据包中包含的源节点的IP地址和端口号,其具体实现方式与上述描述的方案相类似,本发明实施例的方案并不此做限定。
[0055]本发明实施方案中的Cache包含传输(即发送或接收)预先被确定为P2P数据包的节点的IP地址(后文简写为IP)和端口号(后文简写为PORT),以及使用相应的P2P协议的应用的APP ID三者的对应关系,该对应关系可用<IP,P0RT,APP ID>来表示。其中APP ID与P2P应用相对应,本发明实施例的方案可对不同的P2P应用分别设置不同的APP ID,例如,可设置比特流(BitTorrent,BT)应用的APP ID为1、迅雷应用的APP ID为2、百度影音应用的APP ID为3、PPlive应用的APP ID为4、skype应用的APP ID为5、emule应用的APP ID 为 6。
[0056]其中,Cache中包含的传输预先被确定为P2P数据包的节点的IP地址和端口号的获得方式包括:
[0057]方式一:从获得的数据包中确定使用P2P协议封装且包含有指示信息的数据包,从包含有指示信息的数据包的应用层数据中获得节点信息列表所包含的IP地址和端口号,其中,该指示信息用于表示包含有指示信息的数据包中存在节点信息列表。具体地,该指示信息可以为节点信息列表在数据包的应用层数据中的位置,例如,针对BT数据包,该指示信息可以为应用层数据中“nodes ”特征值所在的位置。
[0058]例如,BT应用的Tracker服务器在接收到某一节点(主机或客户端)发送的BT资源下载请求后,会向该节点发送一个响应数据包,该响应数据包(不加密)的应用层数据的节点列表中包含有具备该节点所请求的BT下载资源的其他节点的IP地址和端口号。由于BT是一种P2P应用,其资源传输机制采用的是P2P技术,即不同节点之间,以及节点与服务器之间传输的数据包均为P2P数据包,因此,如果获得了 BT的Tracker服务器发送的数据包,贝1J可从该数据包的应用层数据的节点列表(如BT数据包的应用层数据中nodes或peers特征值后面的数值)中获得上述其他节点的IP地址和端口号。由于所述其他节点后续会采用P2P技术与发送BT资源下载请求的节点进行P2P数据包交互,因此,后续如果接收到包含所述其他节点的IP地址(可能作为源IP地址,也可能作为目的IP地址)和端口号的数据包,则可以确定该数据包是P2P数据包。
[0059]方式二:获得命令会话和握手会话中传输的数据包中包含的IP地址和端口号。具体地,命令会话和握手会话传输的数据包是不加密的,因此,可采用DPI对命令会话和握手会话传输的数据包进行识别,并将命令会话和握手会话中传输的数据包中包含的IP地址和端口号存储下来。
[0060]需要说明的是,具备某IP地址的节点可能会既发送P2P数据包,也可以发送非P2P数据包(即使用不同于P2P协议的其他协议封装的数据包)。但由于其发送的P2P数据包中与源IP地址绑定的端口号不同于其发送的非P2P数据包中与该IP地址绑定的端口号,因此,根据该节点所发送的数据包中的IP地址(即源IP地址)和相应的端口号,可以避免对数据包的误识别。本发明实施例中所述的端口号为封装在数据包中的传输层数据包含的逻辑意义上的端口的标识。比如,该逻辑意义上的端口可以是TCP/IP协议中的端口,其标识的范围为从0到65535。 [0061]可选地,本发明实施例方案中Cache中的信息还可通过以下方式生成:
[0062]本发明实施例的方案的执行主体(如交换机或其他网络设备)向某一节点发送一个P2P应用(如Skype)的P2P数据包,如果接收到该节点发送的格式正确的响应数据包,即可确定该节点会发送Skype的P2P数据包,则将该节点发送的数据包的应用标识、以及该节点的IP地址和端口号对应存储至Cache中。
[0063]步骤103:确定该数据包为P2P数据包,并根据Cache中与特定标识对应存储的APP ID,确定对该数据包使用P2P协议进行封装的应用,流程结束。比如,可以根据Cache中与特定标识对应存储的APP ID,从APP ID与P2P应用的预设对应关系中,确定对该数据包使用P2P协议进行封装的应用。
[0064]在步骤102从预先设置的Cache中查找到接收到的数据包中包含的源节点的IP地址和端口号,或者从预先设置的Cache中查找到接收到的数据包中包含的目的节点的IP地址和端口号之后,本步骤103即可确定出步骤101接收到的数据包为P2P数据包。
[0065]进一步地,如果步骤102从预先设置的Cache中查找到接收到的数据包中包含的源节点的IP地址和端口号,则本步骤103还可确定出Cache中与该源节点的IP地址和端口号对应存储的APP ID,并从APP ID与P2P应用的预设对应关系中,确定与该数据包相对应的P2P应用;如果步骤102从预先设置的Cache中查找到接收到的数据包中包含的目的节点的IP地址和端口号,则本步骤103还可确定出Cache中与该目的节点的IP地址和端口号对应存储的APPID,并从APP ID与P2P应用的预设对应关系中,确定与该数据包相对应的P2P应用。例如,假设步骤102从预先设置的Cache中查找到接收到的数据包中包含的源节点的IP地址和端口号,而Cache中与该源节点的IP地址和端口号对应存储的应用标识APP ID为2,那么,在预先设置了 BT应用的APP ID为1、迅雷应用的APP ID为2…的情况下,可确定步骤101接收到的数据包为迅雷应用的数据包。
[0066]步骤104:依次采用预先设定的多个使用P2P协议的应用的识别方法中的各识别方法,识别对接收到的数据包使用P2P协议进行封装的应用,在识别出对接收到的数据包使用P2P协议进行封装的应用后,在接收到的数据包中添加识别出的应用的APP ID。[0067]本步骤104的具体实现方式可以为:
[0068]对步骤101接收到的数据包进行DPI,具体为:从预先存储的特征库中查找与该数据包的负载中携带的特征字符串相匹配的特征值,如果能查找到,则确定该数据包为与该特征值相对应的应用的P2P数据包,此时,可在该数据包中添加与确定出的应用相对应的应用标识,转至步骤105。例如,假设本次从预先存储的payload特征库中查找到与接收到的数据包的负载中携带的特征字符串相匹配的特征值0xl3Bit,即可确定该数据包为BT应用的P2P数据包,此时,可在接收到的数据包中添加BT应用的应用标识1。[0069]如果DPI的方法无法识别出接收到的数据包为P2P数据包,则可进一步采用IP地址检测方法对接收到的数据包进行识别,具体为:从预先存储的IP地址库中查找与该数据包中包含的源IP地址或目的IP地址相匹配的IP地址,如果能查找到,则确定该数据包为与该IP地址相对应的应用的P2P数据包,此时,可在该数据包中添加与确定出的应用相对应的应用标识,转至步骤105。例如,假设本次识别出接收到的数据包中包含的IP地址为skype服务器的IP地址,即可确定该数据包为skype应用的P2P数据包,此时,可在接收到的数据包中添加skype应用的应用标识5。
[0070]如果IP地址检测方法还是无法识别出接收到的数据包为P2P数据包,则可采用流量统计方法对接收到的数据包进行识别,具体为:将本次接收到的数据包记录下来,并将本次接收到的数据包与之后接收到的数据包的流量特征进行联合判断。例如,假设本次接收的数据包的应用层大小为51字节,并且此数据包在会话中的位置为第一个请求包,下次接收到的数据包的应用层大小为85字节,并且此数据包在会话中的位置为第一个回应包,则可认为接收到数据包为emule应用的P2P数据包,此时,可在接收到的数据包中添加emule应用的应用标识6。
[0071]需要说明的是,本发明实施例的方案并不对先采用哪种方法识别接收到数据包,后采用哪种方法识别接收到数据包做限定,只要是能够识别出接收到的数据包具体为哪种P2P应用的P2P数据包的方法均在本发明的保护范围之内。如果最终还是无法识别出接收到的数据包为P2P数据包,则可认为接收到的数据包不是P2P数据包。
[0072]步骤105:根据识别出的应用的APP ID,从APP ID与节点标识获得方法的预设对应关系中,确定与识别出的应用的APP ID对应的节点标识获得方法,并根据确定出的节点标识获得方法从接收到的数据包中获得至少一组IP地址和端口号。
[0073]在步骤104识别出接收到的数据包具体为哪一种P2P应用的P2P数据包后,本步骤105可根据接收到的数据中包含的APP ID,按照与该APP ID相对应的节点标识的获得方法从接收到的数据包中获得至少一组IP地址和端口号(即至少一个节点的IP地址和端口号)。
[0074]本发明实施例方案中每一个APP ID都会对应一种节点标识的获得方法。其中,节点标识的获得方法包括:从接收到的数据包的应用层数据的指定位置中获得至少一组IP地址和端口号,或者从接收到的数据包的网络层数据和传输层数据中获得源IP地址、源端口号(即发送数据包的源节点的端口号)、目的IP地址和目的端口号(即接收数据包的目的节点的端口号)。例如,与APPID1 (即BT应用)相对应的节点标识的获得方法可以为从接收到的数据包的应用层数据的“nodes”关键字后面的数据中获得至少一组IP地址和端口号。比如,BT应用的数据包的应用层数据为:dl:rd2:1d20:_?,YI+I2:1p4:w5:nodes208: V%uRZBRizm~YCv/N@=}MT400oWz\;[..16j91P !xK#7#D2QDBWQffhoUe1:t8:?' ]1:v4:LT1:y1:re,其中nodeS208表示的含义是冒号后面的208字节表示的是8个节点的信息。
[0075]与APP ID3 (即百度影音应用)相对应的节点标识的获得方法可以为从接收到的数据包的应用层数据的“ver: ”关键字后面的数据中获得至少一组IP地址和端口号。比如,百度影音应用的应用层数据为:ver: tcp:220.181.5.51:80:11udp:220.181.5.51:8010:1
tcp:123.125.113.27:8002:11udp: 123.125.113.27:8008:11 tcp: 123.125.113.53:8001:11 udp: 123.125.113.53:8000:11 tcp: 220.181.44.158:8000:11 udp: 220.181.44.158:8000:1,其中ver:后面跟的即是节点列表。
[0076]假设步骤104确定出接收到的数据包是BT应用的P2P数据包,而BT应用的应用标识为1,则本步骤105可从APP ID与节点标识获得方法的预设对应关系中,确定出与APP ID为1对应的节点标识获得方法:从接收到的数据包的应用层数据的指定位置中获得至少一组IP地址和端口号,此时,可从接收到数据包的应用层数据的节点列表(如nodes或peers特征值后面的数值)中获得至少一组IP地址和端口号。其中,BT的Tracker服务器在接收到某一节点(主机或客户端)发送的BT资源下载请求后,会向该节点发送一个响应数据包,该响应数据包的应用层数据的节点列表中包含有具备BT下载资源的节点的IP地址和端口号,也就是说BT的Tracker服务器发送的响应数据包的应用层数据的节点列表中可包含至少一组IP地址和端口号,且其中每一组IP地址和端口号所对应的节点上均具备BT下载资源,可向其他节点发送BT数据包。
[0077]假设步骤104确定出接收到的数据包是emule的P2P数据包,而emule的应用标识为6,则本步骤105可从APP ID与节点标识获得方法的预设对应关系中,确定出与APP ID为6对应的节点标识获得方法:从接收到的数据包的网络层数据和传输层数据中获得源IP地址、源端口号、目的IP地址和目的端口号,此时,可从接收到的数据包的网络层数据中获得源IP地址和目的IP地址、从接收到的数据包的传输层数据中获得源端口号和目的端口号。
[0078]步骤106:针对获得的每一组IP地址和端口号分别执行:将识别出的应用的APPID以及获得的IP地址和端口号对应存储至Cache中,流程结束。
[0079]针对步骤105获得的至少一组IP地址和端口号,本步骤106可将获得的每一组IP地址和端口号以及识别出的应用的APP ID分别对应存储至Cache中。
[0080]例如,假设步骤105从接收到的数据包中获得了 3组IP地址和端口号且接收到的数据包是BT应用的P2P数据包,其中,3组IP地址和端口号分别为IP1、P0RT1,IP2、P0RT2和 IP3、P0RT3,则本次更新的 Cache 中将包含:<IP1, P0RT1,1>、〈IP2,P0RT2,1> 和〈IP3,P0RT3,1>的信息。
[0081]可选地,本发明实施例方案中Cache中还保存有与APP ID、IP地址和端口号对应存储的时间戳,且该时间戳表示将与该时间戳对应的APP ID、IP地址和端口号存储至Cache的时刻。例如,假设本步骤106将获得的每一组IP地址和端口号以及识别出的应用的APP ID分别对应存储至Cache中的时刻所对应的时间戳为--ΜΕ1,则本次更新的Cache中可包含:<IP1, P0RT1,1,TIMED, <IP2, P0RT2,1,TIMED 和 <IP3, P0RT3,1,TIMED 的信息。
[0082]基于Cache中保存有与APP ID、IP地址和端口号对应存储的时间戳的情况,为了防止Cache无限膨胀,本发明实施例的方案可根据Cache中的时间戳,将超时的信息删除,具体为:在从Cache中确定出与步骤101接收到的数据包中包含的时间戳的差值大于预设阈值的时间戳时,删除确定出的时间戳以及相应的APP ID、IP地址和端口号。
[0083]实施例二:
[0084]本实施例二是与实施例一属于同一发明构思的数据包的识别设备,如图2所示,所述设备包括:
[0085]接收模块11用于接收数据包。
[0086]查找模块12用于从预先设置的Cache中查找所述数据包中包含的特定标识,若能查找到,则确定所述数据包为使用P2P协议封装的数据包,并根据所述Cache中与所述特定标识对应存储的APP ID,确定对所述数据包使用P2P协议进行封装的应用;所述特定标识为发送所述数据包的源节点的因特网协议IP地址和端口号,或接收所述数据包的目的节点的IP地址和端口号;其中,所述Cache包含:传输预先被确定为使用P2P协议封装的数据包的节点的IP地址和端口号,以及使用相应的P2P协议的应用的APP ID三者的对应关系;所述对应关系中的IP地址和端口号的获得方式包括:从获得的数据包中确定使用P2P协议封装且包含有指示信息的数据包,根据所述指示信息所指示的节点信息列表在应用层数据中的位置,从所述包含有指示信息的数据包的应用层数据中获得所述节点信息列表所包含的IP地址和端口号;和/或获得命令会话和握手会话中传输的数据包中包含的IP地址和端口号。
[0087]所述设备还包括:
[0088]识别模块13用于在查找模块12不能从预先设置的Cache中查找到所述数据包中包含的特定标识时,依次采用预先设定的多个使用P2P协议的应用的识别方法中的各识别方法,识别对接收到的数据包使用P2P协议进行封装的应用;
[0089]确定模块14用于在识别模块13识别出对所述接收到的数据包使用P2P协议进行封装的应用后,在所述接收到的数据包中添加识别出的应用的APP ID,从APP ID与节点标识获得方法的预设对应关系中,确定与所述识别出的应用的APP ID对应的节点标识获得方法;其中,所述节点标识包括节点的IP地址和端口号;
[0090]第一存储模块15用于根据确定模块14确定出的节点标识获得方法从所述接收到的数据包中获得至少一组IP地址和端口号,并针对获得的每一组IP地址和端口号分别执行:将所述识别出的应用的APP ID以及获得的IP地址和端口号对应存储至所述Cache中。
[0091]所述设备还包括:
[0092]第二存储模块16用于当查找模块12从预先设置的Cache中查找到所述数据包中包含的源节点的IP地址和端口号时,将所述Cache中与所述源节点的IP地址和端口号对应存储的APP ID,以及所述目的节点的IP地址和端口号对应存储至所述Cache中;或者
[0093]当查找模块12从预先设置的Cache中查找到所述数据包中包含的目的节点的IP地址和端口号时,将所述Cache中与所述目的节点的IP地址和端口号对应存储的APP ID,以及所述源节点的IP地址和端口号对应存储至所述Cache中。
[0094]可选地,如果所述Cache中还保存有与APP ID、IP地址和端口号对应存储的时间戳;且所述时间戳表示将与所述时间戳对应的APP ID、IP地址和端口号存储至所述Cache的时刻;则所述设备还包括:[0095]删除模块17用于在从所述Cache中确定出与接收模块11接收到的数据包中包含的时间戳的差值大于预设阈值的时间戳时,删除确定出的时间戳以及相应的APP ID、IP地址和端口号。
[0096]实施例三:
[0097]为使本领域技术人员更好地理解本发明实施例提供的上述方案,下面以一个具体实施例进行详细说明。其中,本发明实施例方案中的Cache具体为peer_cache表,peer-cache表中存储有已经被识别出发送P2P数据包的P2P节点的IP地址、端口号、具体的P2P应用的应用标识APP ID以及时间戳,APPID与P2P应用相对应,本发明实施例的方案可对不同的P2P应用分别设置不同的APP ID,例如,可设置BT应用的APP ID为1、迅雷应用的APP ID为2、百度影音应用的APP ID为3、PPlive应用的APP ID为4、skype应用的 APP ID 为 5、emule 应用的 APP ID 为 6。
[0098]本发明实施例方案的执行主体可由Peer-cache模块、Checker模块和Decoder模块三个模块组成,其具体应用流程图如图3所示,包括以下步骤:
[0099]步骤201:Peer-cache模块接收网络中的数据包。
[0100]其中,步骤201接收到的数据包可以是P2P节点间发送的P2P数据包,也可以是P2P节点与P2P服务器之间发送的P2P数据包,也可以不是P2P数据包。
[0101]步骤202:利用接收到的数据包中包含的目的IP地址和目的端口号查找peer-cache表,如果能查找到,则转至步骤203 ;如果查找不到,则转至步骤206。
[0102]其中,接收到的数据包中包含的目的IP地址和目的端口号即为目的节点的IP地址和端口号。
[0103]步骤203:从peer-cache表中提取出与查找到的目的IP地址和目的端口号对应存储的APP ID,并将该APP ID以及接收到的数据包中包含的源IP地址、源端口号和时间戳对应存储至peer-cache表中。其中,接收到的数据包中包含的源IP地址和源端口号即为源节点的IP地址和端口号。
[0104]由于步骤202已经从peer-cache表中查找到与接收到的数据包中包含的目的IP地址和目的端口号相匹配的记录,因此,可确认接收到的数据包为P2P数据包,且该数据包为与该APP ID对应的P2P应用(如BT应用)的数据包。并且,由于目的节点是P2P节点,则与之对应的源节点必然也是P2P节点,且源节点也会发送与确定出的APP ID相对应的P2P应用(如BT应用)的数据包,此时将源节点的IP地址和端口号以及该APP ID、接收到的数据包中包含的时间戳对应存储至peer-cache表中,可快速更新peer-cache表。如果peer-cache表中之前已经存储有该源节点的IP地址和端口号,则只本次只更新时间戳。
[0105]步骤204:根据接收到的数据包中包含的时间戳,将peer-cache表中超时的表项删除,具体为:从peer-cache表中查找与步骤201接收到的数据包中包含的时间戳的差值大于预设阈值的时间戳,删除查找到的时间戳以及相应的APP ID、IP地址和端口号。
[0106]步骤205:已识别出P2P数据包,流程结束。
[0107]步骤206:利用接收到的数据包中包含的源IP地址和源端口号查找peer-cache表,如果能查找到,则转至步骤207 ;如果查找不到,则转至步骤208。
[0108]步骤207:从peer-cache表中提取出与查找到的源IP地址和源端口号对应存储的APP ID,并将该APP ID以及接收到的数据包中包含的目的IP地址、目的端口号和时间戳对应存储至peer-cache表中,转至步骤204。
[0109]步骤208:Checker模块利用IP地址检测方法对Peer-cache模块输入的数据包进行识别,具体为:从预先存储的IP地址库中查找与该数据包中包含的源IP地址或目的IP地址相匹配的IP地址,如果能查找到,则确定该数据包为与该IP地址相对应的应用的P2P数据包,转至步骤213 ;如果查找不到,则转至步骤209。例如,假设本次识别出接收到的数据包中包含的IP地址为skype服务器的IP地址,即可确定该数据包为skype应用的P2P数据包。
[0110]步骤209:采用DPI方法对接收到的数据包进行识别,具体为:从预先存储的特征库中查找与该数据包的负载中携带的特征字符串相匹配的特征值,如果能查找到,则确定该数据包为与该特征值相对应的应用的P2P数据包,转至步骤213 ;如果查找不到,则转至步骤210。例如,假设本次从预先存储的payload特征库中查找到与接收到的数据包的负载中携带的特征字符串相匹配的特征值0xl3Bit,即可确定该数据包为BT应用的P2P数据包。
[0111]步骤210:采用流量统计方法对接收到的数据包进行识别,具体为:将本次接收到的数据包记录下来,并将本次接收到的数据包与之后接收到的数据包的流量特征进行联合判断。例如,假设本次接收的数据包的应用层大小为51字节,并且此数据包在会话中的位置为第一个请求包,下次接收到的数据包的应用层大小为85字节,并且此数据包在会话中的位置为第一个回应包,则可认为接收到数据包为emule应用的P2P数据包,转至步骤213 ;如果流量统计方法还是无 法识别出接收到的数据包为P2P数据包,则转至步骤211。
[0112]步骤211:Checker模块向某一节点发送一个P2P应用(如Skype)的P2P数据包,如果接收到该节点发送的格式正确的响应数据包,即可确定该响应数据包为skype应用的P2P数据包,此时,可在接收到的响应数据包中添加skype应用的应用标识5,转至步骤213 ;如果没有接收到该节点发送的响应数据包,则转至步骤212。
[0113]步骤:212:无法识别,流程结束。
[0114]步骤213:在接收到的数据包中添加与确定出的应用相对应的APP ID。
[0115]例如,假设步骤208识别出接收到的数据包为skype应用的P2P数据包,则本步骤213在接收到的数据包中添加skype应用的APP ID:5。
[0116]步骤214 decoder模块从接收到的数据包中提取出至少一组IP地址和端口号,插入peer-cache表中,转至步骤204。
[0117]本步骤214的具体实现方式可以为:
[0118]Decoder模块根据接收到的数据包中包含的APP ID,从APP ID与节点标识获得方法的预设对应关系中,确定与接收到的数据包中包含的APP ID对应的节点标识获得方法,并根据确定出的节点标识获得方法从接收到的数据包中获得至少一组IP地址和端口号,针对获得的每一组IP地址和端口号分别执行:将接收到的数据包中包含的APP ID、时间戳,以及获得的IP地址和端口号对应存储至peer-cache表中。
[0119]其中,每一个APP ID都会对应一种节点标识的获得方法。例如,与APP ID1(即BT应用)相对应的节点标识的获得方法可以为从接收到的数据包的应用层数据的“nodes”关键字后面的数据中获得至少一组IP地址和端口号。比如,BT应用的数据包的应用层数据为:dl:rd2:1d20:_?, YI+I2:1p4:w5:nodes208:V%uRZBRizm ~YCv/Ni=}MT400offz\;[..16j91P !叉1(#7#02008獨他0化118:?,]134丄1'1:71:代,其中nodes208表示的含义是冒号后面的208字节表示的是8个节点的信息。
[0120]与APP ID3 (即百度影音应用)相对应的节点标识的获得方法可以为从接收到的数据包的应用层数据的“ver: ”关键字后面的数据中获得至少一组IP地址和端口号。比如,百度影音应用的应用层数据为:ver: tcp:220.181.5.51:80:11udp:220.181.5.51:8010:1
tcp: 123.125.113.27:8002:11udp: 123.125.113.27:8008:11 tcp: 123.125.113.53:8001:11 udp: 123.125.113.53:8000:11 tcp: 220.181.44.158:8000:11 udp: 220.181.44.158:8000:1,其中ver:后面跟的即是节点列表。
[0121]假设接收到的数据包中包含的APP ID为1,则本步骤214可从APP ID与节点标识获得方法的预设对应关系中,确定出与APP ID为1对应的节点标识获得方法:从接收到的数据包的应用层数据的指定位置中获得至少一组IP地址和端口号,此时,可从接收到数据包的应用层数据的节点列表(如nodes或peers特征值后面的数值)中获得至少一组IP地址和端口号。
[0122]假设接收到的数据包中包含的APP ID为6,则本步骤214可从APP ID与节点标识获得方法的预设对应关系中,确定出与APP ID为6对应的节点标识获得方法:从接收到的数据包的网络层数据和传输层数据中获得源IP地址、源端口号、目的IP地址和目的端口号,此时,可从接收到的数据包的网络层数据中获得源IP地址和目的IP地址、从接收到的数据包的传输层数据中获得源端口号和目的端口号。
[0123]针对获得的至少一组IP地址和端口号,本步骤214可将获得的每一组IP地址和端口号,以及接收到的数据包中包含的APP ID、时间戳分别对应存储至peer-cache表中。
[0124]例如,假设步骤214从接收到的数据包中获得了 3组IP地址和端口号且接收到的数据包是BT应用的P2P数据包,其中,3组IP地址和端口号分别为IP1、P0RT1,IP2、P0RT2和IP3、P0RT3,而接收到的数据包中包含的时间戳为--ΜΕ1,则本次更新的Cache中可包含:〈IP1,P0RT1,1,TIMED, <IP2, P0RT2,1,TIMED 和 <IP3, P0RT3,1,TIMED 的信息。
[0125]本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
[0126]本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据包处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据包处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0127]这些计算机程序指令也可存储在能引导计算机或其他可编程数据包处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0128]这些计算机程序指令也可装载到计算机或其他可编程数据包处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0129]尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
[0130]显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
【权利要求】
1.一种数据包的识别方法,其特征在于,所述方法包括:接收数据包;从预先设置的高速缓冲存储器Cache中查找所述数据包中包含的特定标识,若能查找到,则确定所述数据包为使用点对点P2P协议封装的数据包,并根据所述Cache中与所述特定标识对应存储的应用标识APP ID,确定对所述数据包使用P2P协议进行封装的应用;所述特定标识为发送所述数据包的源节点的因特网协议IP地址和端口号,或接收所述数据包的目的节点的IP地址和端口号; 其中,所述Cache包含:传输预先被确定为使用P2P协议封装的数据包的节点的IP地址和端口号,以及使用相应的P2P协议的应用的APP ID三者的对应关系;所述对应关系中的IP地址和端口号的获得方式包括:从获得的数据包中确定使用P2P协议封装且包含有指示信息的数据包,其中,所述指示信息用于表示包含有指示信息的数据包中存在节点信息列表;从所述包含有指示信息的数据包的应用层数据中获得所述节点信息列表所包含的IP地址和端口号;和/或获得命令会话和握手会话中传输的数据包中包含的IP地址和端口号。
2.如权利要求1所述的数据包的识别方法,其特征在于,所述方法还包括:若不能查找到,则依次采用预先设定的多个使用P2P协议的应用的识别方法中的各识别方法,识别对接收到的数据包使用P2P协议进行封装的应用;在识别出对所述接收到的数据包使用P2P协议进行封装的应用后,在所述接收到的数据包中添加识别出的应用的APP ID,从APP ID与节点标识获得方法的预设对应关系中,确定与所述识别出的应用的APP ID对应的节点标识获得方法;其中,所述节点标识包括节点的IP地址和端口号;根据确定出的节点标识获得方法从所述接收到的数据包中获得至少一组IP地址和端口号,并针对获得的每一组IP地址和端口号分别执行:将所述识别出的应用的APP ID以及获得的IP地址和端口号对应存储至所述Cache中。
3.如权利要求2所述的数据包的识别方法,其特征在于,所述多个使用P2P协议的应用的识别方法包括下述方法中的一种或多种:流量统计;深度包检测;IP地址检测。
4.如权利要求1~3任一所述的数据包的识别方法,其特征在于,当从预先设置的Cache中查找到所述数据包中包含的源节点的IP地址和端口号时,则所述方法还包括:将所述Cache中与所述源节点的IP地址和端口号对应存储的APP ID,以及所述目的节点的IP地址和端口号对应存储至所述Cache中;或者当从预先设置的Cache中查找到所述数据包中包含的目的节点的IP地址和端口号时,则所述方法还包括:将所述Cache中与所述目的节点的IP地址和端口号对应存储的APPID,以及所述源节点的IP地址和端口号对应存储至所述Cache中。
5.如权利要求4所述的数据包的识别方法,其特征在于,所述Cache中还保存有与APPID、IP地址和端口号对应存储的时间戳;且所述时间戳表示将与所述时间戳对应的APPID、IP地址和端口号存储至所述Cache的时刻;则所述方法还包括:在从所述Cache中确定出与所述接收到的数据包中包含的时间戳的差值大于预设阈值的时间戳时,删除确定出的时间戳以及相应的APP ID、IP地址和端口号。
6.一种数据包的识别设备,其特征在于,所述设备包括:接收模块,用于接收数据包;查找模块,用于从预先设置的Cache中查找所述数据包中包含的特定标识,若能查找到,则确定所述数据包为使用P2P协议封装的数据包,并根据所述Cache中与所述特定标识对应存储的APP ID,确定对所述数据包使用P2P协议进行封装的应用;所述特定标识为发送所述数据包的源节点的因特网协议IP地址和端口号,或接收所述数据包的目的节点的IP地址和端口号;其中,所述Cache包含:传输预先被确定为使用P2P协议封装的数据包的节点的IP地址和端口号,以及使用相应的P2P协议的应用的APP ID三者的对应关系;所述对应关系中的IP地址和端口号的获得方式包括:从获得的数据包中确定使用P2P协议封装且包含有指示信息的数据包,其中,所述指示信息用于表示包含有指示信息的数据包中存在节点信息列表;从所述包含有指示信息的数据包的应用层数据中获得所述节点信息列表所包含的IP地址和端口号;和/或获得命令会话和握手会话中传输的数据包中包含的IP地址和端口号。
7.如权利要求6所述的数据包的识别设备,其特征在于,所述设备还包括:识别模块,用于在查找模块不能从预先设置的Cache中查找到所述数据包中包含的特定标识时,依次采用预先设定的多个使用P2P协议的应用的识别方法中的各识别方法,识别对接收到的数据包使用P2P协议进行封装的应用;确定模块,用于在识别模 块识别出对所述接收到的数据包使用P2P协议进行封装的应用后,在所述接收到的数据包中添加识别出的应用的APP ID,从APP ID与节点标识获得方法的预设对应关系中,确定与所述识别出的应用的APP ID对应的节点标识获得方法;其中,所述节点标识包括节点的IP地址和端口号;第一存储模块,用于根据确定模块确定出的节点标识获得方法从所述接收到的数据包中获得至少一组IP地址和端口号,并针对获得的每一组IP地址和端口号分别执行:将所述识别出的应用的APP ID以及获得的IP地址和端口号对应存储至所述Cache中。
8.如权利要求7所述的数据包的识别设备,其特征在于,所述多个使用P2P协议的应用的识别方法包括下述方法中的一种或多种:流量统计;深度包检测;IP地址检测。
9.如权利要求6~8任一所述的数据包的识别设备,其特征在于,所述设备还包括:第二存储模块,用于当查找模块从预先设置的Cache中查找到所述数据包中包含的源节点的IP地址和端口号时,将所述Cache中与所述源节点的IP地址和端口号对应存储的APP ID,以及所述目的节点的IP地址和端口号对应存储至所述Cache中;或者当查找模块从预先设置的Cache中查找到所述数据包中包含的目的节点的IP地址和端口号时,将所述Cache中与所述目的节点的IP地址和端口号对应存储的APP ID,以及所述源节点的IP地址和端口号对应存储至所述Cache中。
10.如权利要求9所述的数据包的识别设备,其特征在于,所述Cache中还保存有与APP ID、IP地址和端口号对应存储的时间戳;且所述时间戳表示将与所述时间戳对应的APPID、IP地址和端口号存储至所述Cache的时刻;则所述设备还包括:删除模块,用于在从所述Cache中确定出与接收模块接收到的数据包中包含的时间戳的差值大于预设阈值的时间戳时,删除确定出的时间戳以及相应的APP ID、IP地址和端口号。`
【文档编号】H04L29/08GK103746768SQ201310464266
【公开日】2014年4月23日 申请日期:2013年10月8日 优先权日:2013年10月8日
【发明者】罗元海 申请人:北京神州绿盟信息安全科技股份有限公司, 北京神州绿盟科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1