文章目录
- P2P应用
-
- 纯P2P架构
- [文件分发:C/S vs P2P](#文件分发:C/S vs P2P)
- P2P文件分发:BitTorrent
- P2P文件分发:BitTorrent
- BitTorrent:请求,发送文件块
- BitTorrent:tit-for-tat
- P2P文件共享
- 查询洪泛:Gnutella
- Gnutella:协议
- 利用不匀称性:KaZaA
- KaZaA:查询
- Kazaa小技巧
- [Distributed Hash Table (DHT)](#Distributed Hash Table (DHT))
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波