竭诚为您提供优质文档/双击可除
p2p协议识别

  篇一:p2p协议识别
  p2p协议识别技术方案
  报告人:时间:
  1gnutella0.4协议
  1.1端口特征识别
  缺省端口:6346/6347/6348
  1.2流量特征识别
  ipp2p识别方案:gnutellatcp
  检查gnutella的get命令
  如果tcppayload的最初9个字节的内容为"get/get/",或最初的13个字节为"get/uri-res/"即为gnutella
  检查gnutella的get命令和其他特定字段
  如果tcppayload的最初17个字节的内容为"gnutellaconnect/",或者最初的9个字节的内容为"gnutella/"。即为gnutella
  如果tcppayload的最初9个字节的内容为"get/get/",或最初的13个字节为"get/uri-res/"若ippayload长度大于tcp头部长度+30,此时如果指针自tcppayload右移8个字节,指针所指的内容中第一个字节为0x0d,第二个字节为0x0a,匹配"x-gnutella-",或"x-queue:",匹配成功则为gnutella,(详情参看代码)
  gnutellaudp
  如果udppayload的最初3个字节的内容为"gnd",或者最初的9个字节的内容为"gnutella/"。即为gnutella
  l7Filter识别方案:
  ^(gnd[\x01\x02]..\x01|gnutellaconnect/[012]\.[0-9]\x0d\x0a|get/uri-res/n2r\urn:sha1:|get/.*user-agent:(gtk-gnutella|bearshare|mactella|gnucleus|gnotella|limewire|imesh)|get/.*content-type:application/x-gnutella-packets|giv[0-9]*:[0-9a-f]*/|queue[0-9a-f]*
  [1-9][0-9][0-9]\.[1-9][0-9][0-9]\.[1-9][0-9][0-9]\.[1-9][0-9][0-9]:[1-9][0-9][0-9][0-9]|gnutella.*content-type:application/x-gnutella|..................lime)
  我们的识别方案:
  连接查询过程:payload的第17个字节是命令id,其值为:0x00,0x01,0x80,0x81,0x40,(扩展:0x02,0x10,0x30,0x31,0x32),从第20到23这4个字节,是其后的payload长度,即(payload长度-23)。与ip中的报文长度(3-4字节)相比,中间应该相差ip头(20b)、tcp/udp头(8b/20b)、gnutella头23b
  下载过程:下载遵守http协议。下载请求的以get/get///http开头,后面匹配user-agent:的内容以gnutella/开头。返回文件数据时,以http/x.x200ok\r\n开头,后面匹配server:的内容是gnutella/y.y\r\n.
  1.3协议特征提取
  连接阶段
  如果clienta向supernodeb发起gnutella连接,将进行以下通讯:1.首先进行tcp三次握手。
  2.连接成功后,a通过tcp发送:gnutellaconnect/x30/x2e/x36/0x0d/0x0a
  可以匹配的有用的字段:listen-ip:162.105.130.97:6346(这个具体是什么还不清楚)
  以下分为两种响应情况:成功gnutella连接:
  3.成功响应为,b发送响应消息:gnutella/0.6200ok/0x0d/0x0a
  4.a接到响应消息后,发送响应:gnutella/0.6200ok/0x0d/0x0a没有什么对检测有意义的字段:
  不成功gnutella连接:
  5.如果连接失败,b会发送消息:gnutella/0.6/0x0d/0x0a6.终止tcp连接,b会发起Fin包
  *上面的过程是普通节点和超级节 
点之间建立连接的过程;它可以推广到普通节点和普通节点之间,超级节点和超级节点之间的连接建立。
  ping/pong过程检测到ping消息:从ip头中得到源ip从tcp头中得到源port从payload中得到描述id写一条网络节点发现日志,sip=源ip,sport=tcp端口,snodeid=描述id,snodetype=1(normal)
  检测到pong消息:从ip头中得到源ip从tcp头中得到源port从payload中得到侦听端口从payload中得到侦听ip从payload中得到共享文件个数从payload中得到共享文件千字节数
  写一条网络节点发现日志,sip=侦听ip,sport=侦听端口,snodetype=1(normal),filecount=
