P2P

来源:互联网 发布:噪声计算软件 编辑:程序博客网 时间:2024/04/25 03:42
 
P2P简介 P2P(Peer-to-Peer)这个词如果仅仅理解为一种网络拓扑结构,那不能称之为新鲜事物,因为早在许多年之前Internet刚刚诞生时就已经有了,而且当时的Internet就是一个P2P结构的大网络。人们之间完全是以“点-点”方式通讯的,根本不存在现在所谓的Server和Client。这可以看作是P2P最原始的形势。
经过几十年的发展,Internet上的资源逐渐丰富起来,并呈现爆炸式增长的态势。而与此同时,资源的流向却趋于集中化,大量公开的资源以所谓的Server形式在Internet上提供,网络应用也多以集中化方式提供服务,比如:Web、FTP等。不可否认,这种集中化的发展大大促进了Internet的普及与应用,成就了今天Internet的神话。然而,在这个唯一全球互联的网络上,集中化的方式使服务缺少个性,并充满着浓烈商业气息,人们每天机械地访问几个熟悉的门户网站的Web Server,去Mail Server上收发Email,到各种FTP Server去下载文件,就连人们喜欢的ICQ、QQ等即时通讯也是基于典型的Client/Server模型。今天的Internet已经完全“笼罩”在Server的控制中。 我们不否认Server对于Internet发展的重要贡献,因为“网络社会”同人类社会一样,也是由原始社会的“原始的民主”慢慢发展到“封建专政”,最后还会慢慢过渡到现代的民主,整个过程是在进步的。
但应该看到,Server集中式的服务方式有许多技术弊端。一个最主要的问题就是资源无法得到充分利用。Internet最大的特点是全球互联,在Internet上最大的资源拥有群不是Server而是Client。可以说Client才是Internet的主体。有资料统计,全球Server提供的资源加在一起还不足Internet资源总量的1%。也就是说最多最好的资源实际上是存在于我们每一个人的PC中。随着硬件水平的发展,现在的PC无论是性能还是功能已经远远超越了原先对PC的定义。许多PC可以提供大容量的存储能力和高速的计算能力。人们迫切希望能打破Server的垄断,在Internet上拥有属于自己的空间。
P2P技术正是基于这个目标而诞生的。 P2P技术不同于前面所说的基于Server的应用技术,它是基于P2P拓扑结构发展起来的一项新型网络通讯技术。从诞生之日起,P2P的宗旨就是要打破Server垄断,提供Server所不能提供的功能,弥补Server的不足,并充分利用和丰富现有的Internet资源。也就是说P2P不是要从根本上废除Server,在相当长的一段时间内,会与Server并存而共同发展。因此,从技术上讲,P2P技术一般都是基于成熟的TCP/IP协议的,并且借鉴Server应用中许多成熟的技术。从层次上划分,P2P应该属于网络应用层技术,与Web和FTP等应用是并列的。然而,P2P技术又比这些应用要复杂的多。 P2P非常强调一个词:Serverless。Serverless的提出意味着P2P技术将Internet服务提供方式划分为3种,完全基于Server(Server-based),少量借助Server(with-Server),完全脱离Server(non-Server)。P2P主要面向后两种情况。微软对Serverless这个词的解释是:“No server, but works better with server”。这或许是对Serverless概念比较精妙的概括。 “少量借助Server”这种方式是现在比较常见的P2P解决方案。像曾惹来广泛争议的Napster、现在欧美非常流行eDoney&eMule,以及我国P2P fans开发的Jelawat、Workslink等,都属于这类产品。目前这类产品多以File sharing服务为主,并兼有简单即时通信功能。这种方式的一个主要特点是,Server的功能已经远远退化,一般只作为Index Server使用,提供所有Peer以及之上各种文件列表查找索引服务。
“完全脱离Server”方式是P2P研究的重点和难点,也是P2P技术最终的目标。这种方式完全不需要Server的存在,所有Peer都是平等的,在P2P网络中所有的资源按照某种规则共享,同时任何Peer可以在任何时候在任何地点加入到某个P2P网络群体中。而这一切都根本不需要Server的配合和支持,当然works better with server。
 
二、P2P技术的应用前景
 
