P2P網路應用層多播樹的建立及維護的解析

2022-09-24 15:57:19 字數 4511 閱讀 6882

一、什麼是對等網路 p2p

p2p一般指對等網路 對等計算(peer to peer,簡稱p2p)可以簡單的定義成通過直接交換來共享計算機資源和服務,而對等計算模型應用層形成的網路通常稱為對等網路。在p2p網路環境中,成千上萬臺彼此連線的計算機都處於對等的地位,整個網路一般來說不依賴專用的集中伺服器。網路中的每一台計算機既能充當網路服務的請求者,又對其它計算機的請求作出響應,提供資源和服務。通常這些資源和服務包括:資訊的共享和交換、計算資源(如cpu的共享)、儲存共享(如快取和磁碟空間的使用)等。

這個定義有點抽象,下面就來簡單地解釋一下。粗略地講,應用程式可以設計成採用客戶機/伺服器體系結構或對等體系結構(p2p)。我們日常生活中的許多應用程式,包括web、電子郵件和dns,都是使用客戶機/伺服器體系結構;而檔案分發,例如大家熟悉的迅雷**等,就是使用p2p檔案分發的技術,使用的就是對待體系結構(p2p)。

對於客戶機/伺服器體系結構,它要求總是開啟的基礎設施伺服器。相反,使用p2p體系結構,對總是開啟的基礎設施伺服器有最小的(或者沒有)依賴,任意間斷連線的主機對都稱為對等方,各個對等方直接通訊。對等方並不為服務提供商所有,而是為使用者控制的裝置。

二、p2p檔案分發

下面通過乙個具體的應用來研究p2p,這個應用是從單一伺服器向大量主機(對等方)分發大檔案。

在客戶機/伺服器檔案分發中,伺服器必須向每個客戶機傳送該檔案的乙個拷貝,這同時給伺服器造成了極大的負擔,並且消耗了大量的伺服器頻寬。在p2p檔案www.cppcns.com分發中,每個對等方(即對應客戶機/伺服器體系結構中的客戶機)都能夠重新分發其所有的該檔案的任何部分,從而協助伺服器進行分發。

1、客戶機/伺服器體系結構 vs p2p體系結構

首先我們假設檔案的長度為f,伺服器上傳的速率為u,**速率為d,而客戶機有n臺,每台的上傳速率為ui(i=1、2...n),每台的**速率為di(i=1、2...n)。

由於每一次檔案的分發都涉及伺服器上傳檔案和客戶機(或對等方)**檔案。在下面的討論中,我們假設f、u、d、ui、di均不變,而n,即對等方數量卻是可變的。

首先,對於客戶機/伺服器體系結構,伺服器上傳n個檔案(因為有n個客戶,每個客戶乙個檔案的副本)所需要的時間至少為nf/u。而**速率最小(用dmin表示)的對等方不可能在f/dmin秒內獲得該 檔案的所有f位元,所以使用客戶機/伺服器體系結構分發檔案所需的時間為

dcs = max

即所需要的最小時間由**檔案最長時間和上傳檔案中的較程式設計客棧大者決定,其實這也是很自然的事,因為分發時間,要不就是伺服器上傳這n個檔案用時多,要不就是對等方**這n個檔案用時多。然而,我們可以看到nf/u會隨著n的增大而線性增大,而f/dmin卻是個常值。也就是說當n達到一定的程度時,它必然大於f/dmin,也就變成是dcs的值,即dcs = nf/uwww.cppcns.com。

然後,對於p2p體系結構,其中每個對等方都能夠幫助伺服器來分發檔案。也就是說,當乙個對等方接收到檔案資料時,它可以利用自己的上載能力重新將資料分發給其他對等方。

在分發的開始,只有伺服器擁有檔案。為了使對等方得到該檔案,伺服器必須經其接入鏈路至少傳送一次該檔案。因此最小分發時間至少是f/u。因為在p2p體系結構中,伺服器傳送一次檔案就可能不用再次傳送了,因為其他對等方可以從擁有該檔案的對等方中獲得。

與客戶機/伺服器體系結構相同,**速率最小的對等方不可能在f/dmin秒之內獲得檔案f的所有位元。因此最小的分發時間也可能是f/dmin。

