具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1所示为本发明实施例一提出的一种P2P流识别的方法,所述P2P流识别的方法用于识别待测终端正在进行的P2P通讯,所述方法包括:
步骤S100,获得待测终端通过待测进程所接收的数据包的信息;
步骤S101,根据待测终端接收的数据包的信息判断与所述待测终端通讯连接的多个外接终端的设备类型;
具体的,所述设备类型包括通过NAT(Network Address Translation,网络地址转换)设备接入网络的终端,以及具有公网IP的终端。
步骤S102,根据所述设备类型获取所述多个外接终端所对应的数据流信息;
具体的,所述数据流信息包括:所述数据流信息包括通过网络地址转换设备接入网络的终端的数量信息和流量信息,以及具有公网IP的终端的数量信息和流量信息。
步骤S103,根据所述多个外接终端所对应的数据流信息,判断所述待测终端是否在进行P2P通讯。
进一步的,所述根据待测终端接收的数据包的信息判断与所述待测终端通讯连接的多个外接终端的设备类型包括:获得所述待测终端通过待测进程所接收的数据包的信息,所述根据多个外接终端所对应的数据流信息,判断所述待测终端是否在进行P2P通讯包括:根据所述多个外接终端所对应的数据流信息,判断所述待测终端是否在通过所述待测进程进行P2P通讯。当所述待测终端通过所述待测进程进行P2P通讯时,与所述待测进程相关的数据流量为P2P流。
在本发明实施例中,通过检测与待测终端通讯连接的外接终端的设备类型和流量信息即可实现对P2P通讯的识别,不需要对数据包进行解析,可适用于各种标准的P2P通讯技术。而当确认待测终端的某条进程正在为P2P通讯服务时,即可对该进程实施各种控制手段,来控制该待测终端通过该进程所进行的P2P通讯。
易于理解的是,通过本发明实施例来识别P2P数据流亦可不针对于单个的进程进行,而是对待测终端所接收的全部数据包进行检测,获取所有外接终端的设备类型,以及待测终端和所有外接终端之间通讯的数据流信息。并根据该设备类型和数据流信息来判断该待测终端是否在进行P2P通讯。
可见,本实施例中,对数据流进行识别时,不需要检测数据包的具体内容,不涉及到容易引起争议的隐私保护和法律问题,并且不需要解析数据包,从而避免了对加密数据包的解析,识别效率很高。而且使用本发明实施例中提出的P2P流的特征时,可以对所有的数据流进行检测,具有很高的可扩展性。
下面将结合图2对本发明实施例所揭示的P2P流的识别方法进行进一步的说明:
步骤S201,获得待测终端通过待测进程所接收的数据包的信息,并从该数据包中获取数据包的TTL信息。
其中,该接收的数据包为来自外接终端的数据包。
步骤S202,根据该数据包的TTL信息获取通过该待测进程与该待测终端通讯的不同设备类型信息,其中,该不同设备类型信息包括通过NAT设备连接网络的终端的数量,以及具有公网IP的终端的数量。
本实施例中,根据数据包中的TTL值的大小获取通过该待测进程与该待测终端通讯的不同设备类型信息。由于当一个数据包经过路由设备或NAT设备时,数据包中的TTL值会减少1,因此当从数据包中获取到的TTL值的减少值大于待测终端和外接终端之间的路由个数(待测终端和外接终端之间的路由距离)时,则该外接终端为通过NAT设备接入网络的终端;当从数据包中获取到的TTL值的减少值,等于待测终端和外接终端之间的路由个数时,则外接终端为具有独立公网IP的终端。该TTL值的减少值为根据数据包中的TTL值所获取的。其中,根据业界的通用标准,TTL的典型值包括64或128或255。而本发明实施例中,可根据数据包中的TTL值和与其最接近的TTL典型值之间的差,获取TTL值的减少值。例如,当从数据包中获取到的TTL值为123时,则该TTL值的减少值为5(128-123=5)。
根据上述的技术原理,通过探测法识别与待测终端通讯的外接终端为通过NAT设备接入网络的终端或具有独立公网IP的终端的过程如图3所示,包括:
步骤S301,向外接终端发送连接请求。
具体的,该连接请求为根据从外接终端的数据包中获取到的外接终端的端口,向该端口所对应的地址发送连接请求,该连接请求所使用的协议类型包括但不限于TCP协议。
步骤S302,获取待测终端和外接终端之间的路由个数。
在本发明实施例中,在待测终端和外接终端建立连接后,通过待测终端并根据该连接PING(Packet Internet Grope,因特网包探索器)外接终端,以使外接终端向待测终端返回PING的结果。根据该返回的结果获取待测终端和外接终端之间的路由个数。
步骤S303,根据上述的路由个数和TTL值的减少值判断与待测终端通讯的外接终端的设备类型。
具体的,根据待测终端接收的外接终端的数据包中TTL的减少值,以及外接终端和待测终端之间的实际路由个数,判断出外接终端是NAT设备还是具有独立公网IP的终端,即当从数据包中获取到的TTL值的减少值为待测终端和外接终端之间的路由个数时,判断该外接终端为具有独立公网IP的终端,当从数据包获取到的TTL值的减少值大于待测终端和外接终端之间的路由个数时,判断该外接终端为通过NAT设备接入网络的终端。
具体的,根据上述的判断结果,获取与待测终端通讯的终端(外接终端)中的具有独立公网IP的终端的数量,以及利用了NAT设备的终端的数量。即在经过一预设的时间内,根据待测终端接收到的所有外接终端的数据包获取不同设备类型的终端总数量,包括获取通过NAT设备接入网络的终端总数量和具有公网IP的终端总数量,该通过NAT设备接入网络的终端总数量以NUMNAT标识,该具有公网IP的终端总数量以NUMIP标识。
步骤S203,根据该设备类型信息,获取该待测终端通过待测进程的数据流量信息。
该数据流量信息包括待测终端与通过NAT设备接入网络的终端之间的上行流量Nup、待测终端与通过NAT设备接入网络的终端之间的下行流量Ndown、待测终端与具有公网IP的终端之间的上行流量Pup、待测终端与具有公网IP的终端之间的下行流量Pdown。即当外接终端为通过NAT设备接入网络的终端时,识别设备根据获取到的数据包获取Nup和Ndown,当外接终端为具有公网IP的终端,识别设备根据获取到的数据包获取Pup和Pdown。
步骤S204,根据数据流信息,判断待测终端是否在通过待测进程进行P2P通讯。其中,当待测终端通过待测进程进行P2P通讯时,该待测进程所产生的流量为P2P流,该数据流信息包括但不限于设备类型信息和数据流量信息,即数据流信息包括通过NAT设备接入网络的终端的数量信息和流量信息,以及具有公网IP的终端的数量信息和流量信息。
具体的,当设备类型信息和数据流量信息满足下列特征时即可判断待测终端在通过待测进程进行P2P通讯:1)与待测终端通讯的外接终端为通过NAT设备接入网络的终端的比例大于预设的第一阈值。在本发明实施例中,该第一阈值为70%;本发明实施例中,该第一阈值是根据历史经验选取的、其具体数值可根据实际情况在70%和100%之间选取。和2)Nup与Ndown具有相同或相近的数据传输数量级,即Nup与Ndown相比,数量级的差小于预设的第二阈值,该第二阈值为小于1的数值,同样的,该第二阈值是根据历史经验选取的、其具体数值根据实际情况而定;和3)Pup比Pdown具有小得多的数量级识别设备根据获取到的数据包获取Pup和Pdown,该Pup与Pdown相比数量级小于预设的第三阈值,该第三阈值的数值为大于3的数值,同样的,该第三阈值是根据历史经验选取的、其具体数值根据实际情况而定,例如当Pdown为10的6次方的数量级时,该Pup的数量级为小于10的3次方的数量级,本实施例中,上述具有公网IP的外接终端可以为服务器或客户端,当该具有公网IP的外接终端为服务器时,在待测终端与外接终端进行数据交互时,待测终端将从外接终端(服务器)下载大量数据,而上传的数据会很少,即当外接终端为具有公网IP的服务器时,Pdown将远大于Pup,从而使得具有公网IP的外接终端为服务器和客户端时,Pup比Pdown具有小得多的数量级;和4)WNAT为Nup与Ndown的和,WIP为Pup与Pdown的和,此时WNAT比WIP的数量级高,即WNAT的数量级比WIP的数量级高于预设的第四阈值,在本发明实施例中,该第四阈值为大于1的数值,同样的,该第四阈值是根据历史经验选取的、其具体数值根据实际情况而定,例如,当WIP为10的6次方的数量级时,该WNAT的数量级为大于10的7次方的数量级,本实施例中,该WIP为待测终端与具有公网IP的外接终端之间交互数据的总量,该WNAT为待测终端与通过NAT设备接入网络的外接终端之间交互数据的总量,而通过NAT设备接入网络的外接终端数目远大于具有公网IP的外接终端数目,从而待测终端与通过NAT设备接入网络的外接终端之间交互数据的总量大于待测终端与具有公网IP的外接终端之间交互数据的总量。
通过上述的P2P流的特征可以看出,待测终端将和多个外接终端同时进行通讯;与待测终端通讯的外接终端为通过NAT设备接入网络的终端的数目远大于,与待测终端通讯的外接终端为具有公网IP的终端的数目;待测终端和外接终端之间的通讯是双向的,该双向通讯具体为待测终端在接收外接终端数据的同时,也会将待测终端的数据发送给外接终端。
可见,在本发明实施例中,通过比较待测终端上接收到的数据包中TTL的减少值以及外接终端和待测终端之间的实际路由个数,判断出外接终端是通过NAT设备接入网络的终端或具有独立公网IP的终端,该原理简单实用。
通过检测与待测终端通讯连接的外接终端的设备类型和流量信息即可实现对P2P通讯的识别,不需要对数据包进行解析,可适用于各种标准的P2P通讯技术。而当确认待测终端的某条进程正在为P2P通讯服务时,即可对该进程实施各种控制手段,来控制该待测终端通过该进程所进行的P2P通讯。
易于理解的是,通过本发明实施例来识别P2P数据流亦可不针对于单个的进程进行,而是对待测终端所接收的全部数据包进行检测,获取所有外接终端的设备类型,以及待测终端和所有外接终端之间通讯的数据流信息。并根据该设备类型和数据流信息来判断该待测终端是否在进行P2P通讯。
本发明实施例三提出的一种P2P流识别的装置,所述P2P流识别的装置用于识别待测终端正在进行的P2P通讯,如图4所示,包括:
第一判断模块41,用于根据待测终端接收的数据包的信息判断与该待测终端通讯连接的多个外接终端的设备类型信息;
第一获取模块42,用于根据第一判断模块41判断的多个外接终端的设备类型信息获取多个外接终端所对应的数据流信息;
具体的,该数据流信息包括通过网络地址转换设备接入网络的终端的数量信息、具有公网IP的终端的数量信息、通过网络地址转换设备接入网络的终端的流量信息、以及具有公网IP的终端的流量信息。
第二判断模块43,用于根据第一获取模块42获取的多个外接终端所对应的数据流信息,判断待测终端是否在进行P2P通讯。
进一步的,该第一判断模块41进一步用于根据待测终端通过待测进程接收的数据包的信息,来判断通过待测进程与待测终端通讯连接的多个外接终端的设备类型信息。
进一步的,该第一判断模块41包括:
第一获取单元411,用于根据来自待测进程的数据包的信息获取TTL值;
第二获取单元412,用于获取该外接终端与待测终端之间的路由个数;
第一判断单元413,用于当第一获取单元411获取的TTL值减少的数值等于第二获取单元412获取的路由个数时,判断该外接终端为具有公网IP的终端;
第二判断单元414,用于当第一获取单元411获取的TTL值减少的数值大于第二获取单元412获取的路由个数时,判断该外接终端为通过NAT设备接入网络的终端。
其中,本发明实施例装置的各个模块可以集成于一体,也可以分离部署。上述模块可以合并为一个模块,也可以进一步拆分成多个子模块。而且上述单元可以合并为一个单元,也可以进一步拆分成多个子单元。
可见,本实施例中,通过检测与待测终端通讯连接的外接终端的设备类型和流量信息即可实现对P2P通讯的识别,不需要对数据包进行解析,可适用于各种标准的P2P通讯技术。而当确认待测终端的某条进程正在为P2P通讯服务时,即可对该进程实施各种控制手段,来控制该待测终端通过该进程所进行的P2P通讯。
易于理解的是,通过本发明实施例来识别P2P数据流亦可不针对于单个的进程进行,而是对待测终端所接收的全部数据包进行检测,获取所有外接终端的设备类型,以及待测终端和所有外接终端之间通讯的数据流信息。并根据该设备类型和数据流信息来判断该待测终端是否在进行P2P通讯。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可以通过硬件实现,也可以可借助软件加必要的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视本发明的保护范围。