计算机软件专业关于P2P软件的实现论文Word下载.docx
《计算机软件专业关于P2P软件的实现论文Word下载.docx》由会员分享,可在线阅读,更多相关《计算机软件专业关于P2P软件的实现论文Word下载.docx(78页珍藏版)》请在冰豆网上搜索。
Keywords:
目录
第一章绪论-------------------------------------------------------------------------------------1
1.1P2P发展简史------------------------------------------------------------------------1
1.2P2P应用程序的用武之地---------------------------------------------------------4
1.3P2P技术的动力-------------------------------------------------------------------5
第二章P2P体系结构---------------------------------------------------------------------6
2.1P2P网络------------------------------------------------------------------------------7
2.2P2P如何形成动态网络-------------------------------------------------------------9
2.3节点自制-----------------------------------------------------------------------------14
2.4支持混合模型-----------------------------------------------------------------------15
第三章JXTA技术----------------------------------------------------------------------------20
3.1JXTA是什么------------------------------------------------------------------------20
3.2JXTA的概念------------------------------------------------------------------------22
3.2.1Peer(对等机)---------------------------------------------------------------22
3.2.2PeerGroup(对等组)-------------------------------------------------------23
3.2.3Endpoint(端点)-------------------------------------------------------------23
3.2.4Pipe(管道)------------------------------------------------------------------24
3.2.5Advertisement(广告)------------------------------------------------------25
3.2.6Message(消息)-------------------------------------------------------------26
3.2.7RendezvousPeer(集合点)-----------------------------------------------26
3.2.8RouterPeer(路由Peer)-------------------------------------------------28
3.29GatewayPeer(网关Peer)--------------------------------------------------28
3.3用于通信的Peer-------------------------------------------------------------------29
3.3.1防火墙------------------------------------------------------------------------29
3.3.2NAT(网络地址转换)------------------------------------------------------29
3.3.3代理服务器------------------------------------------------------------------30
3.3.4DHCP(动态IP分配)-----------------------------------------------------30
3.3.5网络的不稳定---------------------------------------------------------------31
3.3.6网关问题---------------------------------------------------------------------31
3.4Peer和对等组----------------------------------------------------------------------32
3.4.1Peer和用户的关系---------------------------------------------------------32
3.4.2对等组的必要性------------------------------------------------------------32
3.4.3JXTA应用程序与对等组-------------------------------------------------34
3.4.4对等组的成员资格---------------------------------------------------------34
3.4.5对等组的服务---------------------------------------------------------------35
3.5广告(Advertisement)-------------------------------------------------------------37
3.5.1广告的类型------------------------------------------------------------------37
3.5.2模块(Module)广告-------------------------------------------------------41
3.5.3管道广告---------------------------------------------------------------------51
3.5.4端点路由消息---------------------------------------------------------------52
3.5.5消息(Message)----------------------------------------------------------53
3.6JXTAContentManageService(CMS)--------------------------------------------54
3.6.1CMS概述--------------------------------------------------------------------54
3.6.2CMS简单搜索-----------------------------------------------------------55第四章P2P软件设计-------------------------------------------------------------------56
4.1需求分析----------------------------------------------------------------------------56
4.2类设计-------------------------------------------------------------------------------56
4.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.1P2P发展简史
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和CableModem。
20世界90年代末期,因特网发展的另一个趋势也对P2P应用程序带来新的挑战,那就是非对称网络连接的发展。
网络供应商为了得到更高的效率而决定提供非对称的带宽,往往是下行带宽非常大而上行带宽非常小,ADSL和CableModem的下行/上行带宽往往相差3~8倍。
这种用法的根源在于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.2P2P应用程序的用武之地
现在,让我们来考虑一下今天的桌面计算机用户希望使用哪些不同类型的应用程序。
除了Web浏览和办公软件外,桌面计算机用户还希望计算机能提供如下功能:
★管理和共享信息:
这些信息包括用户希望与商业伙伴、朋友和同事共享的所有文件、文档、图片、音频、视频和电影等。
通过信息收集和编排功能,更先进的共享机智机制能使一台计算机扮演通用任务管理器的角色——比如,G就是分布式任务管理器系统的一个例子,而Gnutella是个人P2P文件共享系统的一个例子。
★协作:
PC用户发现地址簿、日程安排、聊天和E-mail等软件工具提高了他们的工作效率。
通过将桌面工具软件连接在一起使得协同工作的电子商务团体能形成灵活、强大而有效的工作小组,例如JAVA开发人员使用OpenP协同工作。
而在更大范围内,成千上万的用户使用实时通信工具,这可能是目前最为流行的P2P应用程序了。
★企业资源管理:
企业内协同工作流程提高了由连接到网络上的桌面计算机系统所组成的企业网络环境的处理能力。
例如,Groove使得一个航空业制造商能将工作订单请求发送到伙伴公司,并将已经完成的请求从一个部门发送到另一个部门。
★分布式计算:
通过分散化方法实现互联网健壮性理念的一个自然扩展是设计P2P系统,这个系统将计算任务转送到数以百万计的服务器上,而任何一台这样的服务器都可能是一台台式计算机。
尽管P2P还处在初始发展阶段,但已经出现了很多能满足用户所有上述功能需求的P2P应用程序。
随着人们对P2P技术优越性认识的深入,将来可能会有更多的使用P2P技术开发的应用程序。
1.3P2P技术的动力
商业和技术方面的三个主要因素促使人们采用P2P技术。
★分散化:
越来越多的企业已经通过采用灵活的企业结构实现了更高的效率和效益。
因此,最近几十年中,企业领导人一直致力于企业的分散化。
我们已经经历了从大型主机模型到客户/服务器模型,再到互联网计算模型的变迁,直到今天的P2P模型的变迁。
这个发展趋势不可否认地实现了离散化和分布化。
★费用和效率:
软硬件的价格会越来越低,而处理能力却会越来越高。
能提高生产效率或软硬件使用率的新系统将成为企业投资的首选。
P2P具备充分利用以前未被利用的资源的能力。
★普及应用的计算:
我们可以想象,信息系统在现代社会中无所不在:
衣服、工具、汽车和设备,任何你能想象的东西中都存在着计算机芯片。
信息系统不仅无所不在,而且它们之间是互连的。
网络连接设备的市场一直在持续增长,而P2P系统正是被设计用于支持这个市场的。
随着企业逐步推进其电子商务进程,他们会更加深入地认识到连接交易流和通信流的必要性。
同样,他们也会认识到为完成常规任务和特定任务而为合作者和外部伙伴建立“电子村落”的必然趋势。
电子商务的发展将会造成更多的商业合作需求。
P2P技术天生就顺应了建立分布式和特定目的网络的发展趋势。
第二章P2P体系结构
使Gnutella和其他P2P应用程序变得有趣的