1. 程式人生 > >【計算機網絡】2.6 P2P應用

【計算機網絡】2.6 P2P應用

器) 最大 文件共享 不同 tcp 出現 技術 utl 擴展

第二章第六節 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需要下載信息時,經過以下步驟:
    1. 初始時,所有的對等方要將自身的IP和可共享的文件名稱通知集中式索引服務器,該索引服務器從每個活動的對等方那裏收集這些信息,從而建立起一個動態索引,將每個文件拷貝映射到一個IP地址集合。
    2. 當Alice需要下載一些文件時會將查詢內容發送給索引服務器,服務器將查詢結果返回給Alice(Bob的IP地址)。
    3. Alice根據收到的信息,從Bob處下載資源。
  • 集中式索引的問題:內容和文件傳輸是分布式的,但是內容定位是高度集中式的。會出現如下問題:單點失效問題、性能瓶頸、版權問題。

【查詢洪泛】(建立在“Gnutella”協議基礎上)

  • 查詢洪泛采用完全分布式方法。在查詢洪泛中,索引全面地分布在對等方的區域中。每個對等方索引可供共享的文件而不索引其他文件。
  • 其擴展性差,尤其是為了防止某個對等方發起查詢,該查詢就會傳播到整個覆蓋網絡的每個其他對等方,從而產生大量流量。為解決這個問題,設計者使用了受限查詢洪泛,即限制其傳播的最大跳數。

【層次覆蓋】(由FastTrack首創,Kazza和Morpheus也實現了這種文件共享協議)

  該方法結合了上述兩種方法的優秀特征,與洪泛查詢類似,層次覆蓋設計不使用專用的服務器(或服務器場)來跟蹤和索引文件。然而,與洪泛查詢不同的是,在層次覆蓋的設計中並非所有對等方都是平等的。

  如下圖所示,如果某對等方不是超級對等方,則它就是一個普通對等方,並被指派為一個超級對等方的子對等方。

  超級對等方維持著一個索引,該索引包括子對等方正在共享的所有文件的標識符、有關文件的元數據和相應子對等方的IP地址,但與前面的集中式索引不同,這裏的超級對等方並不是一臺專用服務器,而是普通對等方。超級對等方之間可以相互建立TCP連接,從而形成一個覆蓋網絡。

技術分享圖片

## 分布式散列表

在課程中未涉獵,具體請移步https://blog.csdn.net/zy_zhengyang/article/details/76838523

【計算機網絡】2.6 P2P應用