摘要 P2P模型是一种基于互联网环境的新的应用型技术,可以充分利用大量自治的参与者的资源,主要为软件技术。该文首先对比了传统的客户/服务器模型与P2P网络模型的基本特性,然后阐述了典型的四种P2P模型的技术特点,接着探讨了P2P模型的关键技术,最后分析了P2P模型存在的问题,展望了P2P的应用前景。关键词 P2P;客户/服务器;网络模型1 引言今日的Internet正面临着一场革命。这场革命试图改变当前以客户/服务器为基本特性之一的互联网架构,结束以服务器为主导的Internet,这就是P2P。P2P,即Peer to Peer,称为对等连接或对等网络,主要指由硬件形成连接后的信息控制技术。P2P让人们通过互联网直接交互,使得网络上的沟通变得容易、更直接共享和交互,真正地消除中间商。2 从客户/服务器模型到P2PP2P是一个网络的模型,它的基本概念就是任何的节点都可以作为服务器或者客户端。传统的客户/服务器网络,都有预定义的客户和服务器节点,而P2P则不同,P2P可提供一些额外的特性,而这些特性使用传统的客户/服务器模型是无法实现的。基于P2P的模型与客户/服务器(C/S)模型相比,其优势在于降低了对服务器的依赖和它的分散控制能力(相对于服务器的集中控制)。一些P2P模型甚至不需要服务器,用户可以不经过服务器和其他用户进行连接。在传统的结构下必须使用传统的规则,用户在P2P模型下比传统的客户/服务器结构有更多的命令。P2P系统和C/S系统不同,它没有单一的失败点。在一些模型中,P2P把服务器放到合适的位置,服务器的作用被限制到最小。为了共享文件,用户不需要服务器的帮助,他们之间可以直接进行。P2P的另一个重要特点是改变互联网现在的以大网站为中心的状态、重返“非中心化”,并把权力交还给用户。从网络看,P2P并不是新概念,P2P是互联网整体架构的基础。互联网最基本的协议TCP/IP并没有客户机和服务器的概念,所有的设备都是通讯的平等的一端。在十年之前,所有的互联网上的系统都同时具有服务器和客户机的功能。当然,后来发展的那些架构在TCP/IP之上的软件的确采用了客户机/服务器的结构。在20世纪90年代,客户/服务器计算体系极为流行,它之所以流行时因为它打破了世界上一些数据提供者的垄断。同时,它也鼓励资源共享并为它的用户提供不同的防火墙。但是1999年Napster对C/S体系提出了挑战,它是基于P2P的应用,延伸了共享的意义,超出了C/S创建者的想象。通过MP3文件的共享系统,Napster使得网络在深度和广度上又向前迈进了一步,并获得更大的可伸缩性而进行优化。P2P和C/S模型各有千秋。例如,在C/S模型中,当许多的用户登陆来下载信息时,服务器就成了瓶颈;P2P模型与之相反,在网络用户之间传送太多的请求会使网络管理员繁忙,并使网络本身的负载增加。除此之外,在商业的管理和控制方面,P2P模型明显优于C/S模型。关于P2P的流行和使用,许多商业机构正在各自的领域内寻求合作。P2P的另一个优点就是公司可以建立集体的计算能力,因此不必考虑服务器和昂贵的存储设备。P2P已经在共享资源和服务器的开销方面对网络界产生了巨大反响。与C/S模型相比,P2P是更好的选择,它正在变得更灵活,更通用。3 P2P网络模型分析P2P网络模型可以分为以下几种类型:(1)纯P2P模型;(2)带有简单的发现服务器的P2P模型;(3)带有发现和查找服务器的P2P模型;(4)带有发现,查找和内容服务器的P2P模型。3.1 纯P2P模型纯P2P模型完全依赖于计算机(C/S模型中的客户)。这似乎是矛盾的,因为每个网络模型都像传统的C/S模型一样涉及到客户和服务器。但是纯的P2P模型不依赖任何中心服务器而工作。一旦P2P应用程序下载到计算机的内存中,网络中的端就会动态地发现其他连接的端,相连端之间的通信完全不需要来自服务器的任何帮助(见图1)。图1 纯P2P模型纯P2P模型打破了C/S模型传统的通信方式,在以前的C/S模型下,客户和服务器之间的通信是基于服务器设定的规则。纯P2P模型允许用户设定他们自己的规则和建立自己的网络环境,这种模型避免了用户成为利用Internet服务器或ISP的一部分,完全消除了他们的麻烦。为了与Internet合作,P2P模型提供了近似的即插即用的特性,即你只要连上Internet,就能使用P2P的特性。纯P2P模型的另一个优点就是它不仅能够在Internet下有效地工作,而且对于LAN和Intranet也非常有用。纯P2P模型存在的唯一问题就是网络上的端发现问题,因为没有一个中心管理者注册登陆到网络上的端,所以用户自己必须定位其他的端。3.2带有一个简单的发现服务器的P2P模型这样的P2P模型实际上不包括一个服务器。因为这种模型中的服务器的作用已经下降,只是为了实现一些管理。正在加入的端通知服务器它已经登陆了,服务器的作用只限于为正在加入的端提供连接的另一个端的名字。一定要注意服务器仅仅是提供相连端的清单来辅助端,建立连接和通信仍然是端之间的事情(见图2)。这样的P2P模型通过提供给端一系列已经相连端的清单而超出纯P2P模型,这样增加了发现网络上大量端的机会。为了下载资源,端必须单独与每个相连端接触并发出请求,这样会消耗大量的处理时间。客户/服务器的模型与此相反,任何端查找资源不需要围绕其他相连的端,因为服务器本身维护了所有必须的内容。3.3带有发现和查找服务器的P2P模型这种模型中,服务器提供相连端的清单和它们的可用资源(见图2)。因此,这种模型为增强服务器的功能而继承了纯P2P和带有简单发现服务器的P2P两者的特性。这种模型减轻了端的负担,因为不再需要通过访问每个端来查找必要的信息。这种模型中的服务器初始化两个端的通信,然后,这两个相连的端建立通信,保持连接并执行各种活动,例如登陆进入相连的信息数据库,进入它们共享的资源目录等等。
图2 带有一个简单的发现服务器的P2P3.4带有发现,查找和内容服务器的P2P模型这种模型中,服务器占有支配地位,正如在传统的客户/服务器体系中一样。所有满足端请求的部分都从端的范围内移出而进入服务器的范围(见图3)。同样,端之间不允许直接互相连接,因为所有的资源都存储在中心服务器的数据库中。如果一个端需要信息,它直接访问服务器而不是和另外的端通信,服务器处理这些请求并显示信息来源。这种模型主要的缺点在于如果同时有太多的请求,服务器的速度会减慢;这种模型的另一个缺点就是成本很高,因为服务器必须自己管理、存储数据并处理所有的请求。因为这样的模型完全依赖于中心服务器,所以单点失败影响整个系统的机会就增加了。这和前面几个P2P模型的情况不同。图3 带有发现、查找和内容服务器的P2P 4 P2P网络模型的关键技术4.1 P2P网络模型的运行特性P2P是一种基于互联网环境的新的应用型技术,主要为软件技术。(1)对于互联网上众多计算机,P2P应用比其他应用要更多考虑那些低端PC的互联,它们不具备服务器那样强的联网能力,同时对于以往的P2P应用技术,现在的硬件环境已经更为复杂,这样在通信基础方面,P2P必须提供在现有硬件逻辑和底层通信协议上的端到端定位(寻址)和握手技术,建立稳定的连接。涉及的技术有IP地址解析、NAT路由及防火墙。(2) 在应用层面上,如果两个Peer分别代表两家不同的公司,而且它们已经通过互联网建立连接,那么一方的信息就必须为另一方所识别,所以当前互联网上关于数据描述和交换的协议,如XML、SOAP、UDDI等都是一个完善的P2P软件所要考虑的。(3)有通信就要有安全保障,加密技术是必须要考虑的。(4)其他需考虑的有如何设置中心服务器,如何控制网络规模等。传统客户/服务器的应用程序能够以前面所讲过的任何模型为基础,但是一个应用程序要成为理想的P2P应用程序必须具有一些条件。每种P2P模型的应用程序都有一些关键特性:(1)发现其他端:发现与服务器相连的其他端;(2)为所需内容查询端:从其他端得到共享资源的清单;(3)和其他端共享内容/资源:能明白内容是怎样在对等网络之间共享的。4.2 P2P网络模型中的端发现技术发现其他端是P2P应用的一个基本特征,这个特征根据P2P模型的不同而不同。(1)在纯P2P模型中发现其他端因为这个模型没有服务器,端动态发现其他端并在它们之间直接通信。因此,这种通信不受传统模型中的条款和规则限制。虽然本地配置方案和网络信息服务是可用的。但是登陆到模型上的用户不可能一直拥有可以发送请求的真实端数目;另外,端之间的直接通信会影响系统的安全性。(2)在带有一个简单发现服务器的P2P模型中发现端这种模型带有一个中心服务器,这个服务器在数据库中存储了所有注册用户的位置。任何搜索一个端的请求都由服务器来处理,它会返回一个数据库中端的清单。这种模型的主要好处是增强了安全性并对于请求端来说由大量的端可以用,但是如果服务器速度减慢或者崩溃,定位端就会很困难,其他的端也会受到影响。(3)在带有发现和查找服务器的P2P模型中发现端在这种模型中,服务器提供了服务的清单和端的清单,所有的用户在登陆时都要通知服务器。这种服务器不仅发现其他端而且返回所有登陆的重要信息。以此,这种模型相比其他的模型减少了时间耗费。(4)在带有发现,查找和内容服务器的P2P模型中发现端这种模型为响应请求而发现端,在这种情况下中心服务器保留所有重要信息和请求端具有的内容。每个端都在服务器时注册,服务器通过它自己和服务器响应来处理所有请求,因此这种模型对服务器的要求比较高。4.3 P2P网络模型中的搜索技术在P2P模型中,内容搜索根据模型的应用保持变化。一些P2P结构的模型遵循客户端的搜索,有些遵循服务器端的搜索,有些遵循以上两种情况。搜索工具一直在速度快与可靠性的优点和不相关与不可靠信息的缺点之间寻求平衡。有利的条件是速度、直接通信和可靠性,不利的条件是不可靠和费应用信息。下面是不同P2P模型中的搜索技术: (1)在纯P2P模型中搜索内容因为这种模型没有服务器协助通讯,它使用客户端的搜索模型。如果请求端有关于另外端定位的信息,处理会非常的快速。但是由于没有服务器可能会导致缺少可以连接的端,导致搜索的端的范围较小。(2)在带有一个简单发现服务器的P2P模型中搜索内容这种模型有一个服务器,但是它同样使用客户端的搜索技术。服务器提出请求端连接用户的一个清单,请求端查找拥有所需内容的端,连接它并获取内容。这种模型的好处在于它提供了可以连接获取所需内容的大量端。(3)在带有发现服务器和查找服务器的P2P模型中搜索内容这种模型遵循客户端的搜索和服务器端的搜索。在所有的P2P模型中,这种模型是最有效和最灵活的。一个端无论何时要搜索一些特殊的内容,它都可以直接在服务器是对已经相连的端进行搜索,或者简单的请求服务器对所需信息的结果进行回答。这种模型除了网络上相连的端外,还有可服务于请求端,服务器上搜索工具可用是因为无论何时一个注册端登陆后,除了验证外,还将发送它的名字和共享的资源清单。(4)在带有发现、查找和内容服务器的P2P模型中查找内容这种模型不能使用客户端的搜索技术,因为位于中心的服务器管理整个网络,服务器处理所有的操作。这种模型完全基于服务器的搜索技术,一个端无论何时需要信息,它只需连接服务器,因为服务器数据库中有完整的信息:从注册用户到所有可能的内容。但是如果太多的端访问服务器,服务器的处理速度就会下降,也会影响到其他相关服务器。4.4 P2P网络模型存在的问题 P2P最大的优点在于能够提供可靠的信息查询,但从社会和法律意义来说,绝大多数的P2P服务都将不可避免地遇到知识产权冲突,也可能成为一些非法内容传播的平台。同时由于缺乏中心监管以及自由平等的动态特性,自组织的P2P网络在技术层面也有许多难以解决的问题。 从某种意义上来说,P2P网络和人际网络具有一定的相似性。一般来说,每个P2P网络都是众多参与者按照共同兴趣组建起来的一个虚拟组织,节点之间存在着一种假定的相互信任关系,但随着P2P网络规模的扩大,这些P2P节点本质所特有的平等自由的动态特性往往与网络服务所需要的信任协作模型之间产生矛盾。激励作用的缺失使节点间更多表现出“贪婪”、“抱怨”和“欺诈”的自私行为,因此P2P中预先假设的信任机制实际上非常脆弱,同时这种信任也难以在节点之间进行推理,导致了全局性信任的缺乏,这直接影响了整个网络的稳定性与可用性。此外,相对于传统客户/服务器模式的服务器可以做主动和被动的防御,由于P2P节点安全防护手段的匮乏以及P2P协议缺乏必要的认证机制和计算机操作系统的安全漏洞,安全问题在P2P网络中更为严重,这将直接影响P2P的大规模商用。另外,P2P网络中的节点本身往往是计算能力相差较大的异构节点,每一个节点都被赋予了相同的职责而没有考虑其计算能力和网络带宽,局部性能较差的点将会导致整体网络性能的恶化,在这种异构节点的环境中难以实现优化的资源管理和负载平衡。同时,由于用户加入离开P2P网络的随意性使得用户获得目标文件具有不确定性,导致许多并非必要的文件下载,而造成大量带宽资源的滥用。特别是大多数P2P用户更喜欢传送音频、视频这些较大的媒体文件,这将使得带宽浪费问题更为突出,尤其在中国大量的用户还是拨号用户,较窄的带宽也成为P2P应用难以逾越的障碍。5 结论与展望P2P技术在最近几年获得了高速的发展,也出现了较多应用,但截至目前,P2P中仍有很多的关键技术问题并没有得到解决,其中最典型的就是带宽吞噬、网络可扩展性差和路由效率低下等问题。这导致P2P至少在目前的技术水平而言只能是一种小范围不可靠的应用或是满足特定任务需求的专门应用。并且,作为一种潜在的商业应用,如何在P2P网络中有效地保护知识产权以及如何设计盈利模式将会面临更为严格的考验。参考文献:[1] (美)Ian Foster,Carl Kesselman 编著.金海,袁平鹏,石柯 译.网格计算(第二版).北京:电子工业出版社,2004[2] (美)Dreamtech 软件研发组著.吴文辉,陈建荣,肖国尊 等译.对等网络编程源代码解析.北京:电子工业出版社,2002[3] 陈姝,方滨兴,周勇林.p2p技术的研究与应用.计算机工程与应用,2002年13期[4] 毛薇,姚青,李涛.p2p系统发现技术的研究与实现.武汉理工大学学报(交通科学与工程版),2002年06期 [5] 雷葆华,杨明川.p2p技术的组网模式与业务模式探讨.电信技术,2004年11期 [6] 赵恒,陈杰.p2p技术的应用及其研究现状.电信快报,2004年09期