日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

详解P2P技术

發布時間:2023/12/19 综合教程 37 生活家
生活随笔 收集整理的這篇文章主要介紹了 详解P2P技术 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

P2P = Peer to Peer

現在P2P也有很多不同架構,以下是常見的一些P2P架構

純P2P架構

  • 沒有總是在線的服務器
  • 任意端系統之間直接通信
  • 對等方之間可以間斷連接并可 以改變IP地址

例子:

  • 文件分發

  • 流媒體

  • VoIP

復雜應用純P2P無法實現


P2P: 集中式目錄

Napster公司首先設計,由中央集中服務器管理

  1. 當對等方啟動時,它通知目錄 服務器以下信息
  • IP地址

  • 可供共享的對象名稱

  1. Alice查詢文件“Hey Jude” 3) Alice 向Bob請求文件

通過架構我們可以看到一些問題

集中式目錄問題

  • 單點故障
  • 性能瓶頸
  • 侵犯版權

文件傳輸是分散的, 但是定位內容的過 程是高度集中的


Gnutella(使用洪泛法查詢)

類似于廣播,范圍有限,發出請求后,能響應的服務器回應

  • 全分布

  • 沒有集中式服務器

  • 公共域協議

  • 許多Gnutella客戶機實現Gnutella協議

覆蓋網絡:

  • 如果對等方X和Y維護了一條TCP連接,則說X和Y之間有一條邊

  • 所有活躍的對等方和邊組成覆蓋網絡

  • 邊不是物理通信鏈路

  • 給定對等方連接的覆蓋網絡路徑中的節點少于10個,即TTL小于10

查詢報文在已有的TCP連接上發送

對等方轉發報文

QueryHit 報文按反向路徑傳送

Gnutella: 加入對等方

  • 加入對等方X必須發現在Gnutella網絡中的其他對等方:使用對等方列表 。

  • X試圖與該列表上的對等方建立一條TCP連接,直到與Y創建一條連接。

  • 向Y發送一個Ping報文;Y轉發該Ping報文。

  • 所有的對等方接收Ping報文并響應一個Pong報 文。

  • X接收到許多Pong報文。然后能同某些其他對等 方建立TCP連接。

Gnutella: 對等方離開

  • 主動離開:離開接點的所有對等方都會刷新自身 的激活對等方列表,并開始與列表中的新的對等 方建立連接

  • 斷網:發送信息的時候對等方沒有響應,則表明對 等方離開,節點刷新自身的激活對等方列表,并開 始與列表中的新的對等方建立連接


KaZaA

純P2P的改進,超級節點技術

  • 每個對等方要不被指派 為組長,要不被指派給一個組長

    • 對等方和組長之間建立 TCP連接

    • 組長之間建立TCP連接

  • 組長維護它的子對等方 共享的內容

過程:

  • 每個文件有文件的散列碼標識
  • 客戶機送向組長發送關鍵詞的查詢
  • 組長響應匹配
  • 逐項匹配:
    • 元數據
    • 散列值
    • IP地址
  • 如果組長轉發查詢給其他組長則其他組長響應匹 配
  • 客戶端選擇要下載的文件

特點:

  • 請求排隊:限制對等方并行上載數量,新的請求進行排隊。

  • 激勵優先權:根據不同的上載下載比例優先服務貢獻大者。

  • 并行下載:將一個文件分成若干段,從多個對等方并行下載。


P2P文件分發:BitTorrent

  • BitTorrent是一種用于文件分發的流行P2P協議。

  • 參與一個特定文件分發的所有對等方的集合被稱為一個洪流 (torrent)。

  • 一個洪流中的對等方彼此下載等長度的文件塊(chunk),典型 塊長度為256KB。

追蹤器tracker服務器

P2P文件分發流程

  • 對等方加入 torrent:
    • 沒有文件塊,但會隨著時間流逝從其它對等方處累積文件 塊
    • 在tracker處注冊,取得對等方列表,連到所有對等方的 一個子集(鄰居)
  • 在下載的同時給其它對等方上傳文件塊
  • 對等方可能改變和其交換文件塊的對象
  • 對等方會不斷進入或者離開
  • 一旦某對等方下載完了整個文件,它可以離開(自 私)或者繼續留在torrent系統里(無私)

BitTorrent:請求、發送

請求文件塊

  • 在任何給定的時刻,不同的對等方擁有不同的文件塊子集

  • 每個對等方會周期性的詢 問其它每個它連接的對等方當前所擁有的文件塊列 表

  • 對等方將請求下載最稀缺的文件塊

**發送文件塊: tit-for-**tat(一報還一報)

  • Alice發送文件塊的對象是 所有鄰居中向自己發送速率 最快的4個

    • 其它鄰居被阻塞

    • 每10秒重新計算速率

  • 每30秒,隨機選擇一個其 他鄰居,發送文件塊


DHT(分布式Hash表)

DHT: 一個分布式的P2P數據庫

  • 數據庫由許多(key,value)((鍵, 值)) 對構成。例如:
    • key: 社保號; value: 人名
    • key: 電影名稱; value: IP地址
  • 所有(key, value) 對被分發到成千上萬的對等方用戶群中
  • 一個對等方利用key來查詢DHT
  • DHT返回與之匹配的value
  • 對等方還可以插入(key, value)對

怎樣把鍵值分配給對等方?

核心問題:

  • 分配 (key, value) 對給各對等方

基本思想:

  • 把每個key轉化成一個整數
  • 給每個對等方分配一個整數標識符
  • 把 (key,value) 對分配給標識符離key最近的 那個對等方

DHT 標識符

  • 給每個對等方分配一個[0,2n-1]之間的整數標識符,n為某給定值.
    • 每個標識符由 n 比特構成.
  • 需要每個key也在同樣的范圍內
  • 為得到整數key,將原key做hash
    • 例如*,* key = hash(“Led Zeppelin IV”)
    • 這就是為什么叫做分布式hash表的原因

key分配給對等方

規則:把key分配給具有最鄰近ID的對等方.

  • 為方便起見: 最臨近被定義為該key的直接后繼 (immediate successor )
  • 例如:
  • n=4; peers: 1,3,4,5,8,10,12,14;
  • key = 13, then successor peer = 14
  • key = 15, then successor peer = 1

環形DHT

  • 每個對等方僅和其直接后繼和直接前任( predecessor)聯系.

  • “覆蓋網絡”

當有N個對等方時,為找 到負責的鍵,發送消息數 量的負責度是O(N)

帶捷徑的環形DHT

  • 每個對等方知曉直接前任、后繼以及捷徑方的IP

  • 本例中,將消息數從6減至2

  • DHT可以設計為每個對等方的鄰居和每個請求的報文數均為O(log N)

對等方擾動

  • 對等方可能進入或者離去
  • 對等方需要知曉它后面兩個后繼的地址
  • 每個對等方周期性的ping這兩個后繼以 檢查它們的存活性
  • 如果直接后繼離開了,則選擇它的下一 個后繼作為直接后繼

例如: peer 5離開

  • peer 4檢測到5的離開,將8當作其直接后繼,并且問 8它的直接后繼是誰(10),然后將10當作其第二后繼。
  • 如果編號為13的peer要加入怎么辦? 后續還有很多問題,篇幅有限,感興趣可以下來了解。

希望你能通過這篇文章了解到現在網絡上常見的幾個P2P的模式。

總結

以上是生活随笔為你收集整理的详解P2P技术的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。