P2P(peer-to-peer),即點(diǎn)對(duì)點(diǎn)網(wǎng)絡(luò),是隨著網(wǎng)絡(luò)的應(yīng)用而新興起的一門(mén)新技術(shù)。它主要指計(jì)算機(jī)之間弱化或取消了服務(wù)器的作用,以對(duì)等方式形成的網(wǎng)絡(luò)連接,各臺(tái)計(jì)算機(jī)可以意識(shí)到周圍其他計(jì)算機(jī)的存在,允許任意一臺(tái)計(jì)算機(jī)直接去訪問(wèn)其他計(jì)算機(jī)。
在P2P系統(tǒng)中,每個(gè)計(jì)算機(jī)被看作為一個(gè)節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)都與系統(tǒng)中的其他節(jié)點(diǎn)相連接。這樣,系統(tǒng)中所有節(jié)點(diǎn)及其鏈接形成一個(gè)覆蓋在物理網(wǎng)絡(luò)上的虛擬網(wǎng)絡(luò),該虛擬網(wǎng)絡(luò)稱為覆蓋網(wǎng)。在覆蓋網(wǎng)中任意兩個(gè)節(jié)點(diǎn)間可以通信,消息通過(guò)網(wǎng)絡(luò)的邊進(jìn)行傳播,節(jié)點(diǎn)之間完全平等。P2P技術(shù)允許客戶節(jié)點(diǎn)直接與其他節(jié)點(diǎn)建立一條通路,讀取其資源,以實(shí)現(xiàn)高效、快速地得到自己所需資源。P2P網(wǎng)絡(luò)中每個(gè)節(jié)點(diǎn)(即系統(tǒng)中的每臺(tái)計(jì)算機(jī)),都擔(dān)任了兩種角色:服務(wù)器節(jié)點(diǎn)——存儲(chǔ)信息,允許外來(lái)客戶機(jī)訪問(wèn)它所需要的信息;客戶端節(jié)點(diǎn)——允許到其他機(jī)器訪問(wèn)其所需資源。
P2P的應(yīng)用包括文件共享、即時(shí)消息、分布式計(jì)算、協(xié)同工作等,其中最主要的應(yīng)用為文件共享,即分享網(wǎng)絡(luò)中存在的可共享資源?!拔募蚕怼笔沟梦覀兯璧馁Y源絕大部分都可以通過(guò)網(wǎng)絡(luò)共享來(lái)得到;“即時(shí)消息”可以使我們通過(guò)MSN、QQ等IM軟件與遠(yuǎn)方的家人、朋友進(jìn)行及時(shí)快捷的交流;“分布式計(jì)算”把網(wǎng)絡(luò)中閑置的資源調(diào)度起來(lái)重新組合,高效快速地完成作業(yè),解決了龐大數(shù)據(jù)計(jì)算的花銷問(wèn)題;“協(xié)同工作”則把龐大的任務(wù)分配給不同人員,大家共同合作完成任務(wù),既增加系統(tǒng)處理任務(wù)的速度,又保障系統(tǒng)的高效性。P2P發(fā)展歷史
P2P的起源源自傳統(tǒng)的C/S模式,又稱為客戶/服務(wù)器模式。傳統(tǒng)的客戶/服務(wù)器模式嚴(yán)格區(qū)分服務(wù)器節(jié)點(diǎn)和客戶節(jié)點(diǎn)——所有相關(guān)信息都存放于服務(wù)器中,且傳輸數(shù)據(jù)也要經(jīng)過(guò)服務(wù)器。因此,當(dāng)客戶節(jié)點(diǎn)需要某種服務(wù)時(shí),則向服務(wù)器節(jié)點(diǎn)發(fā)送請(qǐng)求,服務(wù)器節(jié)點(diǎn)若有相關(guān)信息,則直接把相關(guān)信息傳遞給客戶節(jié)點(diǎn);否則把相關(guān)信息拷貝到自身,再傳遞給客戶節(jié)點(diǎn)。C/S模式具有安全性、可靠性高的優(yōu)點(diǎn),但同時(shí)因?yàn)樗械姆?wù)都經(jīng)過(guò)服務(wù)器,服務(wù)的健壯性、容錯(cuò)性相應(yīng)也變差。
而在P2P網(wǎng)絡(luò)中每個(gè)節(jié)點(diǎn)都可同時(shí)充當(dāng)客戶端和服務(wù)器兩種角色,具備信息消費(fèi)者、信息提供者和信息通信等三方面功能,可以解決傳統(tǒng)模式中由于網(wǎng)絡(luò)中的一個(gè)節(jié)點(diǎn)失效,從而導(dǎo)致該節(jié)點(diǎn)不能提供服務(wù)的“單點(diǎn)失效”問(wèn)題。但由于缺乏一個(gè)中心來(lái)管理網(wǎng)絡(luò)中的節(jié)點(diǎn),系統(tǒng)的可靠性、安全性相應(yīng)變差,管理也較難。圖1和圖2顯示了C/S模式和P2P模式的原理。
集中式網(wǎng)絡(luò)模型
P2P最初的發(fā)展是集中式的網(wǎng)絡(luò)模型,其典型的網(wǎng)絡(luò)模型為:Napster。1999年初,為了與自己的朋友在互聯(lián)網(wǎng)上共享MP3歌曲,18歲的美國(guó)東北大學(xué)學(xué)生肖恩·范寧開(kāi)發(fā)了基于P2P技術(shù)的Napster軟件。集中式P2P系統(tǒng)存在一個(gè)中心存儲(chǔ)器來(lái)存放共享文件的所有索引,當(dāng)一個(gè)節(jié)點(diǎn)請(qǐng)求一種資源時(shí),則向該中心存儲(chǔ)器發(fā)送請(qǐng)求,存儲(chǔ)器根據(jù)自己存放的索引信息發(fā)送一個(gè)回復(fù)信息,同時(shí)包含這些信息機(jī)器的地址,最后搜索資源節(jié)點(diǎn)直接請(qǐng)求這些機(jī)器,下載并分享這些資源。集中式P2P網(wǎng)絡(luò)模型雖然易管理,但同時(shí)在健壯性上也較差,且當(dāng)中心存儲(chǔ)器受到攻擊時(shí),容易造成信息丟失,安全性不高。當(dāng)服務(wù)器被攻擊或不能正常運(yùn)轉(zhuǎn)時(shí),則整個(gè)系統(tǒng)處于癱瘓,不能正常使用。
分布式網(wǎng)絡(luò)模型
P2P的第二代網(wǎng)絡(luò)模型為分布式網(wǎng)絡(luò),典型的代表為Gnutella。Gnutella是一個(gè)公開(kāi)、分布式的網(wǎng)絡(luò)環(huán)境,P2P的搜索協(xié)議主要用于查找和分享文件,計(jì)算機(jī)可以在應(yīng)用層上運(yùn)行Gnutella協(xié)議來(lái)完成分布式應(yīng)用,使之成為真正的P2P。純分布式P2P模型沒(méi)有中心存儲(chǔ)器,也沒(méi)有一個(gè)固定服務(wù)器,每個(gè)節(jié)點(diǎn)都可以充當(dāng)服務(wù)器和客戶節(jié)點(diǎn),各個(gè)節(jié)點(diǎn)與網(wǎng)絡(luò)中其它節(jié)點(diǎn)相互合作,提供索引,根據(jù)曾經(jīng)的服務(wù)過(guò)程建立相關(guān)連接,當(dāng)節(jié)點(diǎn)要享受某種服務(wù)時(shí),向它的鄰居節(jié)點(diǎn)發(fā)送請(qǐng)求,鄰居節(jié)點(diǎn)有資源,則提供;否則向其他節(jié)點(diǎn)傳送請(qǐng)求,如此往復(fù)。
混合式網(wǎng)絡(luò)模型
純分布式的P2P網(wǎng)絡(luò)雖然彌補(bǔ)了集中式P2P網(wǎng)絡(luò)的缺點(diǎn),同時(shí)由于其自身的結(jié)構(gòu),使其存在難以管理性,因此出現(xiàn)第三代P2P網(wǎng)絡(luò)模型。第三代的P2P網(wǎng)絡(luò)模型以混合式P2P網(wǎng)絡(luò)模型為主,它結(jié)合了前面兩者的優(yōu)缺點(diǎn)?;旌鲜絇2P網(wǎng)絡(luò)模型又稱為超級(jí)節(jié)點(diǎn)(Super-peer)P2P網(wǎng)絡(luò)模型。在此模型中,存在一些節(jié)點(diǎn)作為中心服務(wù)器節(jié)點(diǎn),在集中式P2P網(wǎng)絡(luò)模型中存放的索引信息現(xiàn)存放于這些節(jié)點(diǎn)當(dāng)中,這增強(qiáng)了集中式P2P網(wǎng)絡(luò)模型的健壯性和安全性,同時(shí)又比純分布式P2P網(wǎng)絡(luò)模型易管理。比較典型的例子為KaZaA。KaZaA在模型中存在很多可用的、功能強(qiáng)大的超級(jí)節(jié)點(diǎn),在模型中這些節(jié)點(diǎn)充當(dāng)服務(wù)器的作用。
第三代P2P網(wǎng)絡(luò)模型中比較典型的應(yīng)用為BT、電驢等應(yīng)用軟件。它根據(jù)節(jié)點(diǎn)自身的行為進(jìn)行判定其在系統(tǒng)中擔(dān)任的角色。BT(BitTorrent)應(yīng)用的原理即P2P原理。服務(wù)器A把文件分成許多小塊,節(jié)點(diǎn)B可以去下載這些小塊,當(dāng)B節(jié)點(diǎn)下載完一些塊時(shí),當(dāng)其他節(jié)點(diǎn)也想分享這些文件時(shí),除了可以分享服務(wù)器A上的資源外,還可以分享節(jié)點(diǎn)B上已經(jīng)下載好的那些資源塊。當(dāng)節(jié)點(diǎn)越多的時(shí)候則可以用來(lái)分享下載的塊就越多,下載速度就越快,并且每個(gè)節(jié)點(diǎn)可以下載不同的塊,然后進(jìn)行分享,這就避免了分享資源帶寬的限制,從而實(shí)現(xiàn)節(jié)點(diǎn)越多,下載速度也越快。
P2P發(fā)展障礙
P2P的發(fā)展存在著安全、搜索算法、存儲(chǔ)和應(yīng)用等四個(gè)方面的障礙。
安全
P2P是一個(gè)分布式環(huán)境,節(jié)點(diǎn)的加入和離開(kāi)是一件很頻繁的事情。P2P系統(tǒng)中節(jié)點(diǎn)具有匿名性,所以根據(jù)節(jié)點(diǎn)的行為對(duì)節(jié)點(diǎn)身份鑒定,以及判斷是否為可疑節(jié)點(diǎn),對(duì)系統(tǒng)的安全性都至關(guān)重要;其次,現(xiàn)在網(wǎng)絡(luò)安全也不再是單純的為了信息保密,同時(shí)也要考慮到信息的完整性、準(zhǔn)確性等各個(gè)方面;最后文件的可用性也十分重要,不管是下載的文件還是共享的文件,都應(yīng)具有其可用性。
搜索算法
在非結(jié)構(gòu)化P2P系統(tǒng)中,大多基于盲目搜索算法,進(jìn)而由之演變其他一些資源搜索算法,雖然可以解決“單點(diǎn)失效”問(wèn)題,但這些算法對(duì)網(wǎng)絡(luò)中資源消耗較大,且可靠性差。在結(jié)構(gòu)化P2P系統(tǒng)的資源搜索算法中,大多基于DHT技術(shù),盡管支持精確查找,可以提高查找的匹配成功率,保障系統(tǒng)安全性以及可靠性,卻不支持復(fù)雜查找,使得對(duì)信息的查找變得困難。
存儲(chǔ)
系統(tǒng)中每個(gè)節(jié)點(diǎn)都貢獻(xiàn)一定的存儲(chǔ)空間,并允許他們?nèi)ゲ榭创鎯?chǔ)在其他節(jié)點(diǎn)上的數(shù)據(jù)。怎樣高效、安全地裁剪不需要數(shù)據(jù)的復(fù)本越來(lái)越受到關(guān)注。
應(yīng)用
雖然P2P并非因盜版而生,但由于其技術(shù)特點(diǎn),可以便捷地對(duì)個(gè)人電腦里面的資源進(jìn)行傳播,使其成為版權(quán)保護(hù)的重要障礙之一。因此,P2P的應(yīng)用還面臨著不斷的法律糾紛。
P2P發(fā)展展望
雖然影響P2P技術(shù)發(fā)展的障礙仍然存在,但解決思路也越來(lái)越清晰:
安全方面,可以通過(guò)在現(xiàn)有技術(shù)中增加安全協(xié)議以及數(shù)字認(rèn)證等相關(guān)技術(shù)進(jìn)行解決。比如,可以建立基于PKI的可信模型和基于名譽(yù)和推薦的可信模型來(lái)確保系統(tǒng)安全性。
應(yīng)用方面,可以嘗試通過(guò)建立P2P產(chǎn)業(yè)鏈來(lái)進(jìn)行利益分配,形成一個(gè)權(quán)利人、網(wǎng)絡(luò)服務(wù)商和用戶之間利益平衡和再分配的新機(jī)制來(lái)解決這個(gè)問(wèn)題。
實(shí)際上,除了應(yīng)用較多的即時(shí)通信和文件共享之外,流媒體、游戲、協(xié)作和分布計(jì)算以及面向企業(yè)的P2P也都預(yù)示著P2P應(yīng)用發(fā)展的新方向。我們有理由相信,隨著P2P和新技術(shù)的融合,將會(huì)開(kāi)拓更多新的領(lǐng)域,創(chuàng)造出無(wú)窮無(wú)盡的新應(yīng)用,P2P的發(fā)展將不可估量!