【P2P】

文章目录

P2P应用

纯P2P架构

  • 一个节点既是客户端又是服务器
  • 没有(或极少)一直运行的服务器
  • 任意端系统都可以直接通信
  • 利用peer的服务能力
  • Peer节点间歇上网,每次IP地址都有可能变化

例子:

  • 文件分发 (BitTorrent)
  • 流媒体(KanKan)
  • VoIP (Skype)

文件分发:C/S vs P2P

问题:从一台服务器分发文件(大小F)到N个peer需要多少时间?

  • Peer节点上下载能力是有限的

文件分发时间:C/S模式

  • 服务器传输:都是由服务器发送给peer,服务器必须顺序传输(上载)N个文件拷贝:
  • 客户端:每个客户端必须下载一个文件拷贝

文件分发时间:P2P模式

问题:从一台服务器分发文件(大小F)到N个peer需要多少时间?

  • Peer节点上下载能力是有限的资源

P2P文件分发:BitTorrent

  • 文件被分为一个个块256KB
  • 网络中这些peers发送文件块,相互服务

Torrent(洪流):节点的组,之间交换文件块

P2P文件分发:BitTorrent

  • Peer加入torrent:
    • 一开始没有块,但是将会通过其他节点处累积文件块
    • 向跟踪服务器注册,获得peer节点列表,和部分peer节点构成邻居关系 ("连接")
  • 当peer下载时,该peer可以同时向其他节点提供上载服务
  • Peer可能会变换用于交换块的peer节点
  • 一旦一个peer拥有整个文件,它会(自私的)离开或者保留(利他主义)在torrent中

BitTorrent:请求,发送文件块

请求块:

  • 在任何给定时间,不同peer节点拥有一个文件块的子集
  • 周期性的,Alice节点向邻居询问他们拥有哪些块的信息
  • Alice向peer节点请求它希望的块,稀缺的块
    发送块:一报还一报tit-for-tat
  • Alice向4个peer发送块,这些块向它自己提供最大带宽的服务
  • 每个30秒:随机选择其他peer节点,向这个节点发送块

BitTorrent:tit-for-tat

(1) Alice "优化疏通" Bob

(2) Alice 变成了Bob的前4位提供者; Bob答谢Alice

(3) Bob 变成了Alice的前4提供者

更高的上载速率,发现更好的交易伙伴,获得更快的文件传输速率

P2P文件共享

  • 两大问题:
    • 如何定位所需资源
    • 如何处理对等方的
      加入与离开
  • 可能的方案
    • 集中
    • 分散
    • 半分散

查询洪泛:Gnutella

  • 全分布式
    • 没有中心服务器
  • 开放文件共享协议
  • 许多Gnutella客户端实现了Gnutella协议
    • 类似HTTP有许多的浏览器

覆盖网络:图

  • 如果X和Y之间有一个TCP连接,则二者之间存在一条边
  • 所有活动的对等方和边就是覆盖网络
  • 边并不是物理链路
  • 给定一个对等方,通常所连接的节点少于10个

Gnutella:协议

  • 在已有的TCP连接上发送查询报文
  • 对等方转发查询报文
  • 以反方向返回查询命中报文

利用不匀称性:KaZaA

  • 每个对等方要么是一个组长,要么隶属于一个组长
    • 对等方与其组长之间有TCP连接
  • 组长跟踪其所有的孩子的内容
  • 组长与其他组长联系
    • 转发查询到其他组长
    • 获得其他组长的数据拷贝

KaZaA:查询

  • 每个文件有一个散列标识码和一个描述符
  • 客户端向其组长发送关键字查询
  • 组长用匹配进行响应:
    • 对每个匹配:元数据、散列标识码和IP地址
  • 如果组长将查询转发给其他组长,其他组长也以匹配进行响应
  • 客户端选择要下载的文件
    • 向拥有文件的对等方发送一个带散列标识码的
      HTTP请求

Kazaa小技巧

  • 请求排队
    • 限制并行上载的数量
    • 确保每个被传输的文件从上载节点接收一定量的带宽
  • 激励优先权
    • 鼓励用户上载文件
    • 加强系统的扩展性
  • 并行下载
    • 从多个对等方下载同一个文件的不同部分
    • HTTP字节范围首部
    • 更快地检索一个文件

Distributed Hash Table (DHT)

  • 哈希表
  • DHT方案
  • 环形DHT 以及覆盖网络
  • Peer波
相关推荐
2601_963282774 小时前
寒地窄带通信工程实践:黑龙江哈尔滨对讲机选型、组网与合规运维总结
运维·服务器·网络
是真的小外套5 小时前
网络安全实战第14期:Week2周末闯关
网络·安全·web安全
xbzb6 小时前
OpenStack 网络管理(理论):Linux 网络虚拟化是 Neutron 的地基
linux·服务器·网络·openstack·network·neutron
QXWZ_IA8 小时前
边坡监测预算有限时的建设顺序:虚拟基准站与成本账
网络·数据库
聪明蛋子哟11 小时前
大模型应用“最后一公里”:从Prompt工程到MCP协议,如何实现跨系统的高可用集成?
网络·prompt
科创致远12 小时前
ESOP 电子作业指导书 WiFi 网络应用实测报告
运维·服务器·网络
承渊政道12 小时前
Linux网络学习【从NAT与代理服务理解网络转发、探索内网穿透原理、再到认识DNS与ICMP、最后动手部署并测试内网穿透】
linux·网络·学习·内网穿透·dns·nat
最强小杰12 小时前
minimax-m3 突然报 HTTP 529 怎么办?连续重试为何更难恢复,退避时间该怎么算?
网络·网络协议·http·ai
程序员清风12 小时前
AI 编程助手的权限边界:文件、命令、密钥与人工确认
运维·服务器·网络
别讲概念13 小时前
JavaEE(5)网络原理初识
网络·java-ee·智能路由器