1. 程式人生 > 程式設計 >漫話:如何給女朋友解釋什麼是P2P?

漫話:如何給女朋友解釋什麼是P2P?

​我滿臉疑惑,什麼時候P2P火了呢?還是按耐住心中的疑問,好不容易女朋友給機會,兄弟已經在臺球廳等我了,不管咋樣先表現一波。

什麼是P2P

P2P,是Peer-To-Peer 的簡稱,翻譯成"對等網路"或者"點對點網路"。P2P是一種分散式網路,網路的參與者共享他們所擁有的一部分硬體資源(處理能力、儲存能力、網路連線能力、印表機等),這些共享資源需要由網路提供服務和內容,能被其它對等節點(Peer)直接訪問而無需經過中間實體。在此網路中的參與者既是資源(服務和內容)提供者(Server),又是資源(服務和內容)獲取者(Client)。

在介紹對等網路網路之前,我們先看看傳統的Client/Server (C/S)模式是怎樣的。

在傳統的C/S模式下,我們想要下載一個20G的電影,我們需要找到一個提供該電影資源的網站,然後連線網站的伺服器連續下載。也就是要從檔案原始位置開始下載這20G的完整資料。

這種下載方式有什麼缺點?

1、首先這種方式比較依賴伺服器的可用性,也就是說,如果伺服器掛了,那麼就電影的下載不得不終止。

2、如果想要下載電影的人數增多,網站的頻寬就會成為瓶頸,就會導致大家下載速度下降,甚至有人無法下載。

3、由於所有資源都通過伺服器端輸出,存在單點問題,別人想要攻擊的話也相對方便,只要攻擊伺服器就可以了。

正是因為傳統的C/S模式存在著這些問題,於是P2P就應運而生。

P2P打破了傳統的C/S模式,在網路中的每個結點的地位都是對等的。

每個結點既充當伺服器,為其他結點提供服務,同時也享用其他結點提供的服務。

在P2P模式下,如果有多個人想要下載同一個電影的話,大家就可以不必分別從伺服器下載完整的20G的電影。

由於採用了P2P模式,那麼每一個使用者就可以既充當客戶端又可以充當伺服器。

如果4個人同時下載20G電影,那麼4個人分別各自下載了不一樣的部分,然後在下載的同時進行相互傳送。

這樣大家一邊從伺服器下載得到資料,一邊從別的下載的人那裡得到資料,就比單一從伺服器下載來得快。

女朋友內心OS:不是講P2P嗎,這貨咋說到下載那去了,難道是要先從快播講起麼?真宅男!不管了,先附和一下吧。

P2P的優點

P2P網路的一個重要的目標就是讓所有的客戶端都能提供資源,包括頻寬,儲存空間和計算能力。

因此,當有節點加入且對系統請求增多,整個系統的容量也增大。這是具有一組固定伺服器的CS結構不能實現的。

因此在P2P結構中,客戶端的增加意味著所有使用者更慢的資料傳輸。