共享文件个数,filesize=共享文件千字节数
  query/queryhit过程检测到query消息:从ip头中得到源ip从tcp头中得到源port从payload中得到查字符串写一条用户查询日志,sip=源ip,sport=tcp端口,keyword=查字符串,action=query
  检测到queryhit消息:从ip头中得到源ip从tcp头中得到源port从payload中得到查到的文件个数n(用于分析后面的结果集)从payload中得到响应端口从payload中得到响应ip从payload中得到返回结果集(n个结果详细结构:包括文件index,文件大小,文件名…)写若干条网络资源日志,sip=响应ip,sport=响应端口,fileid=文件index,filesize=文件大小,filename=文件名
  http下载过程
  检测到http文件请求消息:从ip头中得到源ip从tcp头中得到源port从payload中得到文件index从payload中得到文件名
  检测到http应答消息:从ip头中得到源ip从tcp头中得到源port从payload中得到文件类型从payload中得到文件长度写一条用户下载日志,sip=源ip,sport=源port,dip=目的ip,dport=目的port,fileid=文件index,filetype=文件类型,filename=文件名,filesize=文件长度,action=downloa
d
  2edonkey2000/emule协议
  2.1端口特征识别
  tcp缺省4662侦听口;udp缺省4672侦听口。
  2.2流量特征识别
  ipp2p识别方案:edktcp
  edonkey传输命令的识别(快速识别)
  指针自tcppayload的初始位置,右移5个字节的内容为0x47,即为edk较慢的识别方式:
  如果tcppayload的初始位置的内容为0xe3,且如果自初始位置右移1个字节,取两个字节的内容content=ip包长–tcp头部长度-5,则若自tcppayload的初始位置右移5个字节,取一个字节,
  其内容=0x1则为client:helloorserver:hello;其内容=0x4c则为client:hello-answer;否则若content>ip包长–tcp头部长度-5,则若自tcppayload的初始位置右移3个字节,和右移四个字,各取一个字节的内容均为0,此时若则若自tcppayload的初始位置右移5个字节,取一个字节,其内容=0x1,则为edk
  edkudp
  自udppayload初始位置始的第一个字节,为0xe3(edonkey)时,在第二个字节为0x9a,若(ip包长-10)模16为零时,即为edk;在第二个字节为0x96时,若ip包长为14,即为edk;
  在第二个字节为0x94时,若(ip包长-10)模20为零时,即为edk。自udppayload初始位置始的第一个字节,为0xc5(emule)时,
  若第二个字节为0x91,且若第三个字节不等于0,并且ip包长为12,即为edk;若第二个字节为0x90,且若第三个字节不等于0,并且ip包长为26,即为edk;若第二个字节为0x92,并且ip包长为10,即为edk;若第二个字节为0x93,并且ip包长为10,即为edk。
  自udppayload初始位置始的第一个字节,为0xe4(kad)时,若第二个字节为0x50,并且ip包长为12,即为edk;
  若第二个字节为0x58,且若第三个字节不等于0,并且ip包长为14,即为edk;若第二个字节为0x59,并且ip包长为10,即为edk;
  若第二个字节为0x30,且若第19个字节等于1,并且ip包长大于26,即为edk;若第二个字节为0x28,且若第69个字节等于0,并且ip包长大于76,即为edk;
  若第二个字节为0x20,且若第3个字节不等于0,并且ip包长等于43,且第35个字节不等于0,
即为edk;
  若第二个字节为0x00,且若第27个字节等于0,并且ip包长等于35,即为edk;若第二个字节为0x10,且若第27个字节等于0,并且ip包长等于35,即为edk;若第二个字节为0x18,且若第27个字节等于0,并且ip包长等于35,即为edk;若第二个字节为0x40,且若第20个字节等于0,且第19个字节等于1,并且ip包长大于40,即为edk;
  篇二:p2p协议数据识别
  p2p协议数据识别
  本文档的copyleft归yfydz所有,使用gpl发布,可以自由拷贝,转载,转载时请保持文档的完整性,严
  禁用于任何商业用途。
  msn:
  来源:yfydz.cublog
  1.前言
  目前p2p应用越来越普遍,如bt、edonkey、emule等,这些新一代的p2p突破了老一代数据传输如Ftp协议只能两台机器之间传输的瓶颈,可以用多线程多主机/服务器间的连接,可以
