P2P技术综合

  • 格式:doc
  • 大小:181.00 KB
  • 文档页数:8

P2P技术综合1 引言P2P是英文Peer-to-Peer(对等)的简称,又被称为“点对点”。

“对等”技术,是一种网络新技术,依赖网络中参与者的计算能力和带宽,而不是把依赖都聚集在较少的几台服务器上。

P2P还是英文Point to Point (点对点)的简称。

它是下载术语,意思是在你自己下载的同时,自己的电脑还要继续做主机上传,这种下载方式,人越多速度越快但缺点是对硬盘损伤比较大(在写的同时还要读),还有对内存占用较多,影响整机速度。

P2P(Peer-to-Peer)并非一种全新的技术,互联网最基本的协议TCP/IP并没有客户机和服务器的概念,所有的设备都是通讯的平等的一端。

2O多年前出现的USENET、FidoNet 以及局域网中的文件共享都是P2P系统。

由于受早期计算机性能、资源等因素的限制,随着互联网规模的迅速扩大,大多数连接到互联网上的普通用户并没有能力提供网络服务,从而逐步形成了以少数服务器为中心的客户机/服务器(Client/Server)模式。

但是,随着互联网跟人们生活的联系日益紧密和深入,人们需要更直接、更广泛的信息交流,而计算机和网络性能的提升也促进了P2P的发展。

2 p2p网络的分类2.1:按照网络结构分类根据是否有中央服务器,可将P2P网络分为混合式、分散式和有超级节点的P2P网络。

混合式P2P网络的中央服务器只是索引服务器,与C/S模式中的服务器不同,P2P网络中的索引服务器只记录内容的索引和节点的必要信息,辅助节点之间建立连接,而内容本身存储在节点中,内容的传送只在节点之间进行,不通过服务器。

如Napster、BT、eDonkey、eMule。

分散式P2P网络没有服务器,通过基于P2P协议的客户端软件搜索网络中存在的对等节点,节点之间可直接建立连接,每个节点都是完全平等的,如Gnutella。

有超级节点的P2P网络中,有着高网速(特别是很高的上行速率)和高性能的计算机被自动设置为超级节点。

超级节点作为其它用户的索引服务器。

随着节点的频繁加入和退出,超级节点有着很大的动态性,如FastTrack。

有中央服务器的P2P网络易于管理、易于发现网络节点、搜索速度较快。

但是,存在单点失效问题,一旦中央服务器出现故障,整个网络将陷于瘫痪。

没有超级节点的分散式P2P网络则没有单点失效问题,任何一个节点退出网络或出现故障,都不会造成显著影响。

但是不易管理,不易发现全部网络节点,搜索相对较慢或者算法较复杂。

有超级节点的P2P网络结合了前两者的优点,但是也有新问题,如怎样管理超级节点。

2.2:按对等节点之间数据传输的方式分类在P2P网络中,对等节点之问的数据传送方式有两种:点对点方式和多点多元方式。

在点对点的传送方式中,内容只在两个节点之间传送,一方发送,另一方接收,如Napster。

多点多元的传送方式多应用在文件共享中,文件内容被分成若干部分,一个文件可以从多个节点下载,同时,已下载的部分也能被其它节点下载。

最后再拼成整个文件,如BT、eDonkey、eMule。

点对点传送方式中,速率受到收发双方链路速率限制,而且,网络中通常是下载节点多,上传节点少。

但是,这种方式中,数据是按顺序传送的,对于某些文件类型,如音频、视频文件,已下载部分都是可用的。

多点多元传送方式中,虽然单个节点的下载速率可能不高,但是,多个节点的下载速率相加就会很高,同一个文件参与共享的节点数越多,下载速率越高。

同时,这种方式更能体现“共享”精神,只要下载,就要向其它节点提供上传。

但是,由于文件是分块传送的,下载未完成时,已下载部分可能完全不可用有时,由于拥有完整文件的节点都退出网络,导致其余正在下载的节点永远无法完成下载,出现“死链”。

2.3:按照内容与网络拓扑结构的关系分类根据网络中存储的内容与网络拓扑结构是否相关。

可将P2P网络分为结构化、非结构化和松散结构化的P2P网络。

在结构化网络中,文件(数据)的位置与网络拓扑紧密相关。

网络的拓扑结构受到严格控制,文件或者指向文件的指针位于指定位置,文件ID与文件存储位置通过分布式路由表进行映射,如CAN、TAPESTRY、CHOI 、PASTRY。

在非结构化网络中,文件的位置与网络拓扑没有关系。

如Napster、eDonkey、BT。

在松散结构化网络中,文件的位置与网络拓扑的关系介于结构化与非结构化之间。

文件的位置受路由表的影响,但不完全确定,如Freenet。

结构化P2P网络中,进行查询时,不需要发送大量查询报文,可扩展性好。

但是,有节点频繁加入和退出时,网络结构难于维护。

非结构化P2P网络中,节点的频繁加入和退出,对网络影响不大。

但是,进行查询时。

需要发送大量查询报文,而且查询结果不一定全面。

松散结构化网络在网络结构的维护和查询性能方面介于前二者之间。

2.4:按照是否匿名分类P2P网络中,对等节点进行通信时,根据节点或链路的部分或全部信息是否被隐藏,可分为匿名和非匿名两种。

根据被隐藏的信息分类,匿名类型有如下几种:①作者匿名:哪个作者创建的哪些文件;②读者匿名:哪个用户读取了哪些文件;③服务器匿名:哪个节点存储一个给定的文件:④文档匿名:哪些文件存储在一个给定的节点;⑤链路匿名:一对对等节点进行通信时用的是哪条链路;一种P2P协议或软件可能只有一种匿名类型。