除了速度的提升,P2P技術還有以下幾個優點:

  • 非中心化:網路中的資源和服務分散在所有結點上,資訊的傳輸和服務的實現都直接在結點之間進行,可以無需中間環節和伺服器的介入,避免了可能的瓶頸。P2P的非中心化基本特點,帶來了其在可擴充套件性、健壯性等方面的優勢。

  • 可擴充套件性:在P2P網路中,隨著使用者的加入,不僅服務的需求增加了,系統整體的資源和服務能力也在同步地擴充,始終能較容易地滿足使用者的需要。整個體系是全分佈的,不存在瓶頸。理論上其可擴充套件性幾乎可以認為是無限的。

  • 健壯性:P2P架構天生具有耐攻擊、高容錯的優點。由於服務是分散在各個結點之間進行的,部分結點或網路遭到破壞對其它部分的影響很小。P2P網路一般在部分結點失效時能夠自動調整整體拓撲,保持其它結點的連通性。P2P網路通常都是以自組織的方式建立起來的,並允許結點自由地加入和離開。P2P網路還能夠根據網路頻寬、結點數、負載等變化不斷地做自適應式的調整。

  • 高價效比:效能優勢是P2P被廣泛關注的一個重要原因。隨著硬體技術的發展,個人計算機的計算和儲存能力以及網路頻寬等效能依照摩爾定理高速增長。採用P2P架構可以有效地利用網際網路中散佈的大量普通結點,將計算任務或儲存資料分佈到所有結點上。利用其中閒置的計算能力或儲存空間,達到高效能運算和海量儲存的目的。通過利用網路中的大量空閒資源,可以用更低的成本提供更高的計算和儲存能力。

  • 隱私保護: 在P2P網路中,由於資訊的傳輸分散在各節點之間進行而無需經過某個集中環節,使用者的隱私資訊被竊聽和洩漏的可能性大大縮小。此外,目前解決Internet隱私問題主要採用中繼轉發的技術方法,從而將通訊的參與者隱藏在眾多的網路實體之中。在傳統的一些匿名通訊系統中,實現這一機制依賴於某些中繼伺服器節點。而在P2P中,所有參與者都可以提供中繼轉發的功能,因而大大提高了匿名通訊的靈活性和可靠性,能夠為使用者提供更好的隱私保護。

  • 負載均衡: P2P 網路環境下由於每個節點既是伺服器又是客戶機,減少了對傳統C/S結構伺服器計算能力、儲存能力的要求,同時因為資源分佈在多個節點,更好的實現了整個網路的負載均衡。

但是,P2P技術也不是毫無缺點的。P2P技術相比於傳統的C/S結構有以下兩個缺點:

  • 架構較為複雜,除了要有開發服務端,需要專用的客戶端。

  • 用在大規模的網路,資源分享紊亂,管理較難,安全性較低

女朋友內心OS:我的個天哪,這說的都是啥???咋感覺越說越遠了呢,我得往回拉一拉。

P2P的分類

根據中央化程度,P2P可以分為一般型P2P、特殊型P2P以及混合型P2P

 圖:維基百科中關於P2P的分類
根據網路拓撲結構,P2P可以分為結構P2P、無結構P2P以及鬆散結構P2P
 圖:維基百科中關於P2P的分類

P2P的應用

目前,P2P網路計算技術正不斷應用到軍事、商業、政務、電信、通訊等領域。根據具體應用不同,可以把P2P應用軟體大致分為以下這些型別:

1、檔案內容共享和下載,例如Napster、Gnutella、eDonkey、eMule、Maze、BT等,使用者可以直接從任意一臺安裝同類軟體的PC上下載或上傳檔案,並檢索、複製共享的檔案。

2、計算能力和儲存共享,例如SETI@home、Avaki、Popular Power、Netbatch、Farsite等,可用於在網路上將儲存物件分散儲存,或利用其空閒時間進行協同計算。

3、基於P2P技術的協同處理與服務共享平臺,例如JXTA、Magi、Groove等,可用於企業管理。

4、即時通訊工具,包括ICQ、QQ、Yahoo Messenger、MSN Messenger等,多個使用者可以通過文字、語音或檔案進行交流,甚至還可以與手機通訊。

5、P2P通訊與資訊共享,例如Skype、Crowds、Onion Routing等。

6、基於P2P技術的網路電視和網路遊戲,如沸點、PPStream、PPLive、QQLive、SopCast等,當前許多網路遊戲也是通過對等網路方式實現的。

女朋友內心OS:這貨是在跟我裝傻還是真的傻?我還就不信了,直接挑明瞭說吧。

廣大的程式設計師的女朋友(老婆)們,你家程式設計師也這麼呆萌嗎?

參考資料:

https://docs.huihoo.com/p2p/1/index.html

https://zh.wikipedia.org/wiki/%E5%B0%8D%E7%AD%89%E7%B6%B2%E8%B7%AF

https://baike.baidu.com/item/p2p/16298681