P2P应用

P2P架构

image-20221012164040111

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

image-20221012165049845

CS

只有特定服务器服务客户端

P2P

每个节点既是服务器也是客户端

P2P文件共享
实现
  • 定位所需资源
  • 处理其他节点的加入与离开

非结构化P2P

集中式目录

每个节点上下线时要向目录服务器上报

上报信息
  • IP,是否在线

  • 资源

缺点
  • 不能挂,挂了就无法找到资源
  • 节点上下线过多时忙不过来
完全分布式

节点信息都存放在其他节点中

网状分布,向邻居查询,依次查找,泛洪式查询

缺点

洪水泛滥

可以通过TTL或者其他的方法减小泛滥

层次式

分组长和组员

组长按照完全分布

组员按照集中式分布

结构化(DHT)P2P

  • 哈希表
  • DHT方案
  • 环形DHT以及覆盖网络
  • Peer波动

BitTorrent

是一种用于文件分发的流行P2P协议

Peer加入torrent:
  • 一开始没有块,但是会通过其他节点处累积文件块
  • 向跟踪服务器注册,获得peer节点列表,和部分peer节点构成邻居关系

当peer下载时,该peer可以同时向其他节点提供上载服务

peer可能会变换用于交换快的peer节点

扰动churn:peer节点可能会上线或下线

一旦一个peer拥有整个文件,它会(自私的)离开或者保留(利他主义)在torrent中

给其他节点分享文件,其他节点也会给你分享文件(互利互惠)

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

在有很多节点排队时

  1. 根据和哪个关系好,优先给哪个发送块
  2. 随机给一个

两种发送方式配合使用

不能洒向人间都是爱,要侧重

优化疏通几个

然后每过一段时间,更新这几个优化输出的列表

跟踪服务器
发送块:

在有很多节点排队时

  1. 根据和哪个关系好,优先给哪个发送块
  2. 随机给一个

两种发送方式配合使用

不能洒向人间都是爱,要侧重

优化疏通几个

然后每过一段时间,更新这几个优化输出的列表

跟踪服务器

当一个peer节点想加入这个洪流时,需要找到 tracker server,他向tracker server注册自己,tracler server会分配一个peer节点列表给它,让它加入,它会周期的通知tracker server它还在这个洪流中

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值