也可能同时有几种类型,如Waste就对链路进行了加密,只有链路匿名;而Freenet则同时拥有作者匿名和读者匿名两种类型。

在非匿名通信中,节点或链路的所有信息都是公开的。

2.5:按照应用分类目前,已有多种网络服务都采用了P2P技术,主要有如下应用:①即时通讯,两个或多个用户可以用其进行快速、直接的交流,易于同非计算机终端设备进行通信,而且它不依赖设备即可辨别用户,如ICQ、Skype;②文件共享,下载和上传文件不通过中央服务器,或者中央服务器只起辅助作用。

这是目前P2P技术在网络中最广泛的应用,如Napster、BT、eDonkey、国内的P2P软件OpenExt、百度下吧、Reallink等也提供了文件共享功能;③协同工作,使用P2P技术,可以建立一个安全的企业级协同工作平台,提供互动的供求信息,帮助用户进行经销渠道维护、售后服务等,如Groove、国内的KDT;④对等计算,可联接上万台PC。

利用它们的空闲时间进行协同计算,完成超计算量的工作,如Distribute.net、SETI@home;⑤搜索,用来在P2P网中完成信息检索。

一旦形成P2P专用网,其上的数据搜索与现在互联网中数据存在中央服务器的情况有所不同,必须要考虑动态地将当前P2P网络中各个Peer的内容进行收集,并且要有效地向用户传递。

此类应用软件有Infrasearch、Pointera;⑥存储。

用于在网络上将存储对象分散化存放,而不像现在存放于专用服务器。

这样减轻了服务器负担,增加了数据的可靠性和传输速率。

此类应用软件Farsite(Microsoft)、Ocean Store;⑦游戏,许多网络游戏均是P2P方式的,尤其是那些双人及多人对弈的游戏。

3 p2p搜索算法P2P搜索算法即指基于P2P网络结构的搜索方式。

不同的P2P网络结构对应着不同的搜索算法。

简单描述这个过程:每个节点在加入网络的时候,会对存储在本节点上的内容进行索引,以满足本地内容检索的目的。

然后按某种预定的规则选择一些节点作为自己的邻居,加入到P2P网络当中去。

发起者P提出检索请求q,并将q发送给自己的邻居,P的邻居收到q 后,检查本身是否存在查询的信息,如果不存在,转发查询,直到返回结果。

图1网络结构示意简图3.1:结构化p2p网络的搜索算法此处我们要提出一个非常重要的概念:“网络链路长度与度的关系”通过对目前DHT搜索算法的研究,我们发现了衡量搜索算法的两个重要参数,度数(表示节点的邻居关系数)和链路长度(搜索算法的平均路径长度)之间存在渐进曲线的关系,如图所示。

图2 度数和链路长度之间存在的渐进曲线关系从图中可以看出,当一个节点的度数越高(即一个节点的相邻节点越多)时,它的链路长度(即搜索算法平均路径长度)越短。

所以在现实的P2P网络中我们提出了“短链”的概念“短链”即指节点间的链路长度(平均路径长度)很短。

由于现实网络中存在大量高连通结点也就是我们所说的度数很高的节点,所以部分结点之间存在“短链”现象。

基于DHT的P2P系统采用相容散列函数根据精确关键词进行对象的定位与发现。

散列函数总是试图保证生成的散列值均匀随机分布,结果两个内容相似度很高但不完全相同的对象被生成了完全不同的散列值,存放到了完全随机的两个结点上。

因此,DHT可以提供精确匹配查询。

DHT的搜索算法原理如图:图3 DHT搜索算法原理[2]图4 DHT搜索算法[2]以上是基于全分布式结构化拓扑的两种类似的搜索算法。

第一种算法的原理是:资源所对应的散列值被随机存储在节点上,当用户需要搜索某个文件时,请求计算机将该文件名或者关键字所对应的散列值与周围节点的散列值做对比,如果散列值相差较大,则进行较长的链路跳跃,跳跃到离目标文件相对较近的节点,重复这个过程直到找到目标文件,并与对应节点建立连接,进行传输。

第二种算法是第一种的改进,唯一的不同之处在于资源所对应的散列值存储在结点ID 与之相等或者相近的结点上。

需要查找该资源时,采用同样的方法可定位到存储该资源的结点。

所以矛盾是显而易见的,由于DHT的精确关键词映射的特性决定了无法和信息检索等领域的研究成果结合,阻碍了基于DHT的P2P系统的大规模应用。

3.2:非结构化p2p搜索算法按照搜索策略进行分类,可以将P2P搜索算法分为两类。

盲目搜索:在网络中传播查询信息,并把这些信息散播给每一个节点。

启发式搜索:在搜索的过程中利用一些已有的信息来辅助查找过程。

Flooding 搜索方法在最初的Gnutella协议中,使用的是Flooding方法,在网络中,每个节点都不知道其他节点的资源。

当它要寻找某个文件,把这个查询信息传递给它相邻的所有节点,如果相邻节点含有这个资源,就返回一个信息给请求节点。

如果它相邻的节点都没有这个被查询文件,就把这条消息转发给自己的相邻节点。

这种搜索方式就好像洪水一般。

如图所示:搜索的节点一开始TTL=3,它每传播一次TTL减1,如果TTL减到0还没有搜索到资源,则停止。

如果搜索到资源则返回目标机器的信息以用来建立连接。

在搜索过程中可能出现循环,但是由于有TTL控制,所以这个循环不会永远进行下去,当TTL=0的时候自然结束。

图5非结构化P2P搜索算法(1)——Flooding搜索算法●Modified-BFS方法这种方法是在宽度优先方法Flooding上面作了一定修改。

跟Flooding搜索方法不同,搜索源只是随机的选取一定比例的相邻节点作为查询信息的发送目标,而不是发送给所有相邻节点。