【計算機網絡】2.6 P2P應用
第二章第六節 P2P應用
在本節內容開始前,我們要先來對P2P架構有一個宏觀的認知:
P2P:(Peer to Peer 對等結構) 以對等方式進行通信,並不區分客戶端和服務端,而是平等關系進行通信。在對等方式下,可以把每個相連的主機當成既是主機又是客戶,可以互相下載對方的共享文件。比如迅雷下載就是典型的P2P通信方式。
本章描繪的前三個應用都采用了CS(客戶-服務器)體系結構,極大的依賴於總是打開的基礎設施服務器。而在本節中,我們將介紹兩種適用於P2P的應用:一個是文件分發,在其中我們將介紹流行的BitTorrent協議;另一個是分布在大型對等方社區中的數據庫,在其中我們將探討分布式散列表(Distrubuted Hash Table,DHT)的概念。
Outline
- 文件分發
- P2P系統結構的擴展性
- BitTorrent
- P2P應用:索引技術
- P2P中搜索信息
- 集中式索引
- 查詢洪泛
- 層次覆蓋
- 分布式散列表
Note
- 純P2P架構具有如下特點:
- 沒有服務器,任意端系統之間直接通信
- 節點階段性接入Internet
- 節點可能更換IP地址
- 資源共享
- 資源分布
## 文件分發
【P2P體系結構的擴展性】
- 為了方便討論,我們假設如上圖的簡單定量模型,其中us為服務器上傳帶寬;ui為節點i上傳帶寬,di為節點i下載帶寬。
- 對於客戶機/服務器架構:
- 服務器串行地發送 N 個副本,時間為: NF/us
- 客戶機i 需要 F/di
- 我們所需要的最短時間為:
- 對於P2P架構:
- 服務器必須發送一個副本,時間: F/us
- 客戶機i 需要 F/di 的時間下載
- 總共需要下載NF比特
- 最快的可能上傳速率: us + ∑ui
- 所需要的最短時間為:
- 結論:對足夠大的N(對等方的數量):
- 客戶機/服務器體系結構的分發時間隨著對等方的數量N線性增加並且沒有界。
- P2P體系結構,其最小分發時間曲線與log2N曲線類似,因此最小分發時間遠小於客戶機/服務器體系結構的分發時間。其自擴展性很強。
【BitTorrent】
- BitTorrent是一種用於文件分發的流行P2P協議,每個下載者在下載的同時不斷向其他下載者上傳已下載的數據。
- BT協議與FTP協議不同,特點是下載的人越多,下載速度越快,原因在於每個下載者將已下載的數據提供給其他下載者下載,充分利用了用戶的上載帶寬。通過一定的策略保證上傳速度越快,下載速度也越快。
- 基本概念:
- Torrent:參與一個特定文件分發的所有對等方的集合被稱為一個洪流。
- chunk:在一個洪流中的對等方彼此下載等長度的文件塊(一個文件被分成若幹個塊),典型的塊長度為256KB。
- Tracker:每個洪流都有一個基礎設施結點,成為追蹤器
- 當一個新節點(Alice)加入torrent:
- 沒有chunk,但會隨著時間不斷積累
- 結點向tracker註冊獲得節點信息表,並與某些結點建立聯系(成為“鄰居”),一個結點的臨近對等點會隨著時間而波動。
- 結點下載的同時,也為其他對等方上傳了多個塊。結點可能隨時加入或離開。
- chunk的獲取
- 給定任一時刻,不同的節點持有文件的不同chunk集合
- 節點(Alice)定期查詢每個鄰居所持有的chunk列表
- 節點發送請求,請求獲取缺失的chunk
- 稀缺優先:針對她沒有的塊在他的鄰居中決定最稀缺(副本數量最少)的塊,並優先請求稀缺塊
- 稀缺優先的目的:大致的均衡每個塊在洪流中的副本數量
- chunk的發送:決定Alice響應哪個請求(對換算法)
- Alice根據當前能夠以最高速率向他提供數據的鄰居,給出其優先權
- 每10秒,重新評定一下Top4,這四個對等方被稱為疏通(unchocked)
- 每30秒,Alice隨機選擇一個其他結點,向其發送chunk。
- 除了隨機選擇的伴侶作為試探對等方和之前的Top4,其他的對等方都稱為阻塞()
## P2P應用:索引技術
【P2P中搜索信息】
- P2P系統的索引:信息到節點位置(IP地址+端口號)的映射。
- 文件共享(電驢)
- 利用索引動態跟蹤節點所共享的文件的位置
- 節點需要告訴索引它擁有哪些文件
- 節點搜索索引,從而獲知能夠得到哪些文件
- 即時消息(QQ)
- 索引負責將用戶名映射到位置
- 當用戶開啟IM應用時,需要通知索引它的位置
- 節點檢索索引,確定用戶的IP地址
【集中式索引】
- 如上圖所示,集中式索引更像是P2P和CS的混合體
- 當Alice需要下載信息時,經過以下步驟:
- 初始時,所有的對等方要將自身的IP和可共享的文件名稱通知集中式索引服務器,該索引服務器從每個活動的對等方那裏收集這些信息,從而建立起一個動態索引,將每個文件拷貝映射到一個IP地址集合。
- 當Alice需要下載一些文件時會將查詢內容發送給索引服務器,服務器將查詢結果返回給Alice(Bob的IP地址)。
- Alice根據收到的信息,從Bob處下載資源。
- 集中式索引的問題:內容和文件傳輸是分布式的,但是內容定位是高度集中式的。會出現如下問題:單點失效問題、性能瓶頸、版權問題。
【查詢洪泛】(建立在“Gnutella”協議基礎上)
- 查詢洪泛采用完全分布式方法。在查詢洪泛中,索引全面地分布在對等方的區域中。每個對等方索引可供共享的文件而不索引其他文件。
- 其擴展性差,尤其是為了防止某個對等方發起查詢,該查詢就會傳播到整個覆蓋網絡的每個其他對等方,從而產生大量流量。為解決這個問題,設計者使用了受限查詢洪泛,即限制其傳播的最大跳數。
【層次覆蓋】(由FastTrack首創,Kazza和Morpheus也實現了這種文件共享協議)
該方法結合了上述兩種方法的優秀特征,與洪泛查詢類似,層次覆蓋設計不使用專用的服務器(或服務器場)來跟蹤和索引文件。然而,與洪泛查詢不同的是,在層次覆蓋的設計中並非所有對等方都是平等的。
如下圖所示,如果某對等方不是超級對等方,則它就是一個普通對等方,並被指派為一個超級對等方的子對等方。
超級對等方維持著一個索引,該索引包括子對等方正在共享的所有文件的標識符、有關文件的元數據和相應子對等方的IP地址,但與前面的集中式索引不同,這裏的超級對等方並不是一臺專用服務器,而是普通對等方。超級對等方之間可以相互建立TCP連接,從而形成一個覆蓋網絡。
## 分布式散列表
在課程中未涉獵,具體請移步https://blog.csdn.net/zy_zhengyang/article/details/76838523
【計算機網絡】2.6 P2P應用