首页 » 技术分享 » P2P协议概述

P2P协议概述

 

本文转自 http://my.oschina.net/u/1188951/blog/172314

绪言

1.1 Peer-to-Peer介绍

定义:1Peer-to-peer 是一类允许一组用户互相连接并直接从用户硬盘上获取文件的网络。

           2Peer-to-peer网络是一个运行于个人电脑上的应用,通过网络在用户间分享文件。P2P网络通过连接个人电脑分享文件而不是通过中央服务器。

           3P2P是一种分布式网络,网络的参与者共享他们所拥有的一部分硬件资源(处理能力、存储能力、网络连接能力、打印机等),这些共享资源需要由网络提供服务和内容,能被其它对等节点(peer)直接访问而无需经过中间实体。在此网络中的参与者既是资源(服务和内容)提供者(server),又是资源(服务和内容)获取者(client)。

 

P2P的特点1)无中央服务器,打破了C/S模式;2)用户之间互联并分享文件。

非中心化(Decentralization

可扩展:全分布系统

健壮性:耐攻击、高容错

高性价比

隐私保护

负载均衡

 

P2P的分类:

提供文件和其他内容共享的P2P网络,如NapsterGnutellaeDonkeyemuleBitTorrent等;

挖掘P2P对等计算能力和存储共享能力,如SETI@homeAvakiPopular Power等;

基于P2P方式的协同处理与服务共享平台,如JXTAMagiGroove.NET My Service等;

即时通讯交流,包括ICQQICQYahoo Messenger等;

安全的P2P通讯与信息共享,如SkypeCrowdsOnion Routing等。

 

1.2 国内外P2P技术研究现状

1.2.1 P2P网络中的拓扑结构研究

拓扑结构指分布式系统中各个计算单元之间的物理或逻辑的互联关系,结点之间的拓扑结构一直是确定系统类型的重要依据。目前互联网中广泛使用集中式、层次式等拓扑结构,Internet本身是世界上最大的非集中式的互联网络,但是九十年代所建立的一些网络应用系统却是完全的集中式的系统、很多Web应用都是运行在集中式的服务器系统上。集中式拓扑结构系统目前面临着过量存储负载、Dos攻击等一些难以解决的问题。

P2P系统一般要构造一个非集中式的拓扑结构,在构造过程中需要解决系统中所包含的大量结点如何命名、组织以及确定结点的加入/离开方式、出错恢复等问题。

根据拓扑结构的关系可以将P2P研究分为四种形式:中心化拓扑Centralized Topology)、全分布式非结构化拓扑Decentralized Unstructured Topology)、全分布式结构化拓扑Decentralized Structured Topology, 也称为DHT网络)、半分布式拓扑Partially Decentralized Topology)。

(1)中心化拓扑最大的优点是维护简单、发现效率高。缺点是与传统C/S结构类似,易造成单点故障。这是第一代P2P网络采用的结构模式,经典案例是著名的MP3共享软件Napster

Napster是最早出现的P2P系统之一,其实质并非纯粹的P2P系统,它通过一个中央服务器保存所有Napster用户上传的音乐文件索引和存放位置的信息。当某个用户需要某个音乐文件时,首先连接到Napster服务器,在服务器进行检索,并由服务器返回存有该文件的用户信息;再由请求者直接连接到文件的所有者传输文件。

Napster首先实现了文件查询与文件传输的分离。有效地节省了中央服务器的带宽消耗,减少了系统的文件传输延时。但是,如果该中央服务器失效,整个系统都会瘫痪。当用户量增加到或者更高时,Napster的系统性能会大大下降。另一个是安全性上的问题,Napster没有提供有效的安全机制。0

Napster模型中,一群高性能的中央服务器保存着网络中所有活动对等计算机共享资源的目录信息。当需要查询某个文件时,对等机会向一台中央服务器发出文件查询请求。中央服务器进行相应的检索和查询后,会返回符合查询要求的对等机地址信息列表。查询发起对等机接收到应答后,会根据网络流量和延迟等信息进行选择,与合适的对等机建立连接,并开始文件传输。如下图1所示。

  图1 Napster模型示意图

 

Step 0:当前活动Peer资源信息存入中央服务器;

