P2P,即英文Peer-to-Peer的縮寫,中譯為對等互聯或點對點技術。它差別與傳統的用戶端/伺服器(C/S)或浏覽器/伺服器(B/S)模式,最大的不同是降低了對伺服器的依賴,在P2P網絡中各Peer之間的關系是對等的,Peer同時具有Client和Server的特點。它們可以直接通信,進行檔案傳輸,無需依賴集中式伺服器或資源就可完成。它在寬帶網絡方面具備強大的應用潛力并解決了網際網路模型中的弱連結子產品的資訊傳遞這個障礙,使得網際網路的資訊流動更加通暢。
P2P改變了Internet以大網站為中心的狀态、重返"非中心化",并把權力交還給使用者。從某種意義上講,P2P展現了Internet的本質,進而滿足了人們資訊共享與消息傳遞的網絡需求。
(一) 常用P2P協定
一、Napster:世界上第一個大型的P2P應用網絡;中央集中式,倒閉了。
Napster,這是當時很火的一種共享服務,主要用于查找mp3,它有一個伺服器用于存儲mp3檔案的連結位置并提供檢索,而真正的mp3檔案則存放在千千萬萬的個人電腦上,搜尋到的檔案通過P2P方式直接在個人電腦間傳播共享。這種方式的缺點就是需要一台伺服器,在mp3檔案版權之争火熱的年代,Napster很快就成為衆矢之的,被衆多唱片公司訴訟侵犯版權而被迫關閉。當然伺服器一關Napster也就不複存在。
二、Gnutella和Gnutella2(Gnutella2是對Gnutella的改進和擴充):開源的;第一個真正非中心的無結構P2P網絡,檔案查詢采用洪泛方式。
Gnutella吸取了Napster的失敗教訓,将P2P的理念更推進一步:它不存在中樞目錄伺服器,所有資料都放在個人電腦上。使用者隻要安裝了該軟體,就将自己的電腦立即變成一台能夠提供完整目錄和檔案服務的伺服器,并會自動搜尋其它同類伺服器,進而聯成一台由無數PC組成的超級伺服器網絡。傳統網絡的Server和Client在它的面前被重新定義。
三、FastTrack:
第一個用戶端是KazaA。協定與Gnutella類似。02-03年的最大使用者網,05年退至第三名。衰退原因是這個網絡無法應對衆多使用者同時使用,而且有版權擁有者pollution的行為,以及間諜軟體的問題。
iMesh也是以FastTrack為協定的。
四、eDonkey,overnet,kad:
自私的人們在利用P2P軟體的時候大多隻願“擷取”,而不願“共享”,P2P的發展遇到了意識的發展瓶頸。不過,一頭“驢”很快改變了遊戲規則,這就是電驢-eDonkey,它引入了強制共享機制。
eDeonkey将網絡節點分成伺服器層和客戶層,并且将檔案分塊以提高下載下傳速度。eDonkey網絡下最普及的p2p用戶端程式是eDonkey2000和emule。Emule是eDonkey的後繼,但是更出色,采用了DHT來建構底層網絡拓撲,目前非常流行的P2P檔案共享軟體。
overnet設計的目的是取代eDonkey,它沒有中心伺服器,但使用者數少于eDonkey。
Kademlia 協定,在這裡叫做kad網絡,采用UDP方式通信。很類似于overnet,幾乎隻有eDonkey使用者使用它。
五、BitTorrent:借助分散式伺服器提供共享檔案索引的混合式P2P網絡,檔案分片下載下傳。
下載下傳速度高,沒有查找功能,種子具有時效性。它将中心目錄伺服器的穩定性同優化的分布式檔案管理結合起來。
六、Direct Connect:
一種常用在小的網絡和大學内部網絡中的協定,适用于小網絡環境中,DC++是常見用戶端。
七、Ares:類似Gnutella網絡。
(二) 現有P2P技術主要涉及的領域和發展方向
(1)提供檔案和其它内容共享的P2P網絡,例如Napster、Gnotella、Freenet、CAN、eDonkey、eMule、BitTorrent等。
(2)基于P2P方式的協同處理與服務共享平台,例如JXTA、Magi、Groove、.NETMy Service等。
(3)即時通訊交流,包括ICQ、OICQ、Yahoo Messenger等。
(4)安全的P2P通訊與資訊共享,利用P2P無中心的特性可以為隐私保護和匿名通訊提供新的技術手段。例如CliqueNet、Crowds、Onion Routing等。
(6)網格計算,挖掘P2P分布計算能力。使用P2P技術以集中那些聯接在網絡上的電腦的空閑的CPU時間片斷、記憶體空間、硬碟空間來替代“超級計算機”。例如SETI@home、Avaki、Popular Power、distributed.net等。網格計算的宗旨是:将遍布全球的數以萬計的計算節點通過高速Internet連接配接并組織成一個巨系統,使其能夠透明、高效地完成複雜計算任務。
(7)IBM、微軟、Ariba也在合作開展一個名為UDDI的項目以将B2B電子商務标準化
(8)Eazel正在建立下一代的Linux桌面。
(9)Jabber已經開發了一種基于XML、開放的即時訊息标準,Jabber被認為是建立了未來使用P2P資料交換的标準。
(10)Lotus Notes的開發者建立的Groove試圖“幫助人們以全新的方式溝通”。
(11)英特爾也在推廣它的P2P技術以幫助更有效地使用晶片的計算能力。
(三) P2P資源定位方式
P2P網絡中進行資源定位是首先要解決問題。一般采用三種方式:
(1)集中方式索引
每一個節點将自身能夠提供共享的内容注冊到一個或幾個集中式的目錄伺服器中。查找資源時首先通過伺服器定位,然後兩個節點之間再直接通訊。例如早期的Napster。這類網絡實作簡單,但往往需要大的目錄伺服器的支援,并且系統的健壯性不好。
(2)廣播方式
沒有任何索引資訊,内容送出與内容查找都通過相鄰接節點直接廣播傳遞。例如Gnutella。一般情況下,采取這種方式的P2P網絡對參與節點的帶寬要求比較高。
(3)動态哈希表的方式
上述兩種定位方式可以依據不同的P2P應用環境進行選擇,但是人們普遍看好DHT(Distributed Hash Table,分散式雜湊表)方式。基于DHT的P2P網絡在一定程度上可以直接實作内容的定位。一個沖突的問題是:如果一個節點提供共享的内容表示越複雜,則哈希函數越不好選擇;相應的,網絡的拓撲結構就越複雜。而如果内容表示簡單,則又達不到真正實作依據内容定位的能力。目前大多數DHT方式的P2P網絡對節點所提供共享内容的表示都很簡單,一般僅僅為檔案名。
本文轉自 fanxiaojun 51CTO部落格,原文連結:http://blog.51cto.com/2343338/477765,如需轉載請自行聯系原作者