P2P软件设计及程序运行分析毕业论文.doc_第1页
P2P软件设计及程序运行分析毕业论文.doc_第2页
P2P软件设计及程序运行分析毕业论文.doc_第3页
P2P软件设计及程序运行分析毕业论文.doc_第4页
P2P软件设计及程序运行分析毕业论文.doc_第5页
已阅读5页,还剩83页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

P2P软件的实现 P2P软件设计及程序运行分析毕业论文目 录第一章 绪论-11.1 P2P发展简史-11.2 P2P应用程序的用武之地 -41.3 P2P技术的动力 -5第二章 P2P体系结构-62.1 P2P网络-72.2 P2P如何形成动态网络-92.3 节点自制-142.4 支持混合模型-15第三章 JXTA技术-203.1 JXTA是什么-203.2 JXTA的概念-223.2.1 Peer(对等机)-223.2.2 Peer Group(对等组)-233.2.3 Endpoint(端点)-233.2.4 Pipe(管道)-243.2.5 Advertisement(广告)-253.2.6 Message(消息)-263.2.7 Rendezvous Peer(集合点)-263.2.8 Router Peer(路由Peer)-283.29 Gateway Peer(网关Peer)-283.3 用于通信的Peer-293.3.1 防火墙-293.3.2 NAT(网络地址转换)-293.3.3 代理服务器-303.3.4 DHCP(动态IP分配)-303.3.5 网络的不稳定-313.3.6 网关问题-313.4 Peer和对等组-323.4.1 Peer和用户的关系-323.4.2 对等组的必要性-323.4.3 JXTA应用程序与对等组-343.4.4 对等组的成员资格-343.4.5 对等组的服务-353.5 广告(Advertisement)-373.5.1 广告的类型-373.5.2 模块(Module)广告-413.5.3 管道广告-513.5.4 端点路由消息-523.5.5 消息(Message)-533.6 JXTA Content Manage Service(CMS)- -543.6.1 CMS概述-543.6.2 CMS简单搜索-55第四章 P2P软件设计-564.1 需求分析-564.2 类设计-564.3 程序运行效果-65第五章 结论-67参考文献-68致谢-69附件-70第一章 绪论最近,P2P(Peer-to-Peer)又成为了因特网上的一个热点。P2P是因特网的一种应用模式,其意思是指网络上的任何设备(包括大型机、PC机、PDA、手机、机顶盒等等)都可以平等地直接进行连接并进行协作。相比当前因特网上主流的应用模式Client/Server或者Client/Service而言,P2P具有自己鲜明的特点和优势。P2P是peer-to-peer的缩写,peer在英语里有(地位、能力等)同等者、同事和伙伴等意义。这样一来,P2P也就可以理解为伙伴对伙伴的意思,或称为对等联网。目前人们认为其在加强网络上人的交流、文件交换、分布计算等方面大有前途。简单的说,P2P直接将人们联系起来,让人们通过互联网直接交互。P2P使得网络上的沟通变得容易、更直接共享和交互,真正地消除中间商。P2P就是人可以直接连接到其他用户的计算机、交换文件,而不是像过去那样连接到服务器去浏览与下载。P2P另一个重要特点是改变互联网现在的以大网站为中心的状态、实现非中心化,并把权力交还给用户。1.1 P2P发展简史P2P并不是一个新的概念,早在1969年因特网的前身ARPANET刚出现的时候,网络的应用模式就是P2P,ARPANET的最初目的是在全美国范围内共享计算机资源,其所面临的挑战是如何集成当时各种不同的网络,使之成为一个通用的网络,并且使得各个主机成为网络上平等的成员。ARPANET是以一种平等的计算Peer的方式把这些计算机系统连接起来,而不是用Master/Slave或者是Client/Server的方式连接。早期的因特网比现在的因特网更加开放和自由,例如在20世纪80年代之前,人们从未听说过防火墙的概念。就通常意义而言,当时的网络上任意两台计算机都可以给对方发送网络包,网络就是人们进行协同研究工作的场所,不需要提防任何东西。后来因特网上出现了FTP和Telnet这样的比较受欢迎的应用程序。虽然它们单个的应用程序都是Client/Server方式的,但是整体上的使用模式却是对称的。网络上的每台主机都可以FTP或者Telnet到其他主机上,同时自己也可充当服务器。DNS是另一个仍在使用的P2P的经典例子,DNS的作用就是把因特网的域名和IP地址进行映射,最早的时候这个映射是保存在一个大文件中的,并在因特网上进行复制。随着因特网规模的增大,必须采用一种方式来进行域名数据的共享。DNS提供了一种实现文件共享的解决方案,采用了层次性的信息归属办法,即我们通常所说的域名层次。DNS之间可以相互交换域名信息,这个时候,每个DNS也可能是服务器(接收其他DNS的请求),也可以是客户端(向其他DNS发出请求)。从1995年开始,随着PC机的广泛使用并接入因特网,成千上万的人挤到因特网上,他们使用因特网的方式是发送电子邮件、浏览网页并在网上购物,这些现象已经长远地影响到了网络架构的发展,也直接影响了P2P应用程序的发展。这种变化改变了人们使用网络的方式,出现了许多新的情况,例如网上协作的崩溃、防火墙的大量使用,产生了许多非对称的网络连接方式,比如说ADSL和Cable Modem。20世界90年代末期,因特网发展的另一个趋势也对P2P应用程序带来新的挑战,那就是非对称网络连接的发展。网络供应商为了得到更高的效率而决定提供非对称的带宽,往往是下行带宽非常大而上行带宽非常小,ADSL和Cable Modem的下行/上行带宽往往相差38倍。这种用法的根源在于Web是因特网的主要应用,绝大部分用户仅仅是Web的客户机,而不是服务器。即使有部分用户想发布自己的网页也不会通过家庭宽带连接的方式来实现,而是通过第三方提供的专用服务器来发布。现在的问题在于P2P应用程序正在改变原有的假设:网络用户仅仅想从因特网下载东西,而不会上载信息。Napster和Gnutella等文件共享应用程序颠倒了带宽的使用方式,使得计算机提供的文件比它下载的文件还要多,要求的上行带宽要比下行带宽大。但是现有的网络架构并不能很好地满足要求,而且更糟糕的是,由于TCP协议对速度的控制,一旦上行通路被堵塞,下行通路也会受影响,所以如果某台计算机正在通过慢速的上行通路给其它计算机提供文件服务的话,那它就不可能同时在快速的下行通路上下载文件。因此P2P应用程序在非对称带宽的网络并不能够很好地运行,一旦P2P程序广泛流传,网络基础架构就应该变得易于处理这种新的网络流量模式。从2000年开始,一个能够在网上进行音乐文件共享的名为Napster的P2P程序在网上广泛流行,吸引了广大网上乐迷的注意力,短时间内就吸引了成千上万的用户,原因在于用户可以下载MP3音乐文件。Napster应用模式与通过FTP下载文件不同,FTP是把所有的文件都集中到服务器上,所有的拥护都到该服务器上下载文件,其缺点是当用户连线众多时会造成服务器工作繁忙、带宽拥挤、下载速度变慢,而且所共享的文件仅仅限于服务器上的文件;而Napster上所有的共享MP3文件都是由用户提供的,种类繁多,而且所有的文件都保存在用户的计算机上,Napster提供了一个服务器来保存所有用户提供的MP3文件的目录以及其计算机的地址,当某个用户需要下载MP3文件时,他通过服务器查询到所需要的MP3文件所在的计算机地址的列表,由于同一个MP3文件在许多不同的计算机上都有副本,该用户只需要从任意一台计算机上下载就可以了。这种用户之间通过P2P的访问来进行文件共享的方式有许多优点,首先是不会有带宽问题,因为大量的文件数据都是通过用户之间的计算机来进行交换的,不存在集中的服务器的带宽拥挤问题;其次是共享的文件内容是无穷无尽的,因为每个用户都可以在自己的计算机上共享个人MP3音乐文件,非常方便,不需要把文件上载到FTP服务器上;再次是不需要一个庞大的服务器,充分利用了资源。因为一般的FTP服务器都需要有很大的硬盘来保存共享的文件,而Napster利用的是用户计算机上闲散的存储资源。Napster也有服务器,但是其巧妙之处在于服务器上只保存共享文件的地址信息,所占用的存储资源相对很少,而把占据大量存储资源的MP3文件保存在用户的计算机上;另一个巧妙之处在于文件的交换是P2P方式的,不需要通过服务器尽心,解决了带宽拥挤的问题。但是,非常不幸的是,由于Napster共享的是MP3音乐文件,虽然其初衷是让音乐发烧友们交换合法的MP3音乐文件,可是这种行为最终触及了音乐唱片公司的利益,世界各大音乐唱片公司联合把Napster告上了法庭,而且由于Napster提供的服务上共享了MP3音乐文件的目录信息,此种情况作为重要论据使Napster在法庭上处于不利地位,导致最后的败诉。终于,风靡一时的Napster就此退出历史舞台,但是其巧妙的P2P应用模式和短时间内急剧增长的用户数量还是给人们留下了深刻的印象,为后续的P2P文件共享应用奠定了基础。与此同时,QICQ和QQ等国内外即时聊天应用也迅速在国内流行起来,个人拥有一个QQ帐户就相当于拥有一个手机号码一样,只要用户在自己的计算机上安装了QQ的客户端软件并进行登陆,就可以与因特网上任何一位安装有QQ客户端软件的拥护进行文字聊天。实际上QQ的实现机制与Napster系统非常类似,用户通过客户端软件把自己的帐号和计算机地址登记到服务器上,并通过服务器查找其他在线的用户帐号和地址,然后直接进行聊天。可以说,即时聊天是一种非常典型的P2P应用,而且在现实中也取得很大的成功,受到全世界许多用户的欢迎。由于文件共享和即时聊天等P2P应用程序的成功,越来越多的程序员在因特网上开发他们的P2P程序,越来越多的用户在使用P2P应用程序。1.2 P2P应用程序的用武之地现在,让我们来考虑一下今天的桌面计算机用户希望使用哪些不同类型的应用程序。除了Web浏览和办公软件外,桌面计算机用户还希望计算机能提供如下功能: 管理和共享信息:这些信息包括用户希望与商业伙伴、朋友和同事共享的所有文件、文档、图片、音频、视频和电影等。通过信息收集和编排功能,更先进的共享机智机制能使一台计算机扮演通用任务管理器的角色比如,G就是分布式任务管理器系统的一个例子,而Gnutella是个人P2P文件共享系统的一个例子。 协作:PC用户发现地址簿、日程安排、聊天和E-mail等软件工具提高了他们的工作效率。通过将桌面工具软件连接在一起使得协同工作的电子商务团体能形成灵活、强大而有效的工作小组,例如JAVA开发人员使用OpenP协同工作。而在更大范围内,成千上万的用户使用实时通信工具,这可能是目前最为流行的P2P应用程序了。 企业资源管理:企业内协同工作流程提高了由连接到网络上的桌面计算机系统所组成的企业网络环境的处理能力。例如,Groove使得一个航空业制造商能将工作订单请求发送到伙伴公司,并将已经完成的请求从一个部门发送到另一个部门。 分布式计算:通过分散化方法实现互联网健壮性理念的一个自然扩展是设计P2P系统,这个系统将计算任务转送到数以百万计的服务器上,而任何一台这样的服务器都可能是一台台式计算机。尽管P2P还处在初始发展阶段,但已经出现了很多能满足用户所有上述功能需求的P2P应用程序。随着人们对P2P技术优越性认识的深入,将来可能会有更多的使用P2P技术开发的应用程序。1.3 P2P技术的动力商业和技术方面的三个主要因素促使人们采用P2P技术。分散化:越来越多的企业已经通过采用灵活的企业结构实现了更高的效率和效益。因此,最近几十年中,企业领导人一直致力于企业的分散化。我们已经经历了从大型主机模型到客户/服务器模型,再到互联网计算模型的变迁,直到今天的P2P模型的变迁。这个发展趋势不可否认地实现了离散化和分布化。费用和效率:软硬件的价格会越来越低,而处理能力却会越来越高。能提高生产效率或软硬件使用率的新系统将成为企业投资的首选。P2P具备充分利用以前未被利用的资源的能力。普及应用的计算:我们可以想象,信息系统在现代社会中无所不在:衣服、工具、汽车和设备,任何你能想象的东西中都存在着计算机芯片。信息系统不仅无所不在,而且它们之间是互连的。网络连接设备的市场一直在持续增长,而P2P系统正是被设计用于支持这个市场的。随着企业逐步推进其电子商务进程,他们会更加深入地认识到连接交易流和通信流的必要性。同样,他们也会认识到为完成常规任务和特定任务而为合作者和外部伙伴建立“电子村落”的必然趋势。电子商务的发展将会造成更多的商业合作需求。P2P技术天生就顺应了建立分布式和特定目的网络的发展趋势。第二章 P2P体系结构使Gnutella和其他P2P应用程序变得有趣的原因是它们能非常容易地将由协同工作的节点组成的大型网络聚集在一起,并且这些节点遍布整个网络。这些节点是普通的PC,它们动态地聚集在一起形成分布式的文件系统。这样形成的网络瞬息万变很多节点位于防火墙和单向NAT(Network Address Translation,网络地址转换)路由器之后;在非工作时间内,这些计算机可能处于关闭状态,并且这些计算机能随意地进入和离开网络。这种性质和网络组织结构是相互矛盾的,它更像我们在企业网上看到的典型的文件系统。在客户/服务器模型中,由服务器控制和管理着客户端与其他资源,比如数据库、文件。网络和其他客户端的关系。在客户/服务器模式的网络中,服务器扮演着“高等公民”的角色。为了管理其“下属”,服务器被赋予了特定的权限和功能。对等节点的概念对我们设计和实现系统的方式产生了巨大的影响。在传统层次化系统中已经解决的问题又被重新 提起,在P2P的世界中,我们开始重新讨论和评价这些问题。如何识别实体和确定实体的位置?谁来控制对资源的访问?尽管在任何环境中,这些问题都难以回答,但至少我们能很容易地理解这些问题。而在P2P系统中,情况并非如此。这是计算技术的新课题。规则未定,我们仍然有机会投身于P2P前沿领域的设计和开发中。P2P技术可能是继Web浏览器之后传递互联网信息的第一次革命。有趣的是单词“peer”的动词形式的意思是“凝视,仔细或困难地看”。当不再才用层次结构关系时,“peer”的这个意思正好可用于描述P2P节点所需的行为。对等节点如何搜索自己的同伴并形成协同工作实体?P2P的第一代应用程度就为解决隐含在这个问题中的困难而费尽周折。结果是这些应用程序暴露出了早期P2P系统的优势和不足。通过研究P2P的早期系统,比如Napster、Gnutella和Freenet,读者可以学到很多东西。这些应用程序显示了P2P系统的共同特征。P2P系统包含了一个动态元件,这个元件能帮助这些应用程序形成和发展组和域。早期的P2P系统使用这个元件的主要目的是检索文件和解决P2P系统中的共同问题。P2P系统需要虚拟域名空间来增强当今的寻址技术。虚拟域名空间提供了一种永久识别节点(或服务)的方法,如果没有这种方法,那么P2P系统是不可能实现节点(或服务)寻址的。以读者的Email地址为例,不管读者使用何种计算机访问E-mail,这个地址都唯一地识别了你的E-mail信箱。就功能性而言,P2P系统中的对等节点被认为是平等的。平等性意味着在网络中不再需要通信中间设备来帮助和参与节点间的通信。如果读者的计算机是连接到互联网上的,那么你的计算机就可以直接连接到P2P系统。对等节点可以出现在网络上的任何地方。对等节点可以是普通PC,也可以是你口袋中的掌上导航助手。如果将之连接到网络上,你就可使之成为对等节点。对等节点不是稳定不变的,它们可以在网络上随意出现或消失。在很多P2P系统中,时断时续的连接是正常状态而不是非正常状态。早期的P2P系统是由拨号用户组成的。这些用户通过拨号方式建立连接,加入网络;然后断开连接并离开网络。对于这样的系统成员,P2P系统中都有一个相应的帐号。对等节点是很广泛的数组处理(计算)能力、带宽资源和存储能力。尽管P2P系统中的节点是对等的,但某些节点在性能上比其他节点更为强大。一台膝上型电脑可通过拨号方式连接到互联网并成为一个对等节点。而一台带光纤通道的Sun Enterprise 10000计算机也可是同一网络中的一个对等节点。从功能上说,这两台计算机是对等的,但它们之间的性能差别却非常之大。P2P系统正在改变我们设计能力充分利用整个网络资源的系统的方式。P2P的这一特性将使我们受益非浅。2.1 P2P网络PeertoPeer网络是一种与传统的Clien/Server或多层服务器网络完全不同的网络体系结构。P2P网络是由Peer组成的,根据JXTA的定义,任何一台能上网的机器都可以是一个Peer,甚至计算机上的一个程序都可以成为Peer。P2P网络中的Peer是彼此直接通信的。这种通信无需依赖集中式服务器或资源就可完成。在P2P网络中,通过Peer之间的交互操作就可以完成工作,共享信息。通过创建有潜力展示非常高的可用性和容错能力的计算资源网络,P2P体系结构使真正的分布式计算成为可能。P2P网络的一个非常重要的特点就是各个Peer彼此之间可以直接通信,至少是可以访问到的。在第一章中我们已经介绍,由于防火墙、NAT和动态IP等原因,在现实的网络中有许多计算机是不能访问的,而在P2P网络中就必须解决这个问题。P2P网络不是推翻现有的网络结构,而是在现有的网络上构建一个符合P2P特点的网络,但是又不限于现有的网络协议。如图2.1所示,中间黑线下面是现有的网络,网络中有许多计算机通过现有的TCP IP协议或者是HTTP协议进行通信;而黑线上面是一个虚拟的JXTA P2P网络,通过把黑线下面现有的网络映射成为 P2P网络。另外,既然是在现有的网络上构建一个P2P网络,就必须考虑到现有网络上存在的多平台、多语言的情况。虽然JXTA的第一个参考实现是基于Java语言的,但是从JXTA自身的设计来看,JXTA程既不特定于Java编程语言,也不特定于 Java平台。换句话说,任何人都可以在任何硬件平台上,用任何操作系统、任何编程语言实现基于JXTA的网络。正因为JXTA的这种平台无关性,它甚至不依赖于 TCPIP(也就不会依赖现有的因特网架构,从而为P2P网络的构造打开方便之门),从而为我们提供了构建P2P体系结构的基础。从图2.l可以看到JXTA并没有依赖于某一种具体的网络和协议,之所以目前的实现采用TCP/IP和HTTP,是为了与目前因特网架构兼容以及能与大多数防火墙协同工作。P2P网络应该具有下列特性。 互操作性:P2P系统应该能够使内部连接很容易地找到彼此,彼此间进行交流,加入基于团体的活动,提供无缝跨越不同P2P系统和不同团体的服务。许多现存的P2P系统仅能提供简单类型的服务,例如:Napster提供音乐文件共享,Gnutella提供通用文件共享,AIM提供即时消息,由于这些服务的不同特性和通用的下层P2P结构的缺乏,每一个软件的零售商提供了互不兼容的系统,它们之间彼此不能相互操作。这意味者每一个零售商都创建了自己的P2P用户团体,更为重要的是,一个Peer如果要加人由不同P2P实现的多种团体,必须支持不同的P2P系统和团体的多种实现。 平台无关性:P2P系统应该设计成独立于编程语言如 C、Java等,独立于系统平台如 Windows和 UNIX,独立于网络平台如 TCP IP和 BLUETOOTH。现在许多P2P系统通过在一定的系统平台上和一定的网络平台上发布一组API来提供特性和服务。例如,一个系统提供运行在Windows系统上、遵循TCPIP协议的一组CAPI,而另一个系统提供了运行在 UNIX系统上、遵循TCPIP协议和HTTP协议的一组C和Java组合的API。P2P的开发者必须选择用哪组API来编程,目标是哪组P2P客户,由于两个系统之间没有互操作的可能性,如果开发者想要提供给两个团体相同的服务,他们必须为不同的P2P平台开发两次相同的服务或者在两个系统间架一座桥,考虑到已经存在的几十套P2P系统,两种方法都是效率低下和不切实际的。 广泛性:P2P系统应该设计成可以运行在任何有数字处理功能的设备上,包括传感器、消费电子设备、个人数字助理、网络路由器、桌面计算机、中心服务器和存储系统。许多P2P系统,尤其是新兴公司提供的,倾向于选择微软公司的操作系统作为它们的目标部署平台,这种做法的原因是因为可以符合最广泛的安装基础以及获得最快的利润。这样不可避免的结果是对系统平台的依赖,这是在紧张的时间和有限的资源下工程的实现而不是技术设计的结果。由于P2P并不定位在PC2 PC上,上述做法是没有眼光的。虽然最早的P2P系统演示在计算机系统的中心一WINTEL机器上,但P2P技术大规模的应用最可能发生在两个极端上企业的大型系统和用户的小型系统。事实上,基于任何特殊硬件和软件系统之上的应用都经不起未来的考验。因此,要构建一个P2P网络,必须考虑如下问题: Peer如何找到其他Peer?也就是Peer的发现机制是什么? Peer之间如何传递信息?Peer的通信协议是什么? P2P网络与现有网络的关系?是完全推翻?还是可以利用现有网络来搭建P2P网络?2.2 P2P如何形成动态网络动态网络是P2P系统存在的基石。互联网是带有某些静态特性的动态网络。例如,连接到互联网的任何计算机都被分配一个唯一的IP地址。当今占统治地位的IPv4协议使用32位的IP地址。这种IP地址的表示方法是用点好隔开的十进制数字,例如。这种地址模型限制了我们最终能使用的IP地址的数量。需要使用IP地址的计算机和设备的增长已远远超出了IPv4协议设计者们的预想。我们很快就会用完IPv4能提供的所有IP地址了。现在,人们已经提出了IPv6协议。这个协议不仅大大增加了可用IP地址的数量,并且还能后向兼容IPv4协议。IPv6使用128位的IP地址。IPv6的IP地址的表示方法是用冒号隔开的十六进制数字。例如:FEDC:B978:7654:3210:F93A:8764:54C3:6543.IPv6能支持1012台计算机和109个独立网络。但是,目前还不知道什么时候IPv6才能得到广泛使用。因为我们更容易记住名字而不是数字,所以互联网提供了一种使用名字来识别计算机的机制。DNS(Domain Name Service,域名服务)提供了帮助用户识别计算机或将计算机名映射为IP地址的方法。因此,我们可使用而不是5来访问Sun公司的主页。尽管我们使用IP地址和DNS来识别和寻址网络上的某台计算机,但P2P系统依然面临巨大挑战。使用IPv4能提供的有限的IP地址导致了寻址计算机的新机制。NAT使我们能将一组保留IP地址分配给某个局域网上的计算机。当连接到互联网时,这些计算机共享一个“公共”IP地址。因为保留IP地址组是为私有网络上的计算机预留的,所以这些预留IP地址不会出现在互联网上(即成为公共IP地址)。因此,这些IP地址可重用。尽管这些机制实现了IP地址的神奇转换,但也使得寻址实际的计算机地址变得更加困难,尤其在动态环境中更是如此。使用IPv6的新一代互联网的设计目的就是为了解决这一问题。但遗憾的是,这可能是未来几年之后才能实现的事。除NAT之外,互联网上IP地址的动态分配也非常普遍。这种分配IP地址的方式本身就为寻址计算机带来了问题。P2P系统如何识别其标志不断变化的对等节点?P2P网络必须能唯一地标志该网络上的多有对等节点和可用资源。因此,P2P系统必须定义自己的独立与IP地址和DNS的命名规则。为了使P2P系统上的用户拥有自己的永久标志,P2P系统必须创建虚拟名字空间。不同于DNS等寻址方法中采用的预定义或预配制方式,P2P系统网络中的对等节点通过使用IP地址或DNS作为导航助手来相互寻址,从而形成动态或虚拟网络。形成动态网络是P2P系统的典型特征。一、寻址P2P系统中的对等节点和资源关于在P2P系统中如何寻址节点和资源的问题,已经见诸于大量的出版物并引起了广泛的讨论。时至今日,这个问题的解决已成为成功的P2P系统的重要标志。读者可从两个层次来思考寻址问题。首先,寻址过程和发现一个对等节点相关。这里所谓的对等节点是指可能理解节点间交换的协议信息的信息处理实体。这个信息处理实体和其他实体使用同一种语言,并且该实体能理解这种语言的语义。对等节点的寻址目的是需要找到某项服务或帮助,并克服很多与信息处理相关的问题。如果对等节点不理解相互交换的信息,那么它们就无法处理相互交换的大量数字信息。寻址的第二个层次与用户发现自己感兴趣的资源相关。早期的P2P应用程序是用于处理文件共享和文件检索的。与流行的搜索引擎不同,P2P应用程度采用了新的技术来检索互联网上的文件和信息。传统的信息检索技术已经无法容纳互联网上以指数形式增长的海量信息了。尽管流行的搜索引擎都支持并行计算机制,但发现可用信息的时间延迟却在持续增长。P2P为互联网上的信息检索提供了一种更加实时化的资源寻址方法。但寻址技术和所需协议的代价也是非常昂贵的。有人对Gnutella软件的遭遇做过详尽的记载。如图2.2所示,作为流行的文件共享和搜索程序,Gnutella没有采用传统的广播机制来寻址对等节点。广播次数的增长非常之快用户越多,广播越多;当用户基数增长太快时,网络系统将因崩溃而停止运行。与此同时,大量的Gnutella请求将阻塞网络。Gnutella的成功之处在于它注意了对寻址结构的限制。图2.2 一旦网络增长超过预期,Gnutella将很快遭遇”广播风暴”对于成功设计和实现基于对等节点的网络,一种有效的寻址机制是至关重要的。为了提高寻址效率,这种寻址机制必须在不同的运行环境中保持高效率。不管网络规模多大,这种寻址机制都必须能迅速寻址到对等节点和相应资源。另外,这种寻址机制还必须有足够的灵活性以防范黑客攻击和安全入侵,否则这种寻址机制的可行性将受到严重质疑。当把集中化系统的寻址机制用于基于对等节点的大型网络时,这些寻址方法往往无能为力。集中化系统的寻址方法要么缺乏可扩展性,要么会在系统中产生单点错误。现在业界已经开始使用多种采用不同结构和设计的分散化的寻址方法。这些方法各有千秋,因此特定的方法往往只适合特定的环境。但在基于对等节点的大型网络中,这些方法都有不足。二、简单广播简单广播将一次请求发送到同一网段中的所有节点上,当将简单广播作为寻址方法时,简单广播能找到大量可能存在的对等节点或发现大量资源。这种方法的不足之处在于:当用户基数线性增长时,广播请求的数量将以指数方式增长。这种方法可能会导致对网络带宽的巨大需求。某些情况下,广播请求将阻塞网络,并引发超时和数据重传,这将使本已不堪重负的网络带宽更是雪上加霜。同时,网络中还存在安全性问题和拒绝提高服务的可能。一个怀有恶意的对等节点可能会通过引发与用户基数不成比例的大量广播请求来阻塞网络。这将中断网络运行并降低网络效率。因此,简单广播只适用于小型网络。三、选择性广播简单网络的改进版之一是选择性广播。选择性广播不会将广播请求发送到网络中的所有对等节点,而是根据用户提供的限制性条件,比如节点提供的服务数量、内容可用性或信任关系等,选择相应的节点发送广播请求。但这种广播方式需要系统保留有关节点通信的历史信息。寻址请求被发送到选中的节点。用户可根据自己定义的对等节点间的连接标准来估计目标点节点的响应时间。例如:用户可能只将寻址请求发送到其支持的带宽请求不低于某个最小值的对等节点,或将对资源的请求只发往可能包含该资源的节点。当然,如果用户需要了解的对等节点越多,系统的动态性就越小。如果不通过某种方式降低网络中的固定关系和静态关系,那么P2P的优势很快就会丧失殆尽。选择性广播中仍然存在安全性问题。为了使选择性广播有效运行,非常重要的一点是使所以的对等节点都成为知名节点。四、适应性广播和选择性广播一样,适应性广播的目的也是尽量实现网络连接最大化和带宽使用最小化。选择标准可通过对网络环境的深入了解得到加强,例如用户可制定寻址操作中可使用的内存和带宽限制;通过预定义资源限制水平,用户可在寻址或资源搜索操作所使用的资源超过这个限制条件时限制该操作的运行,从而达到控制寻址和资源搜索所占资源的增长。这将确保网络不会因为故障元件、误操作的节点恶意攻击而消耗大量资源。适应性广播需要使用一些监控资源,比如对等点标识、消息队列尺寸、端口使用情况和消息尺寸及消息频率等。适应性广播能降低某些对网络安全的攻击,但不能完全消除攻击。五、资源寻址资源寻址和节点寻址密切相关。这两者的不同之处在于节点拥有信息处理能力(智能化设备)。对等节点能通过程序接口参与信息处理的过程。与对等节点相比,资源的静态特征更为显著,并且资源所需的仅仅是识别该资源的标识而已。资源寻址可通过集中或分散化检索方法实现。在同样开销情况下,集中化检索方法能提供良好的性能。满足大型对等网络硬件和带宽要求的费用可能会很高。但有一点,在某些情况下,不管使用多少软硬件。集中化检索方法都会在可扩展性问题方面遇到困难。分散化检索方法力图克服集中化检索方法在可扩展性方面遇到的问题。为了提高分散化索引系统的性能,存储在系统上的所有文件和文档都被分配了一个唯一的ID。这个ID的目的是识别或定位资源。分散化系统能很容易地将资源ID映射为资源。Free Net软件采用了这种资源检索方法。这种方法的不足之处在于对资源的检索必须十分精确;任何资源都必须有唯一的标识。分散化索引系统的另一个问题是持久保存缓冲信息。索引能在很短时间内失去和资源的同步。因为对等节点能随意进入和离开网络,而且索引种的资源也变化不定,所以对等网络非常不稳定。让所有因素保持同步和有效分布资源所引起的开销是分散化索引系统在可扩展性方面遇到的主要障碍。因为对等网络如此不稳定,所以要知道一个节点何时处于在线状态需要开发高效的以用户为中心的分布式系统。虽然这种系统对网络环境的影响程度与具体的应用程序相关,但读者必须理解这两者之间的关系。2.3 节点自制P2P系统是高度分散化和分布化的系统。现在我们已经非常了解分布式系统的优越性了。当你需要升级系统以便为增长的资源需求提供支持时,往往需要采用分布式处理系统。你还可能因为地理原因采用分布式系统,其目的是将资源和程序放到离其访问节点更近的地方。采用分布式系统的另一个原因是提供更高的容错能力和网络灵活性以及支持资源共享和增加协作性。分散化系统提高了节点的自治能力。在P2P系统中,节点是高度自治的。对等节点是独立的并实行自我管理。前面已经提到,在客户/服务器模型中,服务器控制和管理着客户端与资源,比如数据库、文件、网络以及该客户端和其他客户端之间的关系等。对网络环境的操作、管理和监控而言,这种模型有着多方面的优势。集中化系统的优势之一在于集中化的监控和管理,可以从中心节点实现对资源的安全性保护,可以通过使用附加功能来弥补网络物理拓扑结构上的不足。例如,服务器可作为敏感技术资源的网关。分散化系统对网络的管理更加困难。在分布式系统中,往往不能及时发现故障元件。更糟的是,部分故障产生后果和副作用是网络和应用程序无法处理的。我们可能无法估计由远程通信产生的响应时间和延迟效应。网络的状态可能时好时坏。过于频繁的网络错误和网络超时会使对等节点的通信很不稳定。同步化操作将使带宽资源更为紧张。任何基于分布式系统的解决方案都应该减少或完全消除这些因素。P2P系统是建立在这样的假设基础上的;网络提供的服务是分布式的且网络是不稳定的。不同的P2P系统采用不用的方法处理网络的不稳定性问题。P2P系统中的对等节点既能提供服务又能接受服务。P2P系统中没有客户端和服务器角色的区别。任何对等节点都能提供服务或寻址一个能提供该节点所需的服务的对等节点。当一个对等节点请求服务时,可将其看成客户端;反之,当一个节点向其他节点提供服务时,可将其看成服务器。对等节点常常用于需要高度并行化的系统。并行化方法并不是计算机领域内的新事物。事实上,现在进行的很多计算都是以并行化的方式实现的。多处理器计算机和操作系统依靠其并行处理能力执行任务。线程控制机制使我们能够将同一进程分配给不同的任务。然而,直到今天,并行化方法也没能成为应用程序开发中的普遍方法。尽管应用程序被设计成多线程的,但一般而言,这些线程都和控制一个进程所需的不同任务有关,比如从一个速度很慢的设备上读取数据或等待网络响应。我们并没有在并行环境中定义多个应用程序来执行相同的任务,比如检索一个大型数据库或以并行方式过滤大量信息。对很多重复性任务,并行机制为我们提供了一种分而治之的解决方案。SETI(Search Extraterrestrial Intelligence,搜索外太空智慧生命)HOME工程表明,可通过互联网将个人计算加连接起来,以便为我们提供超级计算能力。SETI工程检查来自外太空的电磁信号,希望能够发现其他星球上的智慧生命。这个工程需要花费大量计算资源来分析所获得的数据以及完成相关计算。这个工程的自愿者们从SETI的Web站点上下载了一个屏幕保护程序。这个屏幕保护程序能请求由分解SETI收到的大量电磁信号形成的工作单元。在这个工程启动的第一周内就有 200 000人下载了这个软件。到 2000年为止,参与这个工程的人数已经达到了2 400 000人。这种网络形成的计算能力超过了由IBM制造的,当时处理速度最快的超级计算机ASCI White的处理能力。P2P系统的设计目的正是为了迎合这种分而治之的解决方案的增长趋势。SETI程是一种典型的系统结构,这种结构需要某种程度的集中化或协作机制。我们可根据拓扑结构来对网络进行分类。这里,网络拓扑结构是指节点在网络上的基本排列方式。目前有多种不同的网络拓扑结构供网络设计人员选择。分散化拓扑结构往往采用一个集中化部件来提高其性能,这就形成了一种混合模型或称之为杂交模型。在Napster软件中,正是集中化的文件索引部件提供了该软件的文件识别和定位功能。而在SETI中,是由集中化的任务分发器来分配工作单元的。2.4支持混合模型现在很多的P2P技术都采用一种支持混合模型的基于网络的计算模型。关键部位的集中控制节点提高了以分散化模型占统治地位的系统的性能。为提高P2P系统的关键性能特性,比如寻址和资源管理等,这些混合模型中定义了一些集中化控制点。混合模型还能提高系统的可靠性和容错能力。为了理解P2P系统的实质,让我们先来回顾一下有关网络拓扑结构的知识。这些知识也有助于读者明白在设计P2P系统时,我们有多种不同的网络拓扑结构可供选择。任何类型的网络拓扑结构都不可能适用于所有的 P2P系统。MIT的 Nelson Minar推荐读者应当从逻辑角度而不是物理角度来看待网络拓扑结构。换句话说,我们应当将这些网络模型看成是描述信息流向的术语,而不是将其当成网络物理连线的术语。 下面我们将逐一介绍5种常用的网络拓扑结构: 星型结

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论