最後,系統的總上載能力等於伺服器的上載速率加上每個對等方的上載速率,即utotal=u+u1+u2...+un。系統必須向n個對等方的都交付(上載)f位元,因此總的交付為nf位元。所以最小分發時間至少是nf/(u+u1+u2...+un)。

綜上所述,使用p2p體系結構分發檔案所需要的時間為

dp2p = max

即最小分發時間由伺服器上傳的時間,對等方**的最長時間和所有對待方上傳**的時間來決定。同樣,因為f/u, f/dmin都是常數,所以當n達到一定值後,nf/(u+u1+u2...+un)就會大於前面的兩者,成為分發檔案所需要的時間,即dp2p = nf/(u+u1+u2...+un)。從表示式中,我們可以看到,當n的值增大時,由於對等方的數量也能加了,所以u+u1+u2...+un的值也會隨之增大,所以函式並不像客戶機/伺服器體系結構中函式那樣,分發時間會線性地增加,它的曲線與對數函式(如log2n)的曲線相似。所以當n的值較大時,p2p體系結構分發檔案所需要時間遠比客戶機/伺服器體系結構的小。

2、bittwww.cppcns.comorrent——用於檔案分發的流行p2p協議

前面用數學的方法說明了基於客戶機/伺服器體系結構和基於p2p體系結構的檔案分發所需的時間的差別,下面來說一下,這個p2p檔案分發是如何實現的。下面以使用bittorrent協議為例子說明。

在bittorrent中,把參與乙個特定檔案分發的所有對等方的集合稱為乙個洪流。在乙個洪流中,對等方彼此**等長度的檔案塊,塊長度通常為256kb。當乙個對等方開始加入乙個洪流時,它沒有檔案塊。但是隨著時間的推移,它將累積到越來越多的檔案塊。當它**檔案塊時,也為其他對等方上載多個檔案塊。對待方一旦獲得了整個檔案,它可以離開洪流,或留在洪流中,為其他對等方上載檔案塊。同時,任何乙個對等方可以在任何時候離開洪流,以後也可以重新加入洪流。

這裡有二個問題,1)我們的主機或裝置加入乙個洪流中時如何知道它有哪些對等方,即它如何知道它要向哪些主機請求所需要的檔案。2)我們在**檔案時,如果確定我們所需要的檔案塊是哪一塊,換句話說就是,檔案有很多塊組成,而我們**時並不按檔案原有的順序**,那麼我如何確定我還需要**哪些塊來讓這個檔案變得完整。

首先回答第乙個問題,每個洪流具有乙個基礎設施節點,稱為追蹤器。當乙個對等方加入洪流時,它向追蹤器註冊,並周期性地通知追蹤器它仍在洪流中。乙個特定的洪流可能在任意時刻擁有數以百計或千計的對等方。當乙個新的對等方a加入洪流時,追蹤器隨機地從參與對等方集合中選擇一些對等方,並將這些對等方的ip位址傳送給a,a持有對等方的這張列表,試圖與該列表上的對等方建立並行的tcp連線,與a成功地建立tcp連線的對等方稱為「鄰近對等方」。隨著時間的推移,其中的一些對待方可能離開,而另一些對等方可能試圖與a建立tcp連線,就像a之前所做的那樣。這樣我們就可以知道我們要**的檔案所在洪流中有哪些的對等方。

再來回答第二個問題,在任何時刻,每個對等方都具有某檔案塊的子集,且不同的對等方具有不同的檔案塊子集。a週期性詢問每個鄰近對等方所具有的塊列表並獲得其鄰居的塊列表,因此a將對它當前還沒有的塊發出請求。同時由於在洪流中的每乙個對等方既**又上傳,所以a還應決定它請求的塊應該傳送給它的哪些鄰居。通常在請求塊的過程中,使用一種叫最稀罕優先的技術,即根據a沒有的塊從它的鄰居中確定最稀罕的塊(即那些在它的鄰居中拷貝數量最少的那些塊),並優先請求這些最稀罕的塊。這樣做的目的也是很明顯,就是讓每個塊在洪流中的拷貝數量大致相等,這樣同時也能提高總的**速率,因為**不會卡在某個檔案塊的**中。

三、p2p區域搜尋資訊

p2p的另乙個重要應用就是資訊索引,即資訊到主機位置的對映。