把网络带宽利用到极限。
  由于这些应用对网络带宽带来了很大压力,因此很多场合下p2p成了运营商、网管们所痛恨的对象,运营商迫于压力不敢作限制,但很多网管在所管的防火墙上都进行了p2p的限制。
  现在的p2p软件都可以使用动态端口来进行数据连接,而且也可以使用其他协议的标准端口如80等进行通信,因此普通的端口封禁很难奏效,只能从通信内容中进行判断。
  netfilter的pom中提供了ipp2p匹配,可匹配很多种p2p协议,本文就是根据ipt_ipp2p.c文件说明各种p2p协议的数据特征。
  以下说明都是跳过tcp/udp头而直接到数据部分。
  2.udp
  2.1emule/edonkey/kad
  这几个协议用二进制数进行协商:
  --------------------------------------------------------------------第一字节|第二字节|第三字节|其他字节|udp长度|类型
  --------------------------------------------------------------------0xe3|
  0x9a|any|any|26|edonkey
  0xe3|0x96|any|any|14|edonkey
  --------------------------------------------------------------------0xc5|
  0x91|!0|any|12|emule
  0xc5|0x90|!0|any|26|emule
  0xc5|0x92|any|any|10|emule
  0xc5|0x93|any|any|10|emule
  --------------------------------------------------------------------0xe4|
  0x50|any|any|12|kad
  0xe4|0x58|!0|any|14|kad
  0xe4|0x59|any|any|10|kad
  0xe4|0x30|any|0x01(19)|>26|kad
  0xe4|0x28|any|0x00(69)|>76|kad
  0xe4|0x20|!0|!0(35)|43|kad
  0xe4|0x00|any|0x00(27)|35|kad
  0xe4|0x10|any|0x00(27)|35|kad
  0xe4|0x18|any|0x00(27)|35|kad
  0xe4|0x40|any|1(19)0(20)|>40|kad
  --------------------------------------------------------------------
  2.2gnutella
  就是明文检查起始数据是否为"gnutella"或"gnd"
  2.3kazaa
  udp数据部分的结尾6个字节是:"kazaa\0"
  2.4bittorrent
  udp长度24字节(含udp头),起始8个字节为:0000041727101980
  3.tcp
  3.1ares
  --------------------------------------------------------------------数据长度|类型|数据内容--------------------------------------------------------------------6|连接|二进制数:03005a040305
  60|下载|字符串:"pushsha1:",数据结尾为"\n\n"
  --------------------------------------------------------------------
  3.2soulseek
  前8个字节格式为:xxxx0000yyzz0000,其中xxxx为16位负载长度-4,yy!=0,zz任意或者数据长度8字节,全0
  或者数据格式为:000000..,其中负载长度大于xx+6,负载第xx+4+1字节(zz)不为0,而负载第xx+5+1字节,第xx+6+1字节为0.
  3.3winmx
  负载长度为4字节时负载内容为"send"或负载长度为3字节时负载内容为"get"
  其他情况负载长度必须大于10,负载必须以"send"或"get"开头,而且负载内容中出现0x200x22,之后出现0x220x20.
  3.4applejuice
  负载起始数据为"ajprot\r\n"
  3.5bittorrent
  负载第一字节为0x13,而且后续数据为:"bittorrentprotocol"
  3.6kazaa命令
  负载最后以"\r\n"结尾,而且起始数据为:"get/.hash="
  3.7gnutella命令
  负载最后以"\r\n"结尾,而且
  起始数据为:"get/get/",
  或者是:"get/uri-res/",
  3.8各种类型的gnutella
  负载最后以"\r\n"结尾,而且
  起始数据为:"gnutellaconnect/",
  或者是:"gnutella/"
  或者是:"get/get/",或"get/uri-res/",而且负载中包含"\r\nx-gnutella-"或"\r\nx-queue:"
  3.8各种类型的kazaa
  负载最后以"\r\n"结尾,而且
  起始数据为:"giVe",
  或者是:"get/",而且负载中包含"\r\nx-kazaa-username:"
  3.9edonkey文件碎片传输
  负载第一字节为0xe3,第6字节为0x47
  3.10各种类型的edonkey/emule
  负载第一字节为0xd4,而且第2,3字节表示的长度等于负载长度减5,而且第6字节为0x82或0x15负载第一字节为0xc5,而且第2,3字节表示的长度等于负载长度减5,而且第6字节为0x01/0x02/0x60/
  0x81/0x82/0x85/0x86/0x87/0x40/0x92/0x93/0x12
  负载第一字节为0xe3,如果第2,3字节表示的长度等于负载长度减5,而且第6字节为
  0x01/0x50/0x16/
  0x58/0x48/0x54/0x47/0x46/0x4c/0x4f/0x59/0x65/0x66/0x51/0x52/0x4d/0x5c/0x38/0x69/0x19/
  0x42/0x34/0x94/0x1c/0x6a;如果第2,3字节等表示的长度大于负载长度减5,而且第4,5字节为0,第6字节为0x01或0x4c;如果第2,3字节等表示的长度小于负载长度减5,则负载偏移该长度字节后的第6字节为0xe3/0xc5
  3.11直接连接(directconnect)
  负载第一字节为0x24,之后数据为:"send|"
  3.12各种直接连接(directconnect)
  负载第一字节为0x24,而且最后一个字节为0x7c,而且从负载第2字节的数据格式为:"lock"/"key"/"hello"/"mynick"/"search"/"send"
  4.结论
  ipt_ipp2p.c中定义了很多p2p软件的数据的判断模式,对于二进制的数据可能误判少些,但文本数据误判可能性就大得多,从协议标准看,emule/edonkey的判断应该是比较准确的,其他的有效性没测试过。
  注意程序中将网络数据转换为16位,32位整数的宏:
  #defineget_u16(x,o)(*(__u16*)(x+o))
  #defineget_u32(x,o)(*(__u32*)(x+o))
  因为这些协议都是在intel硬件,microsoft操作系统实现,定义的时候就所有数据就都定义为“小头”序而不是一般网络协议中的“大头”序,所以不需要进行ntohs和ntohl转换。
