计算机网络学习笔记11(P2P)

网课是b站中科大郑烇老师,杨坚老师课程,郑烇老师账号发布的
图片均来自郑老师分享的PPT

第二章 应用层

2.5纯P2P架构

1、P2P的优点

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

例子:文件分发 (BitTorrent)、流媒体(KanKan)、VoIP (Skype)

2、文件分发: C/S vs P2P

问题: 从一台服务器分发文件(大小F)到N个peer需要多少时间?
Peer节点上下载能力是有限的资源

1)C/S模式的文件分发时间
  • 服务器传输: 都是由服务器发送给peer,服务器必须顺序传输(上载)N个文件拷贝:
    发送一个copy: F/us
    发送N个copy: NF/us
    (us是服务器的带宽)
  • 客户端: 每个客户端必须下载一个文件拷贝
    dmin = 客户端最小的下载速率
    下载带宽最小的客户端下载的时间:F/dmin

在这里插入图片描述

2)P2P模式的文件分发时间
  • 服务器传输:最少需要上载一份拷贝
    发送一个拷贝的时间:F/us

  • 客户端: 每个客户端必须下载一个拷贝
    最小下载带宽客户单耗时:: F/dmin

  • 客户端: 所有客户端总体下载量NF
    最大上载带宽是:us+ Sui
    除了服务器可以上载,其他所有的peer节点都可以上载

在这里插入图片描述

3)总结

在这里插入图片描述

3、P2P的管理

非结构化P2P
DHTC(结构化)P2P

1)非结构化P2P

两个peer 之间有逻辑上的邻居关系,这两个peer是随机的,无序的

  • 集中式目录
  • 完全分布式Gnutella
  • 混合体KaZaA
2)DHTC(结构化)P2P

两个peer 之间有逻辑上的邻居关系,这两个peer是有序的
peer之间可以构成环、树等结构
DHT:Distributed Hash Table
哈希表
DHT方案
环形DHT 以及覆盖网络
Peer波动

4、集中式目录:

P2P文件共享:

所有的对等方都是服务器= 可扩展性好
两大问题:

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

可能的方案:集中、分散、半分散

集中式目录:

(最初的“Napster”设计)

  • 当对等方连接时,它告知中心服务器: IP地址 、内容

  • 集中式目录中存在的问题
    单点故障(目录服务器只有一个)
    性能瓶颈
    侵犯版权
    文件传输是分散的,而定位内容则是高度集中的

5、完全分布式Gnutella(查询洪泛)

1)特点
  • 全分布式(没有中心服务器)
  • 开放文件共享协议
  • 许多Gnutella客户端实现了Gnutella协议(类似HTTP有许多的浏览器)
2)覆盖网络:图

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

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

可扩展性:限制范围的洪泛查询
TTL限制查询中转次数

在这里插入图片描述

6、混合体KaZaA(利用不匀称性)

过程
  • 每个对等方要么是一个组长,要么隶属于一个组长
    对等方与其组长之间有TCP连接
    组长对之间有TCP连接
  • 组长跟踪其所有的孩子的内容
  • 组长与其他组长联系(组长和组长层面是分布式)
    转发查询到其他组长
    获得其他组长的数据拷贝
细节
  • 每个文件有一个散列标识码(哈希值)和一个描述符
  • 客户端向其组长发送关键字查询
  • 组长用匹配进行响应:
    对每个匹配:元数据、散列标识码和IP地址
  • 如果组长将查询转发给其他组长,其他组长也以匹配进行响应
  • 客户端选择要下载的文件
    向拥有文件的对等方发送一个带散列标识码的HTTP请求(发送的是哈希值)
Kazaa小技巧
  • 请求排队
    限制并行上载的数量
    确保每个被传输的文件从上载节点接收一定量的带宽
  • 激励优先权
    鼓励用户上载文件
    加强系统的扩展性
  • 并行下载
    从多个对等方下载同一个文件的不同部分
    HTTP的字节范围首部
    更快地检索一个文件

7、P2P文件分发:BitToorent

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

  • Torrent(洪流): 节点的组,之间交换文件块
  • tracker:跟踪torrent中参与节点
Peer加入torrent的过程

(1)一开始没有块,但是将会通过其他节点处累积文件块
(2)向跟踪服务器(BT服务器)注册,获得peer节点列表,和部分peer节点构成邻居关系 (“连接”)

即——>BT客户端向跟踪服务器发出请求
跟踪服务器给BT客户端分配几个peer节点

  • 当peer下载时,该peer可以同时向其他节点提供上载服务 ,Peer可能会变换用于交换块的peer节点
  • 扰动churn: peer节点可能会上线或者下线
  • 一旦一个peer拥有整个文件,它会(自私的)离开或者保留(利他主义)在torrent中
BitTorrent: 请求,发送文件块
请求块:
  • 在任何给定时间,不同peer节点拥有一个文件块的子集
  • 周期性的,Alice节点向邻居询问他们拥有哪些块的信息
  • Alice向peer节点请求它希望的块,稀缺的块
发送块:一报还一报tit-for-tat
  • Alice向4个peer发送块,这些块向它自己提供最大带宽的服务
    其他peer被Alice阻塞 (将不会从Alice处获得服务)
    每10秒重新评估一次:前4位
  • 每个30秒:随机选择其他peer 节点,向这个节点发送块
    “优化疏通” 这个节点
    新选择的节点可以加入这个top 4
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值