早在90年代,就已經出現P2P這個名詞,從那時起就有許多P2P的應用。一直到了1999年,國外的Napster興起,P2P的技術終於首度大規模地應用在網際網路上。Napster之所以掀起這麼大的波瀾,是因為它徹底顛覆了人與人之間交易的模式,傳統人與人之間的交易是利用貨幣作為工具,進行某種形式的以物易物,但是Napster卻是利用P2P的技術,將人與人之間的有價檔案(如mp3等),透過網路直接做分享交流,且使用者完全不需要支付任何的費用。
Napster的點對點運作方式
如(圖一)Napster有一個中央伺服器(C),所有安裝Napster的電腦(N#)在啟動軟體之後,都會連上這個伺服器。在連上之後,Napster會開始搜尋電腦中的檔案,將可以進行分享的檔案加以列表,並且將該列表傳回中央伺服器C。這個中央伺服器可以說是一個超級大型的資料庫,裡面儲存了數以億計的檔案資訊與電腦資訊。當電腦N1希望尋找檔名含有 “bbking” 的檔案時,N1會將這個要求送到中央伺服器中,而伺服器就開始在這個大資料庫中幫你找出符合這樣條件的檔案及電腦資訊(N3:bbking.mp3),然後將該結果傳回N1電腦。如果N1的使用者要在這些結果中,選擇某幾個檔案來進行下載,那麼Napster將會從本地端進行網路連線到有這些檔案的電腦上,並且將這些檔案抓回來。
原理就是這麼的簡單,Napster事實上是最簡單也最直接的一種P2P檔案分享應用。在Napster成為新潮流之後,華人地區的Kuro與Ezpeer也加以學習模仿,並成為本土知名的P2P檔案分享軟體。事實上這兩者與Napster的運作方式都是相當類似,而中央伺服器就在此種類型的應用中,扮演了極為重要的角色,它負責了檔案資訊的儲存及搜尋,是不折不扣的Server-Client架構,而真正的P2P只發生在檔案的傳送階段。
P2P的烏托邦
任何事情總是會有理想家賦予新的想像,P2P也不例外,像上述的P2P檔案分享服務,仍是採用了Server-Client架構,而這樣的架構最大的致命傷就在於中央伺服器。這中間可能發生的問題包含了:
- (1) 伺服器當機掛了。
- (2) 頻寬不足,所有訊息都卡在伺服器外圍而進不去。
- (3) 伺服器計算能力不足,處理不了過多的訊息。
- (4) 伺服器被抄台。
這幾種狀況都將會使得整個檔案分享服務陷入停擺,所以有些理想家開始思考能不能做到沒有中央伺服器的P2P系統相關問題,以至於後來做出了幾個相當具有指標性意義的應用軟體,分別是Gnutella和Freenet。
Gnutella的發展與技術
Gnutella到目前為止已經發展了好幾年,目前是相當受到歡迎的P2P網路;Gnutella事先規範了一組點與點之間的通訊協定,這樣任何兩台採用Gnutella通訊協定的電腦就可以彼此互相溝通。Gnutella並沒有中央伺服器,它只有一張上面有幾個節點的列表,任何一個新的節點在剛開始啟動時,會自動連上其餘的幾個節點,然後就暫時固定下來,而節點與節點之間的通訊,是完全透過其他節點的幫忙。雖然這種訊息傳遞方式頗耗費頻寬,但是速度卻是非常地快,並且沒有中央伺服器可能遇到的潛在危險。
Gnutella上的檔案搜尋非常簡單,使用者如果要找出一個包含“李宗盛”檔名的檔案,該軟體會送出這個訊息給附近的節點,而收到訊息的節點又會傳遞給它附近的節點;如此不斷地傳遞,就如同廣播(Broadcast)的方式一樣,可以在非常短的時間內將該訊息傳遞給所有網路上的節點。
當某個節點收到該訊息後,就會在自己的電腦中進行搜尋;假如有符合的檔案,那麼電腦就會將該檔案的資料傳回給原來的節點。Gnutella通常採用的是一種沿著原路回去的機制,由(圖2)我們可以得知該訊息M1由節點N1發出,經過各個節點的廣播,抵達了一個節點 N8,當該節點要將搜尋結果傳回時,會沿著原路回去。
不過讀者也許會問為什麼要如此麻煩呢,直接傳回去豈不是更快?說到這裡,就涉及到匿名(Anonymity)的問題;如果要將結果直接傳遞給N1,那麼N8勢必要知道N1的IP address,才能夠直接傳送過去。然而Gnutella的另一個目標是希望做到節點之間的匿名傳訊,也就是說節點與節點之間可以進行訊息傳遞,但是節點與節點之間卻不能知道彼此的位址(Address)。雖然Gnutella利用這樣的機制實現了無中央伺服器及匿名的目標,但是節點之間的檔案傳遞方面,Gnutella還是採用了傳統的方式,也就是節點與節點之間直接建立一條連線,以便將檔案傳回。
《圖二 Gnutella節點間的傳送示意圖(一)》 |
|
《圖三 Gnutella節點間的傳送示意圖(二)》 |
|
過於理想化的Freenet
Freenet則是一個野心更大的計畫,除了節點之間的訊息要做到匿名保護及無中央伺服器之外,它還希望節點之間的檔案傳遞也要做到匿名。換句話說,就是使用者可以抓到他想要的檔案,但是這名使用者卻不知道這些檔案究竟是從哪個節點所提供。Freenet計畫的主持者Ian Clark是個言論隱私權論者,他主張人與人之間的言論交流需要被絕對保護,因此他帶領一個團隊發展了Freenet。Freenet允許使用者自由的散佈檔案和抓取檔案,而不必擔心自己的資料(如IP address、散佈與抓取的檔案資料等)會被外洩;舉例來說,如果使用者想要散佈一個檔案,首先Freenet會利用一個特殊的函數F輸入這個檔案的檔名,然後再輸出一個特別的ID,而這個ID就是歸該檔案所獨有;爾後Freenet網路會根據這個檔案的熱門程度和網路區域的需求度,來自動將該檔案複製出去,至於這檔案究竟會複製到哪些節點上則無法預測。
Freenet的特點
當另一個使用者要找尋這個檔案(知道該檔案名稱)時,Freenet就會跟Gnutella一樣,使用Broadcast的方式將這項要求傳遞給所有的節點,而收到這項要求的節點則會自動將該檔案名稱輸入函數F,若是輸出的ID出現在自己的檔案資料庫中,那麼就表示有人需要這個檔案,該檔案就會沿著原路傳回去。不過要特別注意的是,這個函數F是不可逆轉,任何人都無法將檔案ID反推出檔案名稱,而基於這個特點,Freenet可以保護到想要散佈檔案的人。
雖然Freenet的立意甚佳,但是它實在是太過於理想化了,以致於執行效能相當地低落。筆者做過一些實驗,某些熱門檔案,如4MB的MP3所需要下載的時間甚至要超過12小時;會造成這樣的原因,就是Freenet太過於注重通訊隱私而無法顧及到通訊的效率。相反地,Gnutella在這一點則是做了妥協,訊息方面做到隱私保護,而實際的檔案傳輸還是使用直接兩點對傳,因此在傳檔速度上會比Freenet快許多。
世界真小
前述的Gnutella與Freenet都是利用節點與節點之間的協力合作來進行訊息的傳遞,不過大部份的讀者可能會認為這樣的方式會大幅度地降低傳輸速度,但是事實上結果正好是相反。在1967年的時候,一位哈佛的教授Stanley Milgram做了一個實驗,他寄了160封信給亂數選出的160位美國某地區的居民,這封信上註明了該封信的目的地是一個住在另一州的某先生(並未註明地址);教授請他們如果收到這封信,就將該封信轉寄給他認為最有可能知道這位先生的親朋好友,然後再請那位親朋好友也同樣轉寄給他認為最有可能知道這位先生其他的親朋好友。實驗的結果相當有趣,總共有42封信寄達了那位先生,而且這42封信平均每封只透過了5.5個中間人。
這項實驗的意義,顯現了人與人間的網路結構,雖然一般人認為人與人之間的認識相當凌亂,根本無法做有效率的訊息交流,但是事實上在廣大的社會裡,一般人熟識的朋友並不會特別的多,但是有少數的人卻認識相當多的人,而這樣的人扮演了一個傳遞訊息的捷徑的角色。在1998年,兩位教授Duncatsn Wat與Steven Strogatz在Nature期刊上發表了一篇更為正式的學術研究,闡述了這個現象,並且將此現象稱之為Small-World現象。
不過這個現象對於P2P有什麼影響呢?其實其中的影響是非常地巨大,我們只要把上一段中的 “人”改為“節點”,然後再重新閱讀一次上一段的文章,我們就可以發現Small-World的現象可以讓P2P網路中的訊息傳遞非常快速。Gnutella與Freenet的網路效能,可以說都深受了Small-World的影響。
應用領域 |
應用案例 |
P2P檔案分享 |
Napster、Freenet、Gnutella、KaZaA、eDonkey、EZPeer、Kuro |
P2P通訊應用 |
Instant Messaging、News |
P2P分散運算 |
SET@home |
P2P遊戲 |
Magnetar Games |
P2P Overlay
網路 |
RON、PDF、Detour、LRR |
Overlay Testbed |
PlanetLab、NetBed/EmuLab |
道魔之爭
雖然Gnutella與Freenet是如此地好用,但是目前網路社會中並不是以這款P2P軟體為主流;原因很簡單,是因為這兩種軟體都不是以營利為目的,而是以學術研究為出發點。幾個主要的商業P2P軟體包含了Kazaa、eDonkey、iMesh,以及台灣的Kuro與Ezpeer等商業的P2P軟體,都提供了較有效率的檔案抓取功能和漂亮的操作界面,並在短時間內吸引了數以百萬計的人使用,而此舉就讓全世界的唱片業與電影工業陷入困境之中。大家都加入分享的團隊後,這就意味著產品沒有人要買了;台灣的唱片業的業績,從1997年的120億台幣掉到去年的50億台幣,未來預估還有可能會掉到30億台幣以下。
商業的反撲
縱然P2P如此地活躍,但商業力量也不是那麼地好惹;最近美國的RIAA(Recording Industry Association of America)便開始對目前流行的P2P軟體展開反擊,據說他們雇用了網路高手設計程式來侵入P2P網路,藉以收集使用者的使用記錄,同時也發展了破壞軟體;一是直接攻擊並癱瘓P2P網路的樞紐 - 中央伺服器(如果有的話);一是進行檔案的造假,提供了一堆看起來是正版檔案的假檔,讓使用者浪費頻寬卻抓到一堆垃圾。另一方面,RIAA則是利用收集到的使用者記錄正式控告這些使用者,就像前一陣子,RIAA控告了一百多人,其中連老人與小孩都有;至於台灣的Kuro與Ezpeer也有數人被IFPI(International Federation of the Phonographic Industry)控告,而這些訴訟現在都正在法院審理中。
目前這兩股力量已經成為相互對抗的情勢,但事實上誰對誰錯還很難講,主要是一方面憲法保障言論與祕密通訊的自由,另一方面使用者未付款即可獲得版權內容也是事實,所以兩者之間似乎存在著些許矛盾。
當年的Napster在不久前關門大吉(現在轉型後又重新開張),而關門的原因很簡單,因為Napster的中央伺服器裡,記錄了數以億計的mp3檔案記錄,使用者之間的檔案搓合都是由該伺服器提供服務,這也間接表示Napster有幫助犯罪的嫌疑。事實上,只要是有中央伺服器進行有版權內容的檔案搓合的動作,幾乎都有幫助犯罪的嫌疑,且在法律上是不容易站得住腳。萬一有一天警調單位大動作進行抄台,讓所有的使用記錄都將呈現在陽光下時,這對於使用者來說是非常地危險。另外,P2P軟體開發者最好不要抱著教唆犯罪的觀點來引誘人使用P2P軟體,一方面在媒體上廣告宣稱有大量免費的版權內容檔案可以免費享用,一方面卻又宣稱自己這樣的做法無辜無罪,這種兩面手法其實自相矛盾。
總結
其實對於P2P和唱片業者,我們可以思考兩種解決方案,一種是兩邊進行合作,意即P2P業者將營收所得部份,回歸給版權內容的所有人,讓兩者相互合作,使P2P業者成為版權內容所有人的另一道收款窗口。另一種可能的合作,是讓P2P業者跳過唱片或電影公司直接與歌手或是表演者合作;而P2P業者的部份營收,則直接回饋給真正的製作人,不需要再透過唱片或電影公司。這兩種方案都有可能取代目前的P2P經營形式,進而成為新一代的商業機制,不過也有可能雙方永無交集之日。
從技術的角度來說,無中央伺服器的P2P網路非常容易成長,但卻非難以攻擊;主要是沒有瓶頸,所以成長的速度很快,但也因為沒有瓶頸,所以找不到著力點來攻擊,未來P2P的發展趨勢將會逐漸朝這個方向走去。
台灣目前的主流P2P軟體,似乎都停留在有中央伺服器的應用階段(僅有一個正在實驗中的P2P軟體Apia,宣稱已經做到無中央伺服器),主要的原因是這樣運作模式的軟體非常好設計,且中央伺服器主導了絕大多數的工作;不過這樣的設計,未來肯定會逐漸遇到瓶頸,並且也不太符合P2P的精神。在使用者對於安全隱私的要求越來越高之下,設計更好的運作機制對於新一代的P2P軟體來說,將會是更艱難的挑戰。有人說是魔高一尺,道高一丈,也有人說是道高一尺,魔高一丈,兩者之間的爭戰是要繼續走下去或是開啟合作先機,也許只能留待時間說分明了。
<作者為交通大學 資訊科學系博士班研究生,連絡方式:rollaned@sp.cis.nctu.edu.tw>
|
|
這是一個由微軟與多所美國知名大學(Rice、普渡、華盛頓)教授共同主持的計畫,該計畫目的在實驗一個完全無中心、可延伸與自我組織的網路系統,它可自動的調節收發與錯誤的節點,相關介紹請見「PAST/Pastry計畫」一文。 |
|
PlanetLab是一個開放性的全球分散系統測試計畫,提供全球性的開發、佈建與連結網路服務。目前已有超過220台機器在全球100個點支持各項短程或長程的實驗計畫,其測試的主題涵蓋了分散儲存、網路地圖、P2P系統等等,你可在「PlanetLab分散網路服務」一文中得到進一步的介紹。 |
|
目前在娛樂業的智財權保護部份,只有35%的受訪者非常關心智慧財產權的保護;另外則有38%的受訪者認為這一點都不重要,剩下的1/3則認為這雖然很重要,但在生意上並不是第一考量的要素,檔案共享的功能可能產生共享未授權的檔案的情形。除了限制未授權的檔案共享外,另一項P2P帶來的挑戰是找出一個方法來允許合法的檔案共享,以創造P2P的商機,在「P2P的商機」一文為你做了相關的評析。 |
|
|
|