tcp ip协议下载  篇三:p2p协议的分析
  摘要:p2p流量检测技术可分为基于流量特征的识别方法(tli)和基于深层数据包识别方法(dpi)。tli通过对传输层数据包进行分析并结合p2p系统所表现出来的流量特征,来识别某个网络流是否属于p2p。dpi采用协议分析与还原技术,提取p2p应用层数据,通过分析其载荷所
包含的协议特征值,来判断网络流量是否属于p2p应用。dpi由于具有准确性高、健壮性好、具有分类功能,是p2p流量识别的主要方法。如果能够结合tli和dpi的优点,就有可能设计出一个准确、高效的p2p流量实时识别算法。
  近年来,对等网络(p2p)的用户规模、应用类型和流量均呈爆发式增长。分析结果表明,基于p2p的语音通信软件skype在中国同时在线用户数高达900万,p2p互联网电视(如pplive、ppstream等)的注册用户数已超过1亿,在线收视者数达到100~500万。p2p应用类型也已经从文件共享,扩展到语音、视频等应用领域。同样,中国互联网实际流量模式分析报告表明,p2p流量已占整个互联网流量的60%。
  有鉴于此,国际网络设备生产商和网络服务提供商相继推出了p2p流量识别与监管产品。p2p流量检测设备包括网络缓存设备、应用层流量管理设备、流统计状态路由器和智能防火墙等。主要包括cisco公司的netFlow技术[1]、allot公司的故障恢复流量管理方案[2]、cachelogic公司的cachelogicp2p管理方案[3]、Versotechnologies公司的netspective系列产品[4]等,这些产品都使用了自行研发的深层数据包检测技术,除了在性能和识别精度上存在差别外,其技术的本质是相同的。
  相对来说,中国对于p2p流量识别技术的研究工作较少,不仅缺乏高质量学术论文,也缺乏
