前几年的网路泡沫化,许多人对B2B、B2C及C2C已经够感冒了,这几年竟又崛起所谓的P2P(Peer-to-Peer)。到了1999年时,Shawn Fanning突发奇想地撰写一套Napster软体来使同侪间能共享MP3档案。当时的设计其实还是在主从式架构底下,不过因为资料量在真正传递时,是直接由分享双方对传的,所以开始有了P2P的味道。就像知名开放源码大老Eric S. Raymond(ESR)说过:「每件出色的软体都来自开发者个人的特殊需要(譬如搔痒)」。尽管这个突发奇想出身平凡,却有惊人魅力吸引着学界与业界,以至于这几年相继出现许多P2P的新兴领域与市场,而P2P能成功的道理在于满足新世代网际网路使用者所喜爱的两大需求:分享与开放。
P2P的架构
从P这个字母就占了整个术语的2/3来看,Peer是P2P技术中很重要的元件。既然P2P所强调的观念就是分享与开放,在整个P2P网路中,只要任意两方能够直接进行连线,满足彼此的需求,则这两方即符合P2P的要求,所以并不能因为网路上某个节点所具备的能力和其他人有所差异(譬如有一台集中式索引伺服器或一台代理伺服器),即判定此网路不符合P2P的精神,换句话说,只要使用者彼此之间能做到P2P连线,就可以算是P2P网路。
目前大部分的P2P软体是架构在TCP/IP协定之下,所应用的领域以MP3档案的分享最为人知。以开山始祖Napster为例(国内EZPeer及Kuro亦采用此架构),Napster所采用的是集中式架构(图一),既有一个集中式伺服器做为索引目录的建立,因此整个网路的资源消耗较低、速度较快和延展性较高,而缺点是可靠性较低(单点故障)以及维护成本高昂。而后来的仿效者如Gnutella及E-Donkey改采用分散式架构(图二),没有集中式的伺服器,相对地网路的延展性变低,容易造成壅塞,而优点则是可靠性高和建置成本极低。假如读者想问哪一种P2P的架构较好?当我们以教堂与市集来形容专属软体与开放源码之间的角色定位时,集中式P2P与分散式P2P正有着这样的味道。
Napster的架构:
- 1. 连线:安装Napster软体后,做为Napster P2P网路的Peer(Client端),然后连上事先设定的伺服器,接着Napster Client端会将使用者端的相关资料以及分享档案列表传送给Server端。
- 2. 搜寻:当你想搜寻档案时, Napster会将查询的要求传送给Server,然后Server会寻找本身资料库的档案列表,并将结果传回去。
- 3. 下载:收到Server的结果后,你可以选择想下载的档案,并直接连线至对方(Peer),进行P2P的传送,而无须透过Server的转送,一旦档案传送完毕时,Server可进行稽核动作。
Gnutella的架构:
- 1. 连线:安装Gnutella软体,做为Gnutella P2P网路的Peer端(既是Server也是Client),并没有任何事先设定的伺服器来做连结,因此Gnutella对网路可以说是一无所知,所以Gnutella需要知道至少一台Peer的IP位址和Port,以做为第一个连线(起始点),接下来有三件事会发生:你宣布你的存在、他会告知其他Peer,以及每个Peer回讯息给你,之后Gnutella就会和其他Peer交换资讯,以了解整个Gnutella P2P网路。
- 2. 搜寻:当你想搜寻档案时,Gnutella会将查询要求传送给有直接与你连线的Peers,而这些Peers会继续将你的要求传送给有直接与其他使用者连线的Peers,然后反覆下去。在这散布过程的每一台Peer也都会寻找本身的档案列表,并将结果传回去,假如找不到符合结果,那么就无须回报。
- 3. 下载:陆续收到Peers的结果后,你可以选择想下载的档案,并直接连线至对方(Peer),进行P2P的传送,不用再透过网路上其他的Peers介入。假如连线失败,则很有可能是对方有设防火墙,这时Gnutella会重新发送一个下载要求(Push下载),并以Step 2的方式散布这项要求,对方(拥有你想下载的档案)会尝试从他那边直接连线回来,然后进行P2P传送。
总观之前对MP3档案共享技术的探讨,我们以(图三)做为共享示意图,并制作出包括MP3档案的共享技术、传统主从式架构及一般搜寻引擎的比较表(表一),做一个整体性的归纳。在(图三)中,我们假设第三者作为平台提供者的C点,资料需求者为A点,资料供应者为B点。在(表一)中,浅绿色的部分代表着国内MP3档案共享平台Kuro所采取的类似搜寻引擎及Napster将资料搜寻的做法,并集中由特定索引伺服器来处理。浅蓝色的部分标示出EZPeer及Kuro采用真正P2P的作法,并将实际的资料传输转嫁给使用者自行处理。
表一 MP3档案共享技术、传统主从架构及一般搜寻引擎的比较图
|
一般网站 |
一般搜寻引擎 |
Napster |
Gnutella |
索引存放点 |
C点(网站) |
C点(搜寻引擎) |
C点(Napster) |
每个peer |
资料存放点 |
C点 |
B点 |
B点 |
B点 |
C1用途 |
网页存取 |
网页搜寻 |
档案搜寻 |
档案搜寻 |
C2用途 |
不存在 |
事先快取 |
事先快取 |
档案搜寻 |
|
|
(存入索引伺服器) |
(存入索引伺服器) |
|
C3用途 |
不存在 |
网页存取 |
档案传输 |
档案传输 |
A/B点身份 |
不清楚 |
不清楚 |
略知 |
略知 |
|
(仅知IP) |
(仅知IP) |
(知IP及帐号) |
(知IP及帐号) |
发布即时性 |
快速 |
普通 |
快速 |
快速 |
|
|
(多半要等C点去扫) |
(B点主动告知) |
(B点主动告知) |
(资源如何发布) |
(C点=B点) |
|
|
|
搜寻即时性 |
即时 |
事先快取 |
事先快取 |
即时 |
|
|
(资料可能已过期) |
(资料可能已过期) |
(搜寻B点) |
(资源如何发现) |
(C点=B点) |
|
|
|
主要资料类型 |
网页文件 |
网页文件 |
MP3音乐 |
MP3音乐/多媒体 |
P2P软体与技术的应用热潮
再怎么样响亮的专有名词,若没有发展出杀手级的应用,也只能说叫好不叫座,不过从这几年P2P在诸多领域蓬勃发展的情势来看,软体界大老已纷纷开始提出结合P2P观念的完整Web Services解决方案,例如微软的HailStorm/.Net平台、Sun的JXTA/Sun One架构及IBM的Encina/WebSphere,所以P2P除了在档案分享上出尽锋头外,在其他领域亦都有许多的表现。以下将介绍一些P2P应用的领域:
电玩与讯息网路
- 1. CenterSpan(www.centerspan.com)专注在P2P声音文字讯息的传送,适合在多人电玩环境的应用。
- 2. Jabber(www.jabber.com)是使用XML提供的P2P即时讯息系统,能够更有效整合ICQ、AOL及MSN等即时讯息软体。
分散计算
- 1. Applied MetaComputing(www.appliedmeta.com)的产品Legion提供企业做跨平台的P2P资源管理工具及P2P知识管理应用软体,让网路内的资源,紧密的整合,且在网路安全、功能及弹性上都有兼顾。
- 2. Datasynapse(www.datasynapse.com)提供财务公司P2P的网路,最终的目标是全球性的财务网路。
- 3. Entropia(www.entropia.com)致力在计算能力分享的软体设计,结合上万台电脑的空闲时刻,进行分散式计算,免费协助解决一些人类的共同问题,例如抢救爱滋病患者、药物搜寻与运算、医学影像处理等等。当然,该公司会利用某些百分比的计算能力发展成营利用途。
管理与合作
- 1. 惠普(Hewlett-Packard)计划将推行已一年多的e-speak产品提供P2P上的应用。
- 2. 由Lotus Note创始人Ray Ozzie所创办的Groove Networks(www.groove.net)投入开发采购、批发、货品管理及客服等应用软体。
- 3. 英代尔(Intel)也着眼于企业级的P2P应用软体,并成立了一个Peer-to-Peer Working Group。
- 4. NextPage(www.nextpage.com)让企业内部的档案伺服器能以P2P的模式工作。
- 5. Quiq(www.quiq.com)锁定在的前一千大企业(Fortune 1000)并提供虚拟P2P的社群环境。
Peers代理人与分散式搜寻引擎
- 从西门子出来的WebV2(www.webv2.com)着眼于提供企业的Supply chain,提供P2P的应用软体让不同厂商之间沟通和搜寻资料。
超级分散式
- 1. vTrails(www.vtrails.com)发展出Full Duplex Packet Cascading (FDPC),可以有效地减少网站面临壅塞流量。 FDPC将陆续连线进来的使用者,先取一部份做第一层(tier),剩下的使用者将继续分成许多层(tiers)。上一层使用者所下载的资料,会直接变成下一层使用者下载资料的来源,端看最小hop数目以及是否在同一地理区域,以此类推。换句话说,FDPC将网站壅塞点,分散至一连串的使用者层(tiers)之间作为P2P的下载,而在每一台vTrails伺服器,会记录地理位置图,以了解其使用者的位置及IP位址。
- 2. 2AM也有类似的技术,即Streaming Peer。
P2P之新社群经验与开放价值
尽管过去的主从架构亦能提供使用者之间互动的平台,但仍不敷使用。笔者认为P2P除了能让使用者之间能做更直接密切的沟通之外,P2P的社群经验是与Open Source开放源码运动契合的,所推动的「开放价值」精神更是一致。
P2P的使用者一直很强调分享,包括:
- 1. 资料与资讯的分享(MP3、影片、文件)。
- 2. 知识的分享(群组合作、即时讯息以及视讯会议)。
- 3. IT设备的分享(CPU时间、记忆体以及储存空间)。
因为分享而获得更多,因为开放而拥有更多,以至于笔者归纳P2P与Open Source两者间具有的三个开放价值:
开拓思维与眼界(Open your mind and vision)
敞开心胸与他人分享,你会讶异到别人的独到见解,并得以丰富自己的思维与心灵,而另一方面透过无国界密切地分享交流,可以让自己增进眼界,进而培养自身的判断力与领悟性。
避免再制与闲置(Avoid re-invent and idle)
程式设计师可以有效地透过分享原始码来持续激发创意,延续软体的生命;系统管理者以及一般使用者亦可透过分享来提升资源利用率,同时我们也可避免同样的事物再制两次。 ESR说我们应该认为别人的时间是很宝贵,同样的问题不应该花时间解决两次。
团体合作(Teamwork)
切勿划地自限,唯有共同合作才会有更大的竞争力,并能教学相长地学到更多东西。 Linux之父Linus Torvalds曾说过一句有意思的话:「只有糊涂的人用磁带机来备份资料,明眼人会直接上传他重要的东西,然后让全世界来拷贝。」您觉得呢?
P2P的未来发展与冲击
P2P接下来会怎么走?
细看P2P的网路架构,其实就是将点对点(Point-to-Point)的层次,从主从式架构(Client-and-Server)连结进一步成为Peer之间的连结。然而,观念虽然简单,戏法人人会变,但巧妙却是各有不同。笔者认为P2P在接下来几年,会在使用者族群继续蓬勃发展,因为毕竟Peer的概念是比较贴近用户端,而另一方面企业用户则会因为Peer观念,从而发展出更符合他们需求的完整解决方案,像Web Services即是一例。
在一般使用者的角度中,他们所关心的是P2P的分享(sharing)能力,整个设计理念应该是这个P2P软体能分享什么(what)以及如何分享(how),也就是说设计的P2P软体要够「好用」,而不只是一个不好玩,60分及格的玩具。接着笔者以功能导向的思考方式,来探讨使用者所关心的议题。
- 1. 全面性(All-in-one):在使用者端不应仅强调效能而忽略功能的多样化,使用者要的是多机一体。
- 2. 延展性(Scalability):网路架构能提供怎么样的存取速度?是否能很快的找到所想要的资源?是否能能负荷多人口的社群?
- 3. 商业模式(Commercial business models):如何在开放平台计费而又不会令使用者感到讨厌、甚至是察觉?因为一般人都不喜欢付费的感觉…。
- 4. 互通性(Interoperability):异质的P2P软体间是否有共通标准(standards)?异质P2P的社群又如何做到资源共享?
- 5. 友善性(Interface I/O):简单容易的使用者介面,而非繁琐的专有名词及凌乱的操作。
- 6. 安全面(Security/Trust):金钱交易的安全性,以及资讯分享的正确性。
- 7. 法律面:P2P网路强化了使用者与使用者之间的互通能力,但同时也容易涉及法律问题。一般而言,很难去正面地约束使用者行为。
后P2P时代?
现在IT硬体产业所处的是后PC时代,并面临硬体产业将转变成纯制造业的时代,这是一个迈入微利的时代,也是市场版图会出现大者恒大的时代。而软体产业亦处于后Open Source时代的来临,笔者认为改变最多的是软体技术发展模式,由于现成软体工具及套件原始码更容易取得,传统PC硬体产业的所谓「公版」开发模式亦会发生在众多软体开发厂商的身上。因此厂商的竞争力不再仅仅是比功能或比规格,而是在比「效能」和比「加值」上面。
在后PC与后Open Source的夹击下,这也正是后P2P时代所处的局面,如何利用最小的资源带来最大的利益,这将会成为后P2P时代的核心价值。
结论
从Napster的星星之火到今天琳琅满目的P2P软体,我们可以发现到分享的东西并不局限在MP3的音乐档案里。 P2P的观念与开放源码是不谋而合,其开放价值能开拓全人类的思维与眼界,为了让我们避免再置与闲置,我们透过团体合作来达到更大的目标与理想。笔者始终相信,开放的意义在于合作而非免费,所以越来越多的P2P使用者已开始如火如荼式地分享资源,并有越来越多的厂商积极地在整合资源,就让我们拭目以待后P2P的时代吧!
(作者现为台湾大学电机研究所博士班学生:http://www.nctu.idv.tw)