Step 1Peer A查询文件file,向中央服务器发送查询请求;

Step 2:中央服务器检测和查询后,返回符合条件的Peer信息列表;

Step 3Peer A接收列表,根据网络流量和延迟信息选择合适节点Peer B,并向Peer B发起连接请求;

Step 4Peer BPeer A建立连接,开始文件传输。

 

Napster模型主要存在的问题为:

(1)中央服务器的瘫痪容易导致整个网络的崩溃,可靠性和安全性较低;

(2)随着网络规模的扩大,对中央索引服务器进行维护和更新的费用将急剧增加,所需成功过高;

(3)中央服务器的存在引起共享资源在版权问题上的纠纷,并因此被攻击为非纯粹意义上的P2P网络模型。对小型网络而言,集中目录式模型在管理和控制方面占一定优势。但鉴于其存在种种缺陷,该模型并不适合大型网络应用。Napster工作原理如图2所示。

 

 

  2 Napster工作原理

 

(2)全分布非结构化(因为此类网络采用了随机图、泛洪等机制,构建的系统没有固定的结构,故称为非结构化)网络在重叠网络(overlay)采用了随机图(随机图的“随机”二字体现在边的分布上。一个随机图实际上是将给定的顶点之间随机地连上边,参考网址:http://blog.csdn.net/foreverdengwei/article/details/7337429)的组织方式,结点度数(权重?)服从“Power-law”规律(幂律分布,例如80/20法则,即20%的人拥有社会80%的财富,是否说在P2P网络中少部分人拥有大部分热点资源),从而能够较快发现目的结点,面对网络的动态变化体现了较好的容错能力,因此具有较好的可用性。同时可以支持复杂查询,如带有规则表达式的多关键词查询,模糊查询等,最典型的案例是Gnutella

Gnutella是一个P2P文件共享系统,它和Napster最大的区别在于Gnutella是纯粹的P2P系统,没有索引服务器,它采用了基于完全随机图的泛洪(Flooding)发现和随机转发(Random Walker)机制。为了控制搜索消息的传输,通过TTLTime To Live)的减值来实现。详情参见[Gnutella 协议中文版]

注,泛洪算法,不要求维护网络的拓扑结构和相关的路由计算,仅要求接收到信息的节点以广播方式转发数据包。例如,源节点希望发送一段数据给目标节点。源节点首先通过网络将数据副本传送给它的每个邻居节点,每个邻居节点再将数据传送给各自的除发送来数据的节点之外的其他节点。如此继续,知道数据传送至目标节点或者数据设定的生存期限(TTL, Time To Live)为0为止。(每个节点都要拷贝,太狠了)

Gnutella分布式对等网络模型N中,每一个联网计算机在功能上都是对等的,既是客户机同时又是服务器,所以被称为对等机(Servent, Server+Client的组合)。

随着网络节点的不断增多,网络规模不断扩大,通过这种泛洪方式定位对等点的方法将造成网络流量急剧增加,从而导致网络中部分低带宽节点因网络资源过载而失效。所以在初期的Gnutella网络中,存在比较严重的分区、断链现象。也就是说,一个查询访问只能在网络的很小一部分进行,因此网络的可扩展性不好。所以,解决Gnutella网络的可扩展性对该网络的进一步发展至关重要。

由于没有确定拓扑结构的支持,非结构化网络无法保证资源查找的效率。即使需要查找的目的结点存在查找也有可能失败。由于采用TTL、泛洪、随机漫步或者选择转发算法,因此直径不可控,可扩展性较差。

查找的准确性和可扩展性是非结构化网络面临的两个重要问题。目前对此类结构的研究主要集中于改进查找算法和复制策略以提高查找的准确率和性能。

非结构化网络主要存在的问题:

1)将重叠网络认为是一个完全随机图,结点之间的链路没有遵循某些预先定义的拓扑来构建;

2)系统一般不提供性能保证,但容错性好,支持复杂的查询,并受结点频繁加入和退出系统的影响小;

3)查询的结果可能不全,查询速度较慢;

4)采用广播查询的系统对网络带宽的消耗非常大,并由此带来可扩展性差等问题。

 