高效的p2p多媒体内容识别与过滤产品。从产品角度来看,中国部分网络设备生产商虽然推出了p2p流量监控的相关产品,如captech的网络管理软件——网络慧眼cap[5],但是由于这些产品采用的都是深层数据包检测技术,因此在性能、开销等方面存在很多问题。
  开展高效、准确的p2p流量(尤其是多媒体内容)实时识别与过滤相关技术研究,不仅有利于合理利用互联网基础设施、合理利用p2p技术、合理部署p2p应用,有利于制止非法内容在p2p网络中的传播,也有助于维护中国互联网的健康环境和营造一个和谐的网络社会。
  1对等网络流量检测的困难性
  对等网络是一种分布式网络,其中的参与者共享他们所拥有的一部分硬件资源(处理能力、存储能力等),这些共享资源需要由网络提供服务和内容,能被其他节点(peer)直接访问而无需经过中间实体。在此网络中的参与者既是资源提供者(即服务器),又是资源获取者(即客户)。对等网络的代表性应用是文件共享(如napster)。但是,p2p不仅仅是用于文件共享,它还包括建立基于p2p形式的通信网络、p2p计算或其他资源的共享等很多方面。p2p最根本的思想,同时也是它与客户/服务器模型(c/s)最显著的区别在于网络中的节点既可以获取其他节点的资源或服务同时又是资源或服务的提供者,即兼具客户机和服务器的双重身份。一般p2p网络中每一个节点所拥有的权利和义务都是对等的,包括通信、服务和资源消费。
  从分类来看,可以将p2p分为纯p2p和混合p2p两种模式。纯p2p网络中不存在中心实体或服务器,从网络中移去任何一个单独的、任意的终端实体,都不会给网络中的服务带来大的损失。而混合p2p网络中则需要有中心实体来提供部分必要的网络服务,如保存元信息、提供索引或路由、提供安全检验等。
  p2p应用的飞速发展,虽然丰富了互联网的内容,但其流量的爆发式增长和不加限制的带宽占用,不仅给互联网基础设施带来了巨大冲击,也给internet服务提供商(isp)和应用服务提供商(asp)高级服务的部署带来了很多问题。此外,p2p网络也迅速成为恶意代码、黄淫秽内容、反动信息、盗版资源等传播的沃土。
  因此,对等网络的快速识别与分类,不仅为运营商提高服务质量(qos)提供技术支持,也可以为对等网络上的内容监管(如恶意代码识别、病毒防御)提供保障。但是,由于对等网络的内在特性,其流量识别存在以下特殊性:
  (1)不确定性
  由于对等网络应用的多样性(如文件共享、语言通信、视频通信)等,因此对等网络流量不仅在流量特征上,而且在行为特征上也表现出不确定性。此外,对等网络中节点的动态性也增加了对等网络流量的不确定性。这种流量的不确定性,为实现对等网络的流量识别带来了诸
多困难。
  (2)海量性
  对等网络不仅应用多种多样,而且规模极大(如文件共享式p2p系统bittortent总同时在线节点可高达100万),因此一般来说,对等网络流量均较大。对等网络流量的海量性,给流量的实时检测带来了性能问题。
  (3)加密性
  由于对等网络属于应用层,因此为了躲避内容监管,现有p2p系统均对其载荷进行了加密处理。加密特性使得常规的模式识别算法很难直接应用于对等网络中。因此,必须寻求新的流量检测技术与检测方法才能解决p2p流量识别的准确性和可靠性问题。
  上述特殊性使得对对等网络的流量进行正确、高效和实时识别带来了很多困难。从技术层面来看,现有p2p流量检测技术大致可分为基于流量特征的识别方法(tli)和基于深层数据包识别方法(dpi)。此外,网络设备提供商和安全产品提供商也开展了p2p流量识别与监管的研发工作。
  2基于流量特征的p2p流量识别技术
  在p2p系统中,每个节点既是客户机也是服务器,这种节点充当双重角的特点,也使得p2
p应用在传输层表现出与其他网络应用(如http、Ftp、dns、email等)不同的流量特征。因此,基于流量特征的p2p流量检测方法的基本思想是:通过对传输层数据包(包括tcp和udp数据包)进行分析,并结合p2p系统所表现出来的流量特征,来识别某个网络流是否属于p2p。这类方法包括:tcp/udp端口识别技术、网络直径分析技术、节点角分析技术、协议对分析技术和地址端口对分析技术等。
  传输控制协议/数据报协议(tcp/udp)端口识别技术利用第一代p2p系统多采用固定的服务端
  口的特点来识别p2p系统。例如,文献[5]第一次提出了p2p流量识别问题,并利用端口识别技术,对Fast-track、gnutella和direct-connect3种具有代表性的p2p系统的流量特征进行了分析。现有p2p系统所采用的常用服务端口如表1所示。由于许多p2p应用为了躲避流量审计与过滤,往往采用随机端口技术,因此tcp/udp端口识别技术存在严重的漏报问题。
  网络直径分析技术利用了p2p系统所组成的逻辑网络具有网络直径大这一特点。在p2p系统中,节点之间需要建立连接。与物理连接不同,p2p系统中的连接是逻辑连接,因此所形成的p2p网络属于逻辑网络。文献[6]通过记录网络中每个节点与其他节点建立连接的情况而得到p2p系统的逻辑连接拓扑图,并计算其网络直径。文献[6]的研究结果表明,与他网络应用所形成的逻辑网络相比,p2p系统所形成的逻辑网络具有更大的直径。因此,如果网络直径
