【计算机网络】P2P文件分发介绍

文章目录

考虑一个场景:从单一服务器向大量主机(称为对等方)分发一个大文件。
两种处理方式
客户-服务器文件分发:服务器需要向每个对等方发送该文件的一个副本
P2P文件分发:当服务器上传了文件的一个副本后,各个对等点下载该文件的一部分,然后协助服务器上传自己拥有的文件部分

P2P体系结构的自扩展性

对前面提到的文件分发场景进行简单的定量分析,考虑在两种体系结构下的分发时间(distribution time)

分发时间

所有N个对等方得到该文件的副本所需要的时间
客户-服务器体系结构分析

考虑两个时间

  1. 服务器需要向每个对等方传输该文件,即需要上传NF比特数据,得到 N F u s \frac{NF}{u_s} usNF
  2. 考虑所有对等点的下载文件时间,即需要下载速率最小的对等点下载F比特数据,得到 F d m i n \frac{F}{d_{min}} dminF 其中 d m i n = m i n ( d 1 , d 2 , . . . , d N ) d_{min}=min(d_1, d_2, ..., d_N) dmin=min(d1,d2,...,dN)
    则最终的最小分发时间为

    对足够大的N,客户-服务器分发时间由NF/u确定。则该分发时间随着对等方的数量N线性增加
    P2P体系结构分析
    考虑3个时间
  3. 服务器需要将待传输的文件上传到P2P网络中,得到 F u s \frac{F}{u_s} usF
  4. 各个对等点在整个过程中都会下载至少F比特数据,得到 F d m i n \frac{F}{d_{min}} dminF 其中 d m i n = m i n ( d 1 , d 2 , . . . , d N ) d_{min}=min(d_1, d_2, ..., d_N) dmin=min(d1,d2,...,dN)
  5. 整体分析这个P2P网络,网络中通过一个服务器加所有对等点总共交付NF比特数据,得到NF/( u s + u 1 + u 2 + . . . + u N u_s+u_1+u_2+...+u_N us+u1+u2+...+uN),其中 u t o t a l = u s + u 1 + u 2 + . . . + u N u_{total}=u_s+u_1+u_2+...+u_N utotal=us+u1+u2+...+uN
    得到最终的最小分发时间

    P2P体系结构的自扩展性
    假设:F/u=1小时, u s u_s us=10u, d m i n ≥ u s d_{min}≥u_s dmin≥us

CS体系结构的文件分发时间随着对等点数量的增加呈线性增长,而P2P体系结构由于对等方既下载文件块又上传文件块,其文件分发时间对于任意N总小于1小时

分析:由于 d m i n d_{min} dmin≥ u s u_s us,则F/ d m i n d_{min} dmin 小于F/ u u u;对于 D P 2 P D_{P2P} DP2P的最后一项,分子为NF,分母为Nu+ u s u_s us必然会得到一个小于F/u的结果

BitTorrent协议

一个用于文件分发的P2P协议
BitTorrent基础介绍

洪流(torrent):参与一个特定文件分发的所有对等方的集合

在一个torrent中的对等方之间文件传输单位为等长度的文件块(chunk)

追踪器(tracker):每个torrent都有的节点,追踪当前仍在tracker中的对等点。追踪实现方式为:当一个对等方加入某洪流时,它向追踪器注册自己,并周期性地通知追踪器它仍在该洪流中
实例说明

邻近对等方

一个新的对等方Alice加入torrent向tracker注册,tracker随机选择了50个对等方,将这些对等方的ip地址发给Alice,Alice则尝试与这些对等方建立TCP连接,成功建立TCP连接的对等方称为Alice的"邻近对等方"。
文件分发准备

Alice周期性地通过TCP连接询问每个邻近对等方它们所具有的块列表。最终Alice将得到其所有邻近对等方所有的块列表,为其请求她没有的块做准备。

在任何给定的时刻,Alice将具有块的子集并知道它的邻居具有哪些块
请求哪些块

最稀缺优先(rarest first):向邻近对等方请求副本最少的块,一定程度上实现均衡每个块在洪流中的副本数量
响应哪些请求

对换算法:Alice根据当前能够以最高速率向她提供数据的邻居(疏通),给出其优先权。

Alice持续地测量接收到比特的速率,并确定以最高速率流入的4个邻居作为备选相应集,这四个对等方称为疏通(unchocked)。疏通集每过10s则重新计算并修改。另外,每过30s,Alice将随机选择另一个邻居向其发送chunk。除了这5个对等方,其他的邻近对等方都被阻塞,无法与Alice进行数据传输

对等方能够以趋向于找到彼此的协调的速率上载

随机选择邻居允许新的对等方得到块,避免纯速率匹配将数据传输局限在很小范围内

参考资料

  1. James F.Kurose&Keith W.Ross Computer Networking A Top-Down Approach(7th ed) 中文版
相关推荐
知识分享小能手3 小时前
线性代数学习教程,从入门到精通,向量组的线性相关性 — 完整知识点梳理(7)
学习·线性代数·机器学习
Shell运维手记3 小时前
Linux 常用基础命令学习笔记
linux·运维·笔记·学习·算法·github
FakeOccupational4 小时前
【电路笔记 STM32】Cortex-M7 内核上的数据缓存(D-Cache)结构+MPU+DMA&Cache+STM32CubeMX配置
笔记·stm32·缓存
动词ing4 小时前
【学习笔记】C语言(数组指针与指针数组+字符数组+函数+参数传递+字符串作为形参+递归函数+指针函数+回调函数+结构体嵌套+内存动态分配函数)
c语言·笔记·学习
z落落6 小时前
C# Modbus-ASCII 超详细完整笔记(协议原理+LRC算法+读写源码全拆解)
笔记
小O的算法实验室6 小时前
IEEE TII,学习为多目标深度学习生成偏好
人工智能·深度学习·学习
吃好睡好便好7 小时前
说说高温对情绪的影响
学习·生活·情绪·高温
for_ever_love__7 小时前
python基础语法学习: 文件操作
python·学习
m4Rk_8 小时前
【论文阅读】Agent 记忆机制(38):AMA——用多智能体协作动态选择记忆粒度
论文阅读·人工智能·学习
hanlin038 小时前
刷题笔记:力扣第189题-轮转数组
笔记·算法·leetcode