(3)全分布式结构化拓扑网络。目前研究的重点放在了如何有效地查找信息上,最新的成果都是基于DHT的分布式查找和路由算法。这些算法都避免了类似Napster的中央服务器,也不像Gnutella那样基于广播进行查找,而是通过分布式散列函数,将输入的关键字惟一映射到某个结点上,然后通过某些路由算法同该结点建立连接。

分布式散列表(DHT)实际上是一个由广域范围大量结点共同维护的巨大散列表。散列表被分割成不连续的块,每个结点被分配给一个属于自己的散列块,并成为这个散列块的管理者DHT的节点既是动态的,结点数量也是巨大的,因此非中心化和原子自组织成为两个设计的重要目标。通过加密散列函数,一个对象的名字或关键词被映射为128位或160位的散列值。一个采用DHT的系统内所有结点被映射到一个空间L=[0, 1),如果散列函数映射一个h位的名字到一个散列值H(是什么?),则有

DHT类结构能够自适应结点的动态加入/退出,有着良好的可扩展性、鲁棒性、结点ID分配的均匀性和自组织能力。由于重叠网络采用了确定性拓扑结构,DHT可以提供精确的发现。只要目的节点存在于网站中,DHT总能发现它,发现的准确性得到了保证,最经典的案例是TapestryChordCANPastry

DHT类结构特点:

(1)维护机制较为复杂,尤其是节点频繁加入/退出造成的网络波动会极大增加DHT的维护代价。

(2)DHT仅支持精确关键词匹配查找,无法支持内容/语义等复杂查询。


全分布式结构拓扑-DHT


(4)半分布式结构吸取了中心化结构和全分布式非结构化拓扑的优点,选择性能较高(处理、存储、带宽等方面性能)的节点作为超级节点(SuperNodes, Hubs,如何选择超级节点?),在各个超级点上存储了系统中其他部分节点的信息,发现算法仅在超级节点之间转发,超级点再将查询请求转发给适当的叶子节点。半分布式结构也是一个层次式结构,超级点之间构成一个高速转发层,超级点和所负责的普通节点构成若干层次。最典型的的案例是KaZaa

KaZaa是现在全世界流行的几款P2P软件之一。它结合了NapsterGnutella共同的优点。从结构上来说,它使用了Gnutella的全分布式的结构,这样可以使系统更好地扩展,因为它无需中央索引服务器存储文件名,它是自动地把性能好的机器分为SupserNodeSupserNode存储着离它最近的叶子节点的文件信息,这些SuperNode再联通起来形成一个Overlay Network。由于SupserNode的索引功能,使搜索效率大大提高。

 

  图半分布式结构

 

半分布式结构的特点是:

(1)性能、可扩展性较好;

(2)较容易管理,对超级节点依赖性大,易于受到攻击;

(3)容错性易受影响。

 

       表四种结构的性能比较

比较标准/拓扑结构

中心化拓扑

全分布式非结构化拓扑

全分布式结构化拓扑

半分布式拓扑

可扩展性

可靠性

可维护性

最好

最好

发现算法效率

最高

复杂查询

支持

支持

不支持

支持

 

1.2.2 国内的P2P研究现状

学术结构研发

北京大学-Maze

Maze是北京大学网络实验室开发的一个中心控制与对等连接相融合的对等计算文件共享系统,在结构上类似Napster,对等计算搜索方法类似于Gnutella。网络上的一台计算机,不论是在内网还是外网,可以通过安装运行Maze的客户端软件自由加入和退出Maze系统。每个节点可以将自己的一个或多个目录下的文件共享给系统的其他成员,也可以分享其他成员的资源。Maze支持基于关键字的资源检索,也可以通过友好关系直接获得。

 

清华大学-Granary

Granry是清华大学自主开发的对等计算存储服务系统。它以对象格式存储数据。另外,Granary设计了专门的结点信息收集算法PeerWindow的结构化覆盖网络路由协议Tourist

 

华中科技大学-AnySee

AnySee是华中科大设计研发的视频直播系统。它采用了一对多的服务模式,支持部分NAT和防火墙的穿越,提高了视频直播系统的可扩展性;同时,它利用近播原则、分域调度的思想,使用Landmark路标算法直接建树的方式构建应用层上的组播树,克服了ESM等一对多模式系统由联接图的构造和维护代来的负载影响。

 