超过某个门限值,则该网络中的节点就是p2p节点,相应的流量就是p2p流量。由于网络直径的计算需要记录整个网络的连接状态,因此不仅存储和计算开销大,而且也不支持p2p流量的实时识别与过滤。
  节点角分析技术利用了p2p系统中每个节点具有多重角的特点。p2p系统中的每个节点,既是客户机,也是服务器。因此,如果可以判断某个逻辑网络中具有这种双重角的节点数,就可以确定该网络是否为p2p网络。例如,文献[6]通过记录并计算网络中同时充当客户机和服务器两个角的节点数,发现如果该数超过某个门限值,则这些节点所形成的网络就是p2p网络,而该网络中的节点就是p2p节点,相应的流量也既是p2p流量。与网络直径分析一样,节点角分析技术也需要记录整个网络的连接状态,因此同样面临存储与计算开销大、无法供p2p流量的实时识别与过滤功能等问题。
  协议对分析技术利用了p2p系统可能同时使用tcp和udp协议的特点。实际分析结果表明,p2p系统一般采用udp来发送命令等控制信息,而采用tcp协议来传输数据。在一般的应用中,通常一个应用极少出现同时使用udp协议和tcp协议的情况。因此,可以利用p2p系统的这个特征来识别p2p流量。例如,文献[7]所采用的协议对分析技术中,通过判断在时间t内,某个“源-目的ip地址对”之间,是否同时使用了tcp和udp协议。如果是,则这两个节点之间
的流量就有可能是p2p流量;反之,则可能不是p2p流量。由于域名服务器(dns)等应用也会同时使用tcp协议和udp协议,因此协议对技术存在严重的误报问题。
  地址端口对分析技术也是利用了p2p系统中节点角多样性的特点。地址端口对技术[7]的依据是,在p2p系统中,每个节点既是客户机,也是服务器。为了能够接受其他节点建立连接的请求,每个节点都需要广播自己的ip地址和提供服务的端口(记为{目的ip,目的端口},简称目的地址端口对)。而为了与其他节点建立连接,每个节点随机选择一个源端口,使用自己的ip地址(记为{源ip,源端口},简称源地址端口对),并利用其他节点所广播的ip地址和端口对信息来建立连接。由于每个节点与另外一个节点建立连接时,不论是源节点还是目的节点,都使用随机源端口技术,因此对于广播了目的地址断口对的节点a来说,与自己建立了连接的源ip地址数和源端口数应大致相同。相反,其他应用(如http)往往需要建立多个连接来传送数据,因此来自于同一个源ip的节点可能采用不同的源端口,与web服务器建立多条连接,其源ip数与源端口数往往不同。为此,在单位时间t内,如果网络流的源ip数与源端口数相同,则该流量可能就是p2p流量。地址端口对具有性能高的优点,但是缺乏实时识别与过滤的能力。
  除了上述有关p2p流量检测技术外,还有以下基于流量特征的p2p流量检测技术。文献[8]通
过两种方法来识别bittorrent流量:
  (1)许多节点向同一个节点发送大量数据且在目的节点出现握手数据包。
  (2)某个节点广播大量udp数据包,并随之发送了大量握手数据包。
  文献[9]利用p2p系统的连接错误率等tcp流的特征来识别p2p流量。文献[10]结合skype具有“中继”的特性,通过考察p2p流量的如下特征参数来识别网络流是否为p2p:开始时间差、结束时间差、流的速率、两个流的时间相关系数。通过实验分析,文献[10]证明具有中继特性的skype流量具有如下特征:开始时间差一般小于5秒、结束时间差一般小于5秒、进入流的比特率与出来流的比特率大小基本相等、两个p2p流的时间相关系数不小于0.37。因此,可以利用这4个特征参数,来识别具有中继特征的skype及其他p2p流量。
  3基于应用层数据检测的p2p流量识别技术
  基于应用层数据检测的p2p流量识别技术是通过协议分析与还原技术,提取p2p应用层数据(即p2p载荷),通过分析p2p载荷所包含的协议特征值,来判断是否属于p2p应用。因此,这类方法也叫做深层数据包检测技术(dpi)。在深层数据包检测技术中,通过对具体的p2p协议及其对应的p2p系统的载荷进行特征提取,建立特征库。对于流经的实时网络流,采用模式匹配算法,判断其中是否包含特征库中的特征串。如果特征匹配成功,该网络流就是p2p数