P2P技术带来的诸多好处是显而易见的。最大的好处就是资源将得到充分利用和最大化的共享,并且P2P技术还加强和改进了许多原有的应用。Microsoft在《Introduction to Windows Peer-to-Peer Networking》一文中列举了几种应用情景(scenarios): l Real-time communications (RTC),实时通讯 n Serverless Instant Messaging,Serverless型即时通信 Instant Messaging(IM)在当今全球已经变得相当普遍。国外的ICQ、Yahoo Messenger、MSN Messenger以及国内的QQ等都已经吸引了大量用户使用。IM之所以能成为当今Internet上最受欢迎的应用,主要是因为它满足了人们对于通讯实时性的要求。然而,目前IM软件还是基于C/S模型设计的,用户的帐号、好友列表等信息都保存在Server上,甚至用户有时发出的消息也需要Server帮助转发。如果服务商的Server坏掉了或者正在检修,许多功能就会在一定时间内无法使用。Serverless型的IM基本不需要Server的支持,只要人们以某种形式(如:Workgroup)形成了P2P网络互联,就可以相互之间识别并通讯,中间过程无需Server的帮助。这不但会大大降低IM应用提供商的运营成本,而且减少人们对于Server稳定性的依赖。无论你是在Internet上,还是在独立的公司局域网上,甚至是在家中,都可以随时组成P2P网络进行通讯。 n Real-time Matchmaking and Game Play,实时比赛和游戏 网络游戏的发展速度同样是惊人的,而且现在新推出的游戏大都提供连线对战功能。然而与即时通信应用相似,基于C/S模型的连线对战同样需要性能强劲的游戏服务器支持。虽然也有许多游戏支持局域区连线对战,但如果我们想和海外的高手对战来一争高低又不得不约他们到指定厂商的Server上,造成许多麻烦和不便。P2P技术允许任何Peer可以单独建立区域型的P2P网络,可以让Internet上的任何人随时加入到其中,共同游戏娱乐。 l Collaboration,协同工作 n Project Workspaces Solving a Goal,项目组内协作 “协同工作”的概念现在越来越受到推崇和重视,一个很重要的原因就是现在的项目规模不断扩大,仅靠两三个人的力量是根本无法胜任的。而要很好地实现“协同工作”就必须有相应的软件支持。在Office的各个组件中,已经开始加入了“协同工作”的功能,在Visual Studio.NET里也引入了相应的功能,但这些仍然是基于C/S模型的“协同工作”。P2P技术实现的协同工作是无需Server支持的,而且同样可以组合成一个个Workgroup,在之上共享信息、提出问题、商讨解决方案等,提供更好的“协同工作”能力。 n Sharing Your Files with Other People,与其他人共享文件 File sharing已经相当普遍了,上面说的诸如eDonkey、eMule等都已经实现了这方面功能。
但P2P技术真正想提供的是一种无Server的File sharing能力。我们如果想和远在美国的几个朋友分享一个MP3音乐文件,使用eDonkey等软件来Transfer这个文件是十分麻烦的,因为这些软件只提供全局共享能力。如果使用P2P技术开发的File Sharing软件,只要十分简单地形成一个P2P网络,就可以互相看到对方共享的文件,并随时下载,而且这种File sharing比现在的方式更加出色。而且这些是不需要Server的支持的。 n Sharing Your Experiences,共享体验 随着Wireless应用的普及,移动设备上网并收发MMS等应用已经变得不新鲜了,但对无线业务稍有了解的人都应该知道,我们的MMS还都是需要运营商Server的转发才能实现的。你有没有想过当你遇到一个令你激动的情景,只需要用手机的摄像头对准它,就可以将这个情景以Video的形式直接传送到你的朋友们那里,而这些看似只有在科幻电影中才有的镜头,在P2P技术中是完全可以方便地实现的。 l Content distribution,内容分发 n Text Messages,文本消息 Netmeeting中的White Board功能许多人应该都使用过,包括Chatroom中的聊天功能也都支持许多人一起聊天,所有人都能看到聊天信息。但这同样必须有Server在中间做存储转发才可以实现,而且许多Server都有聊天时间和聊天信息多少的限制,不能一直都挂在网上并随时看到所有的聊天信息。P2P可以实现一个Workgroup中7*24小时在线互联,并且随时分发通话的信息。新加入到这个Workgroup中的人还可以看到以前的信息。这是Server-based的Chat应用很难实现的。 n Audio and Video,音频和影像 现在十分流行的基于网络的电视电话会议应用也很普遍,在许多场合都发挥着重要的作用。而这种系统大都是由主会场的一台Server做中央控制服务器,将主会场的音频和视频信号压缩编码后通过有线或无线网络不断发送出去,到达分会场后再解码播放。如果想看到分会场的情况,必须不断地将分会场的信号传回主会场的中央Server,由它再分发到其他分会场。可以看出这个中转过程中浪费了不少网络传输资源。但这是基于C/S模型无法避免的弊端。P2P技术使所有的会场都处于平等的地位。一个会场的信号会同时广播到所有的会场,会议系统只需要通过切换不同的接收信号,就可以收到所有会场的情况。 n Distribution of Product Updates,分发产品升级补丁 产品推出后经常需要打补丁以解决发现的BUG或安全隐患,如Microsoft的Service Packs或Update。然而目前打补丁的方法基本上采用让用户自己下载网站上发布的补丁包,自行安装补丁的方法。这会造成许多问题,最严重的问题就是用户对补丁包的真伪不得而知,有时下载的补丁包实际是个大木马或者大病毒。这会给用户带来难以估量的损失。尽管有些软件已经提供自动升级能力,但基于Server补丁下载模式仍然没有变,同样会带来对Server稳定性和安全性的依赖。P2P技术使产品的分发变得十分简单,所有拥有这种产品的人会自动形成一个Workgroup,并且有严格的身份认证。产品厂商随时在这里提供升级补丁服务,而P2P技术会使你的电脑在不知不觉中完成打补丁和各种升级服务。 l Distributed processing,分布式计算 n Division and Distribution of a Task,分解和分发任务 分布式计算是当前计算领域一个热门的研究课题,也是P2P技术的高级应用。如何将一个大任务分解为许多个小任务,并通过网络分发到所有Workgroup中的电脑上进行计算,最后将结果统一汇总到一台电脑上,是分布式计算的一个主要的应用。这种想法的初衷是因为现在的PC计算能力已经大大加强,分布于世界各地的无数台PC拥有巨大的“计算潜能(Computing Potential)”。如何开采这部分潜能,使之共同协作完成就连巨型计算机都无法在短期完成的计算任务,是许多计算机科学家孜孜以求的目标。P2P技术为完成分布式计算提供了很好的平台。当然真正实现良好的分布式计算还需要许多技术的共同配合才能完成,P2P只是核心技术中的一种,但应该看到应用P2P技术实现分布式计算的应用正在慢慢实现,许多大公司如IBM、Intel都希望在这一领域有所作为而正在加紧实验。 n Aggregation of Computer Resources,整合计算资源 “网格计算(Grid Computing)” 的概念许多人都应该听说过,我国中科院也在这一领域做出了许多重要的研究成果。“网格计算”的核心思想就是要最大限度地利用闲置的网络资源,达到“积跬步以成千里,积小流以成江海”的巨大计算资源汇集效应。有人曾做过比喻:“如果你出门在外,家中的暖气是被浪费的热能,如果将一个城市中这些热能集中起来,不亚于一个小型发电站”。这种应用在高能物理、核物理、气象、水文、太空研究等海量计算领域有巨大的应用前景。而这恰恰是P2P技术擅长的地方。 l Improved Internet technologies,改良和增强现有的Internet技术 Network Address Translator (NAT,网络地址转发)现在应用十分普遍,特别是在局域网和Internet互联上更是发挥了重要的作用。然而导致NAT技术和其他类似地址转发技术出现的根本原因是由于IPV4的地址已经即将分配完。没有足够的IP地址为所有的电脑分配全球唯一的IP标识。因此不得不采用NAT等技术进行地址的翻译和转发。虽然通过端口映射等技术手段在NAT上实现内部电脑与Internet上电脑的间接互联也是可行的,但P2P技术为我们提供了更加直接和便捷的互联方式。由于P2P技术是基于IPV6协议的,而IPV6的地址分配量是一个惊人的天文数字。在这样一个“可以为地球上的每一粒砂子分配一个IP地址”的环境里,每一台电脑甚至每一个灯泡和开关都可以拥有IP地址。难怪有人会开玩笑说,P2P技术可以使你在美国用手机控制你中国家里的厨房顶灯。在P2P技术支持下这的确不只是幻想。 三、P2P技术发展中的问题 世界上的一些事物都有其缺点,P2P技术也不例外。从诞生那天起,P2P就与版权问题、安全问题和盈利问题有着千丝万缕的联系。如果说版权问题可以通过法律手段加以规定和限制来解决,盈利问题可以通过构建良好的盈利模型加以克服的话,那么安全问题就是现在P2P发展过程中最亟待解决的核心问题。由于P2P允许全球的电脑互联,这其中难免会有不怀好心的人,他们利用网络和P2P系统的漏洞,有可能攻入到用户的电脑中,窃取重要的机密信息,甚至进行破坏,给用户造成难以估量的损失。在Server时代通过严密的Firewall都很难从根本上杜绝恶意攻击,那么在P2P时代通过何种技术来最大限度阻止这一切的发生,已经成为当今各个P2P研究机构头等重要的课题。 目前解决安全问题的基本思路是“Authorization(授权、认证)”。通过建立一个个基于比较完善的加密机制而形成的Workgroup,对进入该Workgroup的PC加以严格的身份检验和授权,以达到保护Workgroup自身安全的目的。当然,如果要实现比较坚实的P2P安全体系,还需要许多安全技术的配合才能得以实现,不是简单的一两种技术就可以完成的。 应该看到,安全问题对于P2P技术的发展至关重要,可以说关系P2P的成败。在这样一个日益注重网络安全的时代,如何实现“可信赖计算”是摆在所有P2P研究人员面前的头等大事。我们衷心希望不远的将来,在美好的P2P时代,我们都能在P2P网络中简单、愉快、安全的进行各种计算活动,一起感受P2P给我们带来的全新的体验。