企业研发产品

广州数联软件技术有限公司-Poco

POCO是中国最大的P2P用户分享平台,是有安全、流量控制里的,无中心服务器的第三代P2P资源交换平台,也是世界范围内少有的盈利的P2P平台。目前已经形成了2600万海量用户,平均在线58.5万,在线峰值突破71万,并且完全是带宽用户的用户群。

 

深圳市点石软件有限公司-OP

OP又称为Openext Media Desktop,一个网络娱乐内容平台,Napster的后继者,它可以最直接的方式找到您想要的音乐、影视、软件、游戏、突破、书籍以及各种文档,随时在线共享文件容量数以亿计“十万影视、百万音乐、千万图片”。

 

基于P2P的在线电视直播-PPLive

PPLive是一款用于互联网上大规模视频直播的共享软件。它使用网状模型,有效解决了当前网络视频点播服务带宽和负载有限问题,实现用户越多,播放越流畅的特性,整体服务质量大大提高。

 

1.2.3 P2P技术的应用研究

国外开展P2P研究的学术团体主要包括P2P工作组(P2PWG)、全球网格论坛(Global Grid Forum, GGF)。P2P工作组成立的主要目的是希望加速P2P计算基础设施的建立和相应的标准化工作。P2PWG成立之后,对P2P计算中的术语进行了统一,也形成相关的草案,但是在标准化工作方面进展缓慢。目前P2PWG已经和GGF合并,由该论坛管理P2P计算的相关工作。GGF负责网格计算和P2P计算等相关的标准化工作。

从国外公司对P2P计算的支持力度来看,Microsoft公司、Sun公司和Intel公司投入较大。Microsoft公司成立了Pastry项目组,主要负责P2P计算技术的研究和开发工作。目前Microsoft公司已经发布了基于Pastry的软件包SimPastry/VisPastryRice大学也在Pastry的基础上发布了FreePastry软件包。

20008月,Intel公司宣布成立P2P工作组,正式开展P2P的研究。工作组成立以后,积极与应用开发商合作,开发P2P应用平台。2002Intel发布了.NET基础架构之上的Accelerator KitP2P加速工具包)和P2P安全API软件包,从而使得微软.NET开发人员能够迅速地建立P2P安全Web应用程序。

Sun公司以JAVA技术为背景,开展了JXTA项目。JXTA是基于JAVA的开源P2P平台,任何个人和组织均可以加入该项目。因此,该项目不仅吸引了大批P2P研究人员和开发人员,而且已经发布了基于JXTA的即时聊天软件包。JXTA定义了一组核心业务:认证、资源发现和管理。在安全方面,JXTA加入了加密软件包,允许使用该加密软件包进行数据加密,从而保证消息的隐私、可认证性和完整性。在JXTA核心之上,还定义了包括内容管理、信息搜索以及服务管理之内的各种其他可选JXTA服务。在核心服务和可选服务基础上,用户可以开发各种JXTA平台上的P2P应用

 

P2P实际的应用主要体现的以下几个方面:

P2P分布式存储:P2P分布式存储系统是一个用于对等网络的数据存储系统,它可以提供高效率的、鲁棒的和负载平衡的文件存取功能。这些研究包括:OseanStoreFarisite等。其中,基于超级节点结构的半分布式P2P应用如KazzaEdonkeyMorpheusBitTorrent等也是属于分布式存储的范畴,并且用户数量急剧增加。

计算能力的共享:加入对等网络的节点除了可以共享存储能力之外,还可以共享CPU处理能力。目前已经有了一些基于对等网络的计算能力共享系统。比如SETI@home。目前SETI@home采用的仍然是类似于Napster的集中式目录策略。

P2P应用层组播:应用层组播,就是在应用层实现组播功能而不需要网络层的支持。这样就可以避免出现网络层迟迟不能部署对组播的支持而使组播应用难以进行的情况。应用层组播需要在参加的应用节点之间实现一个可扩展的,支持容错能力的重叠网络,而基于DHT的发现机制正好为应用层组播的实现提供了良好的基础平台。

转载自原文链接, 如需删除请联系管理员。

原文链接:P2P协议概述,转载请注明来源!

0