据。
  文献[11-15]都采用了dpi的p2p流量识别技术。文献[11]对gnutella、edonkey、direbtconnect、bittorrent以及kazaa的协议特征进行了分析,并据此对应用层数据进行分析来识别是否是p2p流量。文献[12]利用应用层数据分析技术,对多媒体流量进行了识别分析。
  此外,也有少量文献探讨了结合基于流量特征方法和基于应用层数据的检测技术。相关文献参见文献[13]和文献[14]。文献[13]对比了3种p2p流量识别技术:端口分析技术、应用层签名、传输层分析。文献[14]引入诱饵节点,并结合应用层签名分析技术对日本流行的p2p系统winny的流量进行了分析。
  4两种p2p流量识别技术的优缺点及比较分析
  基于流量特征的检测技术的优点包括可扩展性好、性能高和可识别加密数据流。
  可扩展性好是指该方法利用了p2p应用所具有普适性流量特征,不仅可以发现已有的p2p流量,也可以识别新的、符合普适性流量特征的p2p流量。
  性能高是由于不需要对协议进行解析和还原,且也不需要对p2p应用载荷进行分析,因此计算开销和存储开销小,识别算法性能高。可识别加密p2p流量是由于基于流量特征的检测技术不依赖具体的p2p应用载荷,因此,数据是否加密对检测算法没有影响。
  但是,基于流量特征的p2p流量识别技术也具有很多不足,其主要缺点包括:准确性差、健壮性差、缺乏流量分类功能等。有两个因素决定了基于流量特征的p2p流量识别技术存在准确性差的缺点。第一个因素是p2p流量特征不一定唯一:很多流量特征都不是p2p流量唯一的,其他应用也有可能表现出这种流量特征来。因此,该方法存在误判问题,即将不是p2p流量的网络流,误认为是p2p流量。第二个因素是网络环境复杂。例如,由于不对称路由和丢包、重传现象的存在,导致无法精确确定流量特征,从而有可能对p2p流量检测的精确度造成影响。健壮性差是指由于不能处理数据包丢失、重组等,因此不能适应复杂的p2p应用。缺乏分类功能是指由于传输层流量特征一般不能明确指示应用层协议类型,所以这种方法对p2p应用分类的能力较弱,而对p2p应用进行细分类,对于执行p2p流量监管措施(如禁封、限速、提供服务质量qos等)非常重要。
  深层数据包检测技术易于理解、升级方便、维护简单,是目前运用最普遍的p2p流量识别方法。其主要优点包括:准确性高、健壮性好、具有分类功能等。准确性高是由于该方法执行精确特征匹配,因此极少存在误判问题。健壮性好是由于可以处理数据包丢失、重组等,因此能适应复杂的p2p应用。具有分类功能是由于深层数据包检测技术可以依据不同p2p应用的载荷特征来准确分类p2p应用,因此可以为实施p2p流量监管策略提供准确的信息。
  但是,深层数据包检测技术的缺点包括可扩展性差、缺乏加密数据分析功能、性能低等。可扩展性差是由于该方法对新p2p应用的流量识别具有滞后性,即在未升级特征库前无法检测新的p2p应用,必须到新应用的载荷特征后,才能对该应用实施有效检测。缺乏加密数据分析功能是由于p2p载荷加密,隐藏了p2p应用的协议和数据特征,因此深层数据包检测技术对加密p2p应用的检测能力非常有限。性能低是由于需要完成协议解析还原和特征匹配等操作,因此计算和存储开销大,流量检测算法性能低。载荷特征越复杂,检测代价越高,算法性能也越差。各种p2p流量识别算法的比较如表2所示,其中,基于流量特征的p2p流量识别技术包括端口分析、网络直径分析、节点角分析、协议对分析和地址端口对分析等。
  5结束语
 

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。