摘 要:自P2P技術(shù)誕生,它的應(yīng)用立刻以迅猛的速度傳播、發(fā)展。應(yīng)用的普及程度,令人贊嘆。通過(guò)回顧P2P技術(shù)的發(fā)展歷史,結(jié)合P2P構(gòu)架、工作原理、算法、檢索方式等內(nèi)容,對(duì)P2P這一時(shí)下炙手可熱的技術(shù)進(jìn)行詳細(xì)討論。
關(guān)鍵詞:歷史;構(gòu)架;工作原理;算法
中圖分類號(hào):TP
文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1672-3198(2010)08-0283-03
1 引言
互聯(lián)網(wǎng)能夠發(fā)展至今,根本原因在于其布建的任何一根血脈都是為人與人之間的交流而設(shè)置的。而現(xiàn)在能夠引起互聯(lián)網(wǎng)震動(dòng)的,無(wú)非也只有交流方式的變革本身。如今,在基于網(wǎng)絡(luò)的各種技術(shù)充斥于我們周圍之時(shí),恐怕只有很少人不知道P2P的概念了,即便您沒(méi)有深入探究,但您每日在互聯(lián)網(wǎng)間進(jìn)行的活動(dòng)幾乎沒(méi)有不沾P2P技術(shù)的。一個(gè)簡(jiǎn)單的例子,在你使用QQ盡情聊天之時(shí),實(shí)際上就享受著P2P技術(shù)給你帶來(lái)的快感與興奮。P2P技術(shù)究竟意味著什么呢?
2 P2P概念
2.1 P2P的構(gòu)架
網(wǎng)絡(luò)上流行的P2P軟件的架構(gòu)手段主要有兩種:集中式和分布式。
集中式:便是利用服務(wù)器作為媒介使各個(gè)分散的節(jié)點(diǎn)(用戶)能互相聯(lián)系,生成各種服務(wù)響應(yīng)各節(jié)點(diǎn)的業(yè)務(wù)需求,各節(jié)點(diǎn)一旦建立聯(lián)系,便可互相共亨對(duì)方資源,這種方式可使各節(jié)點(diǎn)定位比較容易,易于搜索,查找,使各節(jié)點(diǎn)間容易建立比較固定的關(guān)系,使得在此平臺(tái)上開(kāi)發(fā)進(jìn)一步的應(yīng)用更加易于推廣;但這種方式對(duì)服務(wù)器性能要求也很高,應(yīng)用系統(tǒng)功能越強(qiáng)大,對(duì)服務(wù)器的要求就越高,比如搜索,在此方式下如要提高搜索的命中和降低搜索的冗余,則必須提高結(jié)點(diǎn)對(duì)服務(wù)器的請(qǐng)求次數(shù),增加了服務(wù)器資源的消耗;在這種架構(gòu)中可以利用技術(shù)手段使得某些大節(jié)點(diǎn)分擔(dān)一些服務(wù)器的功能,從而降低服務(wù)器的負(fù)荷。
分布式:每個(gè)節(jié)點(diǎn)即做服務(wù)器又做客戶端,這種方式非常靈活,一個(gè)孤立的節(jié)點(diǎn)只要連上此P2P網(wǎng)絡(luò)內(nèi)的任一節(jié)點(diǎn)便可與此網(wǎng)絡(luò)進(jìn)行資源互享,事實(shí)上,這種方式宏觀來(lái)看應(yīng)屬于Peer-to-Net(PTN),任何一個(gè)節(jié)點(diǎn)只是此網(wǎng)絡(luò)的一個(gè)組成部分,任何一個(gè)節(jié)點(diǎn)只是從此網(wǎng)絡(luò)上獲取資源,它可以在一個(gè)公司或企業(yè)內(nèi)部無(wú)需額外配置而實(shí)現(xiàn)一個(gè)企業(yè)內(nèi)部P2P系統(tǒng),這此方式搜索功能強(qiáng)大而靈活,能夠體現(xiàn)出P2P的本質(zhì);由于架構(gòu)的原因,此方式節(jié)點(diǎn)定位能力極差,無(wú)法使節(jié)點(diǎn)之間產(chǎn)生比較固定的關(guān)系,搜索能力雖然靈活強(qiáng)大,但冗余較大,如果技術(shù)手段處理不好很容易產(chǎn)生廣播風(fēng)暴,引起網(wǎng)路資源的大量消耗,且些架構(gòu)的技術(shù)實(shí)現(xiàn)難度極大,在國(guó)外特別是美國(guó),此種架構(gòu)應(yīng)用較為廣泛;原因之一便是網(wǎng)絡(luò)環(huán)境因素,之二便是社會(huì)因素;國(guó)內(nèi)網(wǎng)絡(luò)環(huán)境較為復(fù)雜,最為突出的便是局域網(wǎng)問(wèn)題,這種復(fù)雜的網(wǎng)絡(luò)環(huán)境對(duì)這種架構(gòu)的技術(shù)要求就更加重要了,再有就是社會(huì)因素也使得國(guó)內(nèi)的P2P趨向的集中式的架構(gòu)模式。
2.2 P2P工作原理
計(jì)算機(jī)網(wǎng)絡(luò)發(fā)展演化過(guò)程是在集中和分布之間擺動(dòng)。早期的計(jì)算機(jī)使用模式是眾多用戶共享大型計(jì)算機(jī),以后發(fā)展了個(gè)人計(jì)算機(jī),從集中走向分布。在互聯(lián)網(wǎng)上存在類似情況,開(kāi)始采用客戶機(jī)(瀏覽器)-服務(wù)器方式,使用網(wǎng)站上集中的服務(wù)器。進(jìn)一步發(fā)展將走向分布式,集中的服務(wù)器將變成分布的,每一個(gè)用戶終端既是客戶機(jī)又是服務(wù)器,這就是對(duì)等連接peer to peer(簡(jiǎn)稱P2P)模式。
近年來(lái),互聯(lián)網(wǎng)上P2P業(yè)務(wù)發(fā)展迅速,已經(jīng)成為寬帶互聯(lián)網(wǎng)業(yè)務(wù)的主流。P2P技術(shù)將各個(gè)用戶互相結(jié)合成一個(gè)網(wǎng)絡(luò),共享其中的寬帶,共同處理其中的信息。與傳統(tǒng)的客戶機(jī)——服務(wù)器模式不同,P2P工作方式中,每一個(gè)客戶終端既是客戶機(jī)又是服務(wù)器。以共享下載文件為例,下載同一個(gè)文件的眾多用戶中的每一個(gè)用戶終端只需要下載文件的一個(gè)片段,然后互相交換,最終每個(gè)用戶都能得到完整的文件。
第一代P2P網(wǎng)絡(luò)采用中央控制網(wǎng)絡(luò)體系結(jié)構(gòu)。早期的Napster就采用這種結(jié)構(gòu)。它采用快速搜索算法,排隊(duì)響應(yīng)時(shí)間短,使用簡(jiǎn)單的協(xié)議能夠提供高性能和彈性,缺點(diǎn)是容易中斷服務(wù)。
第二代P2P采用分散分布網(wǎng)絡(luò)體系結(jié)構(gòu)。不再使用中央服務(wù)器,消除了中央服務(wù)器帶來(lái)的問(wèn)題。沒(méi)有中央控制點(diǎn),不會(huì)因?yàn)橐稽c(diǎn)故障導(dǎo)致全部癱瘓,是真正的分布式網(wǎng)絡(luò)。由于每次搜索都要在全網(wǎng)進(jìn)行,造成大量網(wǎng)絡(luò)流量,使得其搜索速度慢,排隊(duì)響應(yīng)時(shí)間長(zhǎng)。用戶PC性能及其與網(wǎng)絡(luò)連接方式?jīng)Q定網(wǎng)絡(luò)彈性和性能。這種模式具有自組織(ad-hoc)行為,降低了擁有者的成本,提供可擴(kuò)展性。特別適合在自組織(ad-hoc)網(wǎng)上的應(yīng)用,如即時(shí)通信等。
第三代P2P采用混合網(wǎng)絡(luò)體系結(jié)構(gòu)。這種模式綜合第一代和第二代的優(yōu)點(diǎn),用分布的超級(jí)結(jié)點(diǎn)取代中央檢索服務(wù)器。采用分層次的快速搜索改進(jìn)了搜索性能,縮短了排隊(duì)響應(yīng)時(shí)間,每次排隊(duì)產(chǎn)生的流量低于第二代分布網(wǎng)絡(luò)。超級(jí)智能結(jié)點(diǎn)的布設(shè)提供高性能和彈性。沒(méi)有中央控制點(diǎn),不會(huì)因?yàn)橐稽c(diǎn)故障導(dǎo)致全部癱瘓。內(nèi)容被分布存儲(chǔ)在分布的存儲(chǔ)器和客戶終端中。通過(guò)快速檢索系統(tǒng)可以快速發(fā)現(xiàn)內(nèi)容分布存儲(chǔ)的位置。目前常用的P2P軟件有BT,edonky和Gnutella等,這些軟件采用“快速追蹤”技術(shù)構(gòu)成P2P網(wǎng)絡(luò),有著許多傳統(tǒng)客戶機(jī)-服務(wù)器網(wǎng)絡(luò)所沒(méi)有的優(yōu)點(diǎn)。技術(shù)上不但可以大大的減少文件搜尋的時(shí)間,更重要的是可以不用昂貴的中央控制硬件設(shè)備(服務(wù)器等)。這種P2P網(wǎng)絡(luò)使用終端本身電腦的處理能力,網(wǎng)絡(luò)處理能力隨著終端使用者人數(shù)增長(zhǎng)而增加。
第四代P2P目前正在發(fā)展中。主要發(fā)展技術(shù)有動(dòng)態(tài)口選擇和雙向下載。動(dòng)態(tài)口選擇:目前P2P使用固定的口,但是一些公司已經(jīng)開(kāi)始引入?yún)f(xié)議可以動(dòng)態(tài)選擇傳輸口,一般來(lái)說(shuō),口的數(shù)目在1024-4000之間。甚至P2P流可以用原來(lái)用于HTTP(SMTP)的口80(25)來(lái)傳輸以便隱藏。這將使得識(shí)別跨運(yùn)營(yíng)商網(wǎng)絡(luò)的P2P流,掌握其流量變得更困難。雙向下載:eD和BT等公司進(jìn)一步發(fā)展引入雙向流下載。可以多路并行下載和上載一個(gè)文件或多路并行下載一個(gè)文件的一部分。而目前傳統(tǒng)的體系結(jié)構(gòu)要求目標(biāo)在完全下載后才能開(kāi)始上載。這將大大加快文件分發(fā)速度。
2.3 P2P的過(guò)去
如果說(shuō)涉及此種特點(diǎn)便稱之為信息技術(shù)中的P2P的誕生,那么它的歷史這可就遠(yuǎn)了。P2P本身的基本技術(shù)的存在時(shí)間和我們?cè)?jīng)熟悉的USENET、FidoNet這兩種非常成功的分布式對(duì)等網(wǎng)絡(luò)技術(shù)幾乎是一同的,甚至更長(zhǎng)些。翻翻資料就可以知道,USENET產(chǎn)生于1979年,F(xiàn)idoNet創(chuàng)建1984年,它們都是一個(gè)分散、分布的信息交換系統(tǒng)。在最初的P2P應(yīng)用出現(xiàn)時(shí),許多使用該技術(shù)的人們甚至不會(huì)使用計(jì)算機(jī)。然而正是這種孕育著思想的網(wǎng)絡(luò)技術(shù)為P2P的出現(xiàn)搭建了溫床。P2P正式步入發(fā)展的歷史可以追溯到1997年7月,那幾乎就是互聯(lián)網(wǎng)在中國(guó)起步的階段。在一段介紹此時(shí)P2P技術(shù)的時(shí)間表中這樣寫(xiě)著:“HotlineCommunications is founded, giving consumers software that lets them offer files for download from their own computers.”(1997年7月,Hotline Communications公司成立,并且研制了一種可以使其用戶從別人電腦中直接下載東西的軟件)?;蛟S有人還記得,早在1998年,美國(guó)東北波士頓大學(xué)的一年級(jí)新生、18歲的肖恩·范寧為了能夠解決他的室友的一個(gè)問(wèn)題——如何在網(wǎng)上找到音樂(lè)而編寫(xiě)的一個(gè)簡(jiǎn)單的程序,這個(gè)程序能夠搜索音樂(lè)文件并提供檢索,把所有的音樂(lè)文件地址存放在一個(gè)集中的服務(wù)器中,這樣使用者就能夠方便地過(guò)濾上百的地址而找到自己需要的MP3文件。到了1999年,令他們沒(méi)有想到的是,這個(gè)叫做Napster的程序成為了人們爭(zhēng)相轉(zhuǎn)告的“殺手程序”——它令無(wú)數(shù)散布在互聯(lián)網(wǎng)上的音樂(lè)愛(ài)好者美夢(mèng)成真,無(wú)數(shù)人在一夜之內(nèi)開(kāi)始使用Napster。在最高峰時(shí)Napster網(wǎng)絡(luò)有8000萬(wàn)的注冊(cè)用戶,這是一個(gè)讓其他所有網(wǎng)絡(luò)望塵莫及的數(shù)字。這大概可以作為P2P軟件成功進(jìn)入人們生活的一個(gè)標(biāo)志。
2.4 P2P的現(xiàn)狀
直到現(xiàn)在使用P2P技術(shù)的軟件比比皆是,人們也在不知不覺(jué)中感受到了P2P作為高科技發(fā)展載體的快樂(lè)。平常我們使用的QQ、MSN就不提了,其他軟件更是鋪天蓋地,讓人目不暇接:eMule、迅雷Thunder、Kuro M3、酷狗(KuG-oo)、BT等等。歷史總是在曲折中前進(jìn),任何新事物的發(fā)展總不會(huì)是一帆風(fēng)順的。2000年用于共享MP3音樂(lè)的Napster軟件與美國(guó)唱片界的一場(chǎng)官司將P2P技術(shù)與版權(quán)爭(zhēng)議帶進(jìn)了人們的視線,就在今天,就在此時(shí),爭(zhēng)議仍然不絕于耳。國(guó)外有關(guān)于P2P技術(shù)的糾紛一發(fā)而不可收拾,這種全新的極富生命力的傳輸方式從一誕生就和音樂(lè),和版權(quán)聯(lián)系在一起。為什么會(huì)引起音樂(lè)制作商們這么大恐慌?顯然是其前所未有的傳輸速度挑起了他們的不安。在他們極力攔截還沒(méi)有來(lái)得及開(kāi)始的時(shí)候,一首歌曲便以迅雷不及掩耳之勢(shì)傳遍了整個(gè)互聯(lián)網(wǎng),而更加確切的說(shuō)應(yīng)該是全球,這顯然是傳統(tǒng)的盜版方式所不能比擬的。
3 P2P的信息檢索方式簡(jiǎn)述
3.1 非結(jié)構(gòu)化P2P搜索
非結(jié)構(gòu)化P2P系統(tǒng)中發(fā)現(xiàn)技術(shù)一直采用洪泛轉(zhuǎn)發(fā)的方式,這類研究可以抽象為如何從一個(gè)隨機(jī)圖中的任一節(jié)點(diǎn)出發(fā)定位目標(biāo)點(diǎn),使得整個(gè)過(guò)程遍歷的點(diǎn)的個(gè)數(shù)最少。
3.2 結(jié)構(gòu)化P2P搜索
在結(jié)構(gòu)化網(wǎng)絡(luò)中,每個(gè)節(jié)點(diǎn)都有固定的編址,整個(gè)網(wǎng)絡(luò)具有相對(duì)穩(wěn)定而規(guī)則的拓?fù)浣Y(jié)構(gòu)。這類網(wǎng)絡(luò)都是采用了DHT算法。無(wú)需目錄服務(wù)器的DHT動(dòng)態(tài)哈希表技術(shù),實(shí)際上也是一種特殊的目錄服務(wù)器,只不過(guò)把中央目錄服務(wù)器變?yōu)楹芏嘈∧夸浄?wù)器。時(shí)下流行的P2P軟件如BT、電驢等均使用DHT算法。
3.3 基于興趣的P2P搜索
這類方法基于這樣的原則:每個(gè)節(jié)點(diǎn)都表現(xiàn)出某些可以捕捉到的興趣,相近興趣的節(jié)點(diǎn)保存的內(nèi)容和提交的查詢也相近。通過(guò)挖掘每個(gè)節(jié)點(diǎn)的興趣。把節(jié)點(diǎn)按照興趣關(guān)系組成網(wǎng)絡(luò),使得興趣相近的節(jié)點(diǎn)在網(wǎng)絡(luò)中比較近。
4 P2P軟件算法淺析
隨著P2P應(yīng)用的蓬勃發(fā)展,作為P2P應(yīng)用中核心問(wèn)題的發(fā)現(xiàn)技術(shù)除了遵循技術(shù)本身的邏輯以外,也受到某些技術(shù)的發(fā)展趨勢(shì)、需求趨勢(shì)的深刻影響。如上所述,DHT發(fā)現(xiàn)技術(shù)完全建立在確定性拓?fù)浣Y(jié)構(gòu)的基礎(chǔ)上,從而表現(xiàn)出對(duì)網(wǎng)絡(luò)中路由的指導(dǎo)性和網(wǎng)絡(luò)中結(jié)點(diǎn)與數(shù)據(jù)管理的較強(qiáng)控制力。但是,對(duì)確定性結(jié)構(gòu)的認(rèn)識(shí)又限制了發(fā)現(xiàn)算法效率的提升。研究分析了目前基于DHT的發(fā)現(xiàn)算法,發(fā)現(xiàn)衡量發(fā)現(xiàn)算法的兩個(gè)重要參數(shù)度數(shù)(表示鄰居關(guān)系數(shù)、路由表的容量)和鏈路長(zhǎng)度(發(fā)現(xiàn)算法的平均路徑長(zhǎng)度)之間存在漸進(jìn)曲線的關(guān)系。研究者采用圖論中度數(shù)(Degree)和直徑(Diameter)兩個(gè)參數(shù)研究DHT發(fā)現(xiàn)算法,發(fā)現(xiàn)這些DHT發(fā)現(xiàn)算法在度數(shù)和直徑之間存在漸進(jìn)曲線關(guān)系,如下圖所示。在N個(gè)結(jié)點(diǎn)網(wǎng)絡(luò)中,圖中直觀顯示出當(dāng)度數(shù)為N時(shí),發(fā)現(xiàn)算法的直徑為O(1);當(dāng)每個(gè)結(jié)點(diǎn)僅維護(hù)一個(gè)鄰居時(shí),發(fā)現(xiàn)算法的直徑為O(N)。這是度數(shù)和直徑關(guān)系的2種極端情況。同時(shí),研究以圖論的理論分析了O(d)的度和O(d)的直徑的算法是不可能的。從漸進(jìn)曲線關(guān)系可以看出,如果想獲得更短的路徑長(zhǎng)度,必然導(dǎo)致度數(shù)的增加;而網(wǎng)絡(luò)實(shí)際連接狀態(tài)的變化造成大度數(shù)鄰居關(guān)系的維護(hù)復(fù)雜程度增加。另外,研究者證明O(logN)甚至O(logN/loglogN)的平均路徑長(zhǎng)度也不能滿足狀態(tài)變化劇烈的網(wǎng)絡(luò)應(yīng)用的需求。新的發(fā)現(xiàn)算法受到這種折衷關(guān)系制約的根本原因在于DHT對(duì)網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)的確定性認(rèn)識(shí)。非結(jié)構(gòu)化P2P系統(tǒng)中發(fā)現(xiàn)技術(shù)一直采用洪泛轉(zhuǎn)發(fā)的方式,與DHT的啟發(fā)式發(fā)現(xiàn)算法相比,可靠性差,對(duì)網(wǎng)絡(luò)資源的消耗較大。最新的研究從提高發(fā)現(xiàn)算法的可靠性和尋找隨機(jī)圖中的最短路徑兩個(gè)方面展開(kāi)。也就是對(duì)重疊網(wǎng)絡(luò)的重新認(rèn)識(shí)。其中,small world特征和冪規(guī)律證明實(shí)際網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)既不是非結(jié)構(gòu)化系統(tǒng)所認(rèn)識(shí)的一個(gè)完全隨機(jī)圖,也不是DHT發(fā)現(xiàn)算法采用的確定性拓?fù)浣Y(jié)構(gòu)。實(shí)際網(wǎng)絡(luò)體現(xiàn)的冪規(guī)律分布的含義可以簡(jiǎn)單解釋為在網(wǎng)絡(luò)中有少數(shù)結(jié)點(diǎn)有較高的“度”,多數(shù)結(jié)點(diǎn)的“度”較低。度較高的結(jié)點(diǎn)同其他結(jié)點(diǎn)的聯(lián)系比較多,通過(guò)它找到待查信息的概率較高。Small-world[a][b]模型的特性:網(wǎng)絡(luò)拓?fù)渚哂懈呔奂群投替湹奶匦?。在符合small world特性的網(wǎng)絡(luò)模型中,可以根據(jù)結(jié)點(diǎn)的聚集度將結(jié)點(diǎn)劃分為若干簇(Cluster),在每個(gè)簇中至少存在一個(gè)度最高的結(jié)點(diǎn)為中心結(jié)點(diǎn)。大量研究證明了以Gnutella為代表的P2P網(wǎng)絡(luò)符合small world特征,也就是網(wǎng)絡(luò)中存在大量高連通結(jié)點(diǎn),部分結(jié)點(diǎn)之間存在“短鏈”現(xiàn)象。因此,P2P發(fā)現(xiàn)算法中如何縮短路徑長(zhǎng)度的問(wèn)題變成了如何找到這些“短鏈”的問(wèn)題。尤其是在DHT發(fā)現(xiàn)算法中,如何產(chǎn)生和找到“短鏈”是發(fā)現(xiàn)算法設(shè)計(jì)的一個(gè)新的思路。small world特征的引入會(huì)對(duì)P2P發(fā)現(xiàn)算法產(chǎn)生重大影響。
結(jié)論:P2P對(duì)于用戶最大的意義,不是它的技術(shù)和功能,而是它的理念。這種理念源于人們互聯(lián)網(wǎng)的憧憬和夢(mèng)想,它使網(wǎng)絡(luò)回歸到Internet的本質(zhì),讓共享與自由的精神充滿網(wǎng)絡(luò)世界。中國(guó)P2P的發(fā)展,必將經(jīng)歷一個(gè)從技術(shù)到理念的過(guò)渡,技術(shù)的不斷進(jìn)步為中國(guó)P2P的發(fā)展鋪平道路,而理念的不斷更新,則為中國(guó)P2P的發(fā)展指明方向。未來(lái)的競(jìng)爭(zhēng),不再僅僅以技術(shù)為導(dǎo)向,誰(shuí)能以P2P的理念創(chuàng)造為網(wǎng)民所接受和留戀的產(chǎn)品和文化,誰(shuí)才會(huì)最終奪得P2P勝利之杯。
參考文獻(xiàn)
[1]I. Stoica, R. Morris, D. Karger, F. Kasshoek, and H. Balakrishnan. Chord: A scalable peer-to-peer lookup service for internet applications. In Proceedings ACM SIGCOMM, 2001.
[2]中國(guó)P2P流媒體研究報(bào)告[R].2007.
[3]呂向辰.P2P技術(shù)與應(yīng)用[J].計(jì)算機(jī)世界,2001,(28).
[4]呂建明,劉悅,丁林.P2P與信息檢索[J].信息技術(shù)快報(bào),2005,(2).
[5]宋建濤,沙朝鋒,楊智應(yīng),朱洪.語(yǔ)義對(duì)等網(wǎng)構(gòu)造及搜索機(jī)制研究[J].計(jì)算機(jī)研究與發(fā)展,2004,(4).