Skip to content

Latest commit

 

History

History
64 lines (42 loc) · 1.9 KB

File metadata and controls

64 lines (42 loc) · 1.9 KB

P2P 协议 笔记

P2P文件分发: BitTorrent

文件被分为一个个块256KB

网络中的这些peers发送接收文件块,相互服务

Image text

BitTorrent(比特洪流): 请求,发送文件块

  • 请求块:

    • 在任何给定时间,不同peer节点拥有一个文件块的子集
    • 周期性的,Alice节点向邻居询问他们拥有哪些块的信息
    • Alice向peer节点请求它希望的块,稀缺的块
  • 发送块:一报还一报tit�for-tat

    • Alice 向4个 peer 发送块,这些块向它自己提供最大带宽的服务
      • 其他 peer 被 Alice 阻塞 (将不会从 Alice 处获得服务)
      • 每10秒重新评估一次:前4位
    • 每个30秒:随机选择其他 peer 节点,向这个节点发送块
      • “优化疏通” 这个节点
      • 新选择的节点可以加入这个top 4

P2P文件共享

  • 两大问题:

    • 如何定位所需资源
    • 如何处理对等方的加入与离开
  • 可能的方案

    • 集中
    • 分散
    • 半分散

集中式

  • 有一台集中式目录服务器,对等方连接时,它告知中心服务器 自己的IP地址 和 内容
  • 其他对等方在下载数据是从中心服务器获取到 IP地址 去下载

分散式

Gnutella:协议

  • 没用中心服务器, 开放文件共享协议
  • 如果X和Y之间有一个TCP连接,则二者之间存在一条边

Image text

  • 对等方加入
  1. 对等方X必须首先发现某些已经在覆盖网络中的其他对等方:使用可用对等方列表
  2. X接着试图与该列表上的对等方建立TCP连接,直到与某个对等方Y建立连接
  3. X向Y发送一个Ping报文,Y转发该Ping报文
  4. 所有收到Ping报文的对等方以Pong报文响应
  5. X收到许多Pong报文,然后它能建立其他TCP连接

半分散

通过组长来交换数据

Image text