首先我們要先來區分一下下面的幾種體系結構:
CS:Client/Server 客戶-服務器結構
BS:Browser/Server 瀏覽器-服務器結構
P2P:Peer to Peer 對等結構
BS其實是CS方式的一種特例,所以也應算在CS中。
CS:主機A如果運行客戶端程序,而主機B運行服務端程序,客戶A向服務端B發送請求服務,服務器B向客戶A提供服務,這種情況下,就是以CS的方式進行通信。我們所指的客戶和服務器都是指通信中涉及的兩個應用進程,而不是具體的主機。
P2P:以對等方式進行通信,並不區分客戶端和服務端,而是平等關系進行通信。在對等方式下,可以把每個相連的主機當成既是主機又是客戶,可以互相下載對方的共享文件。比如迅雷下載就是典型的P2P通信方式。
BS和CS通信的實質相同,都是客戶端向服務器端發送請求,服務端接收並處理。但是BS相對於CS來說更方便,對電腦配置要求更低,並且易於維護,安全性在某種意義上要好些,CS中容易被反匯編,但是CS對於那種復雜的業務處理要更容易一些。
P2P的特點:
·資源共享
·資源分布
·各結點既是資源的提供者又是資源的使用者
下面是三種特別適合用P2P設計的應用程序:
(1)文件分發 (2)對等方社區中組織並搜索信息 (3)Skype,一種相當成功的P2P因特網電話應用(暫不詳細說明)
1.P2P文件分發
在P2P文件分發中,每個對等方都能夠重新分發其所有的該文件的任何部分,從而協助服務器進行分發。
·P2P體系結構的自擴展性
對足夠大的N(對等方的數量):
客戶機/服務器體系結構的分發時間隨着對等方的數量N線性增加並且沒有界。
P2P體系結構,其最小分發時間曲線與log2N曲線類似,因此最小分發時間遠小於客戶機/服務器體系結構的分發時間。其自擴展性很強。
·BitTorrent
BitTorrent是一種用於文件分發的流行P2P協議。
2.在P2P區域中搜索信息
·集中式索引(初始“Napster”的設計)----P2P和CS的混合體
如下圖所示:
(1)初始時,所有的對等方要將自身的IP和可共享的文件名稱通知集中式索引服務器,該索引服務器從每個活動的對等方那里收集這些信息,從而建立起一個動態索引,將每個文件拷貝映射到一個IP地址集合。
(2)當Alice需要下載一些文件時會將查詢內容發送給索引服務器,服務器將查詢結果返回給Alice(Bob的IP地址)。
(3)Alice根據收到的信息,從Bob處下載資源。
缺點:
·單點故障。·性能瓶頸和基礎設施費用。·侵犯版權。
·查詢洪泛(建立在“Gnutella”協議基礎上)
查詢洪泛采用完全分布式方法。在查詢洪泛中,索引全面地分布在對等方的區域中。每個對等方索引可供共享的文件而不索引其他文件。
其擴展性差,尤其是為了防止某個對等方發起查詢,該查詢就會傳播到整個覆蓋網絡的每個其他對等方,從而產生大量流量。為解決這個問題,設計者使用了受限查詢洪泛,即限制其傳播的最大跳數。
·層次覆蓋(由FastTrack首創,Kazza和Morpheus也實現了這種文件共享協議)
該方法結合了上述兩種方法的優秀特征,與洪泛查詢類似,層次覆蓋設計不使用專用的服務器(或服務器場)來跟蹤和索引文件。然而,與洪泛查詢不同的是,在層次覆蓋的設計中並非所有對等方都是平等的。
如下圖所示,如果某對等方不是超級對等方,則它就是一個普通對等方,並被指派為一個超級對等方的子對等方。
超級對等方維持着一個索引,該索引包括子對等方正在共享的所有文件的標識符、有關文件的元數據和相應子對等方的IP地址,但與前面的集中式索引不同,這里的超級對等方並不是一台專用服務器,而是普通對等方。超級對等方之間可以相互建立TCP連接,從而形成一個覆蓋網絡。