轉帖allen303allen的空間node
做 者:金海 廖小飛安全
摘要:對等網絡(P2P)有3種主要的組織結構:分佈式哈希表(DHT)結構、樹形結構、網狀結構。P2P技術已 經延伸到幾乎全部的網絡應用領域,如分佈式科學計算、文件共享、流媒體直播與點播、語音通訊及在線遊戲支撐平臺等方面。如今人們已經開始將重心轉入到覆蓋 層網絡的節點延時彙集研究、覆蓋網之間(Inter-Overlay)優化研究、P2P支撐平臺研究以及P2P安全研究等方面。服務器
關鍵詞:對等網絡;分佈式哈希表;覆蓋層網絡網絡
Abstract:ThePeer-to-peer(P2P)network has three main structures: Distributed Hash Table (DHT) structure, tree structure, and mesh structure. P2P technology has been extended to almost all areas of network applications, including distributed scientific computing, file sharing, streaming media on-demand and live broadcast, voice communications, and online gaming support platform. Now, study areas such as node latency aggregation for overlay network, Inter-Overlay optimization, P2P supporting platform, and P2P security are receiving more attention.架構
Keywords:P2P;distributedHash table; overlay networkapp
1 P2P技術原理分佈式
什麼是對等網絡(P2P)技術?P2P技術屬於覆蓋層網絡(Overlay Network)的範疇,是相對於客戶機/服務器(C/S)模式來講的一種網絡信息交換方 式。在C/S模式中,數據的分發採用專門的服務器,多個客戶端都今後服務器獲取數據。這種模式的優勢是:數據的一致性容易控制,系統也容易管理。可是此種 模式的缺點是:由於服務器的個數只有一個(即使有多個也很是有限),系統容易出現單一失效點;單一服務器面對衆多的客戶端,因爲CPU能力、內存大小、網 絡帶寬的限制,可同時服務的客戶端很是有限,可擴展性差。P2P技術正是爲了解決這些問題而提出來的一種對等網絡結構。在P2P網絡中,每一個節點既能夠從 其餘節點獲得服務,也能夠向其餘節點提供服務。這樣,龐大的終端資源被利用起來,一舉解決了C/S模式中的兩個弊端。工具
P2P網絡有3種比較流行的組織結構,被應用在不一樣的P2P應用中。性能
(1)DHT結構優化
分佈式哈希表(DHT)[1]是一種功能強大的工具,它的提出引發了學術界一股研究DHT的熱潮。雖然DHT具備各類各樣的實現方式,可是具備共同的特 徵,即都是一個環行拓撲結構,在這個結構裏每一個節點具備一個惟一的節點標識(ID),節點ID是一個128位的哈希值。每一個節點都在路由表裏保存了其餘前 驅、後繼節點的ID。如圖1(a)所示。經過這些路由信息,能夠方便地找到其餘節點。這種結構多用於文件共享和做爲底層結構用於流媒體傳輸[2]。
(2)樹形結構
P2P網絡樹形結構如圖1(b)所示。在這種結構中,全部的節點都被組織在一棵樹中,樹根只有子節點,樹葉只有父節點,其餘節點既有子節點也有父節點。信息的流向沿着樹枝流動。最初的樹形結構多用於P2P流媒體直播[3-4]。
(3)網狀結構
網狀結構如圖1(c)所示,又叫無結構。顧名思義,這種結構中,全部的節點無規則地連在一塊兒,沒有穩定的關係,沒有父子關係。網狀結構[5]爲P2P提供 了最大的容忍性、動態適應性,在流媒體直播和點播應用中取得了極大的成功。當網絡變得很大時,經常會引入超級節點的概念,超級節點能夠和任何一種以上結構 結合起來組成新的結構,如KaZaA[6]。
2 P2P技術應用現狀
因爲可以極大緩解傳統架構中服務器端的壓力過大、單一失效點等問題,又能充分利用終端的豐富資源,因此P2P技術被普遍應用於計算機網絡的各個應用領域,如分佈式科學計算、文件共享、流媒體直播與點播、語音通訊及在線遊戲支撐平臺等方面。
(1)分佈式科學計算
咱們知道,許多計算機的CPU資源並非時刻保持峯值運轉的,甚至不少時候計算機處於「空閒」狀態,好比使用者暫時離開等狀況。而P2P技術可使得衆多 終端的CPU資源聯合起來,服務於一個共同的計算。這種計算通常是計算量巨大、數據極多、耗時很長的科學計算。在每次計算過程當中,任務(包括邏輯與數據 等)被劃分紅多個片,被分配到參與科學計算的P2P節點機器上。在不影響原有計算機使用的前提下,人們利用分散的CPU資源完成計算任務,並將結果返回給 一個或多個服務器,將衆多結果進行整合,以獲得最終結果。
世界最著名的P2P分佈式科學計算系統非「SETI@home」項目莫屬。SETI@home項目(簡稱爲S@H或SETI),由美國加利福尼亞大學伯克 利分校在1999年發起,是至今最成功的分佈式計算項目。SETI@home經過分析從射電望遠鏡傳來的數據來搜尋地外文明,這在很多科幻迷甚至是不少普 通大衆眼裏都是一個「很酷」的應用。SETI的早期版本截至2005年已經吸引了543萬用戶,分析了大量積壓數據。正如宇宙的浩瀚通常,須要計算的數據 (即存在宇宙空間的無數無線電信號)也是海量的。能夠說,這幾百萬臺終端組成了一個目前最快的高性能計算機都可望不可即的「超級計算機」。
(2)文件共享
要問一百個網友目前中國最流行的文件下載方式,恐怕99個都會回答是「BT」。「BT」是BitTorrent[7]的簡稱,是一種依賴P2P方式將文件 在大量互聯網用戶之間進行共享與傳輸的協議,對應的客戶端軟件有BitTorrent、BitComet和BitSpirit等。因爲其實現簡單、使用方 便,在中國用戶之間被普遍使用。BitTorrent中的節點在共享一個文件時,首先將文件分片並將文件和分片信息保存在一個流(Torrent)類型文 件中,這種節點被形象地稱做「種子」節點。其餘用戶在下載該文件時根據Torrent文件的信息,將文件的部分分片下載下來,而後在其餘下載該文件的節點 之間共享本身已經下載的分片,互通有無,從而實現文件的快速分發。因爲每一個節點在下載文件的同時也在爲其餘用戶上傳該文件的分片,因此總體來看,不會隨着 用戶數的增長而下降下載速度,反而下載的人越多,速度越快。
BitTorrent是一種無結構的網絡協議。除了BitTorrent以外,還有很多著名的無結構化的P2P文件共享協議,典型的有Gnutella[8]和KaZaA[6]。
Gnutella協議是一種最典型的徹底分佈式、無等級結構的P2P網絡模型。網絡中的節點隨機鏈接若干個其餘節點,稱之爲「鄰居」。這種結構可以很好地 適應P2P網絡中節點頻繁加入與離開的動態特性,由於任意一個節點均可以被新加入的節點做爲「鄰居」而鏈接,任意一個「鄰居」也能夠隨意地離開網絡。同 時,這種加入節點和離開節點的選擇是節點間的獨立行爲,隨機分佈於網絡之中。因此說Gnutella的網絡具備健壯性、實時性、可靠性、負載平衡等優點。