為了說明什麼是索引,舉個例子說明吧,p2p檔案共享系統中有乙個索引,它動態地跟蹤這些對等方可供共享的檔案。該索引維護了乙個記錄,記錄將有關拷貝的資訊對映到具有拷貝對等方的ip位址。當乙個對等方加入系統時,它通知系統它所擁有的檔案索引。當乙個使用者希望獲得乙個檔案時,他搜尋索引以定位該檔案的拷貝的位置。

注:p2p檔案分發與p2p檔案共享還是有一定的區別的,p2p的檔案共享有可能發生在不同的時段,例如,現在收到的檔案,1小時後才需上傳。p2p的檔案共享也有可能發生在不同的檔案,例如,需要**a檔案,卻為其他使用者提供b檔案。而p2p的檔案分發更多是針對單一檔案,在**的同一時間為其他使用者提供上傳服務,這是乙個協同處理的過程。

1、集中式索引

由一台大型伺服器(或伺服器場)來提供索引服務。當使用者啟動p2p檔案共享應用程式時,該應用程式將它的ip位址以及可供共享的檔名稱通知索引伺服器。索引伺服器收集可共享的物件,建立集中式的動態資料庫(物件名稱到ip位址的對映)。

它有如下的缺點:

1、單點故障

2、效能瓶頸

3、可靠性差

這種索引方式的特點是:檔案傳輸是分散的(p2p的),但定位內容的過程是高度集中的(客戶機/伺服器)。

2、查詢洪氾

查詢洪氾採用完全分布式的方法,索引全面地分布在對等方的區域中,對等方形成了乙個抽象的邏輯網路,稱為覆蓋網路。當a要定位索引(例如abc)時,它向它的所有鄰居傳送一條查詢報文(包含關鍵字abc)。a的所有鄰居向它們的所有鄰居**該報文,這些鄰居又接著向它們的所有鄰居**該報文等。如果其中乙個對等主與索引(abc)配置,則返回乙個查詢命中報文。

但是這種簡單的方法卻有乙個致命的缺點,就是它會產生大量的流量。

乙個解決辦法就是採用範圍受限查詢洪氾。設定乙個計數值,對等方向其鄰居**請求之前就將對等方的計數字段減1,當乙個對等方的計數字段為0時,停止查詢。

3、層次覆蓋

該方法結合了集中式索引和查詢洪氾的優點,與查詢洪氾相似,層次覆蓋設計並不使用專用的伺服器來跟蹤和索引檔案。不同的是在層次覆蓋中並非所有的對等方都是平等的。

它的示意圖如下:

超級對等方(組長對等方)維護著乙個索引,該索引包括了其子對等方(普通對待方)正在共享的所有檔案的識別符號、有關檔案的元資料和保持這些檔案的子對等方的ip位址。而超級對等方通常也只是乙個普通的對等方。超級對等方之間相互建立tcp連線,從而形成乙個覆蓋網路,超級對等方可以向其相信超級對等方**查詢,但是僅在超級對等方使用範圍受限查詢洪氾。

極客時間 應用層 P2P好玩

ftp ftp也即檔案傳輸協議。ftp 採用兩個 tcp 連線來傳輸乙個檔案。控制連線 伺服器以被動的方式,開啟眾所周知用於 ftp 的埠 21,客戶端則主動發起連線。該連線將命令從客戶端傳給伺服器,並傳回伺服器的應答。常用的命令有 list 獲取檔案目錄 reter 取乙個檔案 store 存乙個...

計算機網路應用層 之 P2P

一 什麼是p2p 對等網路 peertopeer,簡稱p2p 也稱為對等連線,是一種新的通訊模式,每個參與者具有同等的能力,可以發起乙個通訊會話。對於客戶機 伺服器體系結構,它要求總是開啟的基礎設施伺服器。相反,使用p2p體系結構,對總是開啟的基礎設施伺服器有最小的 或者沒有 依賴,任意間斷連線的主...

在P2P應用程式中,IP多播的好處

多播使用乙個組位址而不是使用 ip位址,乙個 peer 可以在不知道接收者位址的情況下傳送訊息。這樣做的結果是在多播網路中的所有 peer 都可以響應發出請求的 peer 將有關查詢的結果資訊 甚至是自己的 ip位址 用於與請求 peer 直接通訊 傳送回去。養活使用頻寬。因為所有的 peer 都可...