计算机网络-应用层协议5(P2P)

2023-11-06

本文介绍两种特别适合P2P设计的应用,第一种是文件分发,从单个源向大量对等方分发一个文件(特殊例子BitTorrent);第二种P2P应用是分布在大型对等社区中的数据库,重点讨论分布式散列表(DHT)的概念。

1.P2P文件分发

首先介绍文件分发环境中P2P体系结构的自扩展性;然后更详细地描述BitTorrent。

  • P2P体系结构的扩展性
    在这里插入图片描述
    因为对等方除了是比特的消费者外还是它们的重新分发者,所以在任意数量的对等方下,P2P体系结构的分发时间总是小于客户-服务器结构,而且一直小于1小时。也就是说它是自扩展的。
  • BitTorrent
    其是用于文件分发的流行P2P协议。参与特定文件分发的所有对等方的集合被称为一个洪流(Torrent),在一个洪流中的对等方彼此下载登场的文件块(chunk)。当一个对等方首次加入洪流,它没有块。随时间的进行,它下载的块越来越多。同时,它也会上载自己的块给别的对等方。洪流中,对等方可以随时加入、随时离开。
    每个洪流都有一个基础设施节点,称为追踪器。当一个对等方加入洪流时,它向追踪器注册自己,并周期性地通知洪流它仍在洪流中。
    当一个新的Alice加入洪流时,追踪器随机地从参与对等方的集合中选择对等方的一个子集,并将这个子集中所有对等方的IP地址告诉Alice。Alice与它们建立TCP连接,它们称为“邻近对等方”。
    Alice从它的邻居请求哪些块?——最稀缺优先技术
    Alice向哪些它请求块的邻居发送?——对换算法
    (1)最稀缺优先技术:针对它没有的块,向其邻近对等方申请最稀缺的块。
    (2)对换算法:Alice根据能够以最高速率向他提供数据的邻居,给出优先权。首先确定最高速率流入的4个邻居,每过10秒重新计算速率更新这4个邻居。每隔30秒,随机选择另外一个邻居向其发送块。除此5个邻居,其它皆被阻塞。

2.分布式散列表(DHT)

在数以百万计的对等方上存储(键,值)对,允许任何一个对等方用一个特别的键来查询分布式数据库,这就叫DHT。
为每个对等方分配一个标识符,其中每个标识符是一个[0,2^n -1]范围内的整数 ,n取某些固定的值。用散列函数把每个键也映射成[0, 2n -1]范围内的整数。
为对等方分配键时,为其标识符最邻近该键的对等方分配一个(键,值)对。如果该键恰好等于这些对等方标识符之一,我们在匹配的对等方中存储(键,值)对;如果该键大于所有对等方标识符我们使用模2^n规则,在具有最小标识符的对等方中存储(键,值)对。

  • 环形DHT
    在确定最邻近的对等方时,利用环形DHT,并更细化地在环形网络的基础上,增加“捷径”,使每个对等方不仅联系它的直接后继和直接前任,而且联系环上的数量相对少的捷径对等方。如图:
    在这里插入图片描述
  • 对等方扰动(在无接近DHT情况下
    假设对等方5离开,对等方4的更新如下:
    (1)对等方4利用它的直接后继(8)来代替它的第一个后继(5)
    (2)对等方4向新的第一个后继询问它的直接后继(10)的标识符和IP地址。最后对等方4将对等方10标记为它的第二个后继。
    假设一个标识符为13的对等方要加入该DHT,在加入时,他只知道1的存在:
    (1)13向1发送信息询问13的前任和后继;该报文通过DHT到达12时,他认识到自己是13的前任,并且它的当前后继15将称为13的后继;
    (2)12向13发送它的前任和后继信息;
    (3)13加入DHT,标记后继为15;通知12改其后继为13。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

计算机网络-应用层协议5(P2P) 的相关文章

  • [C/C++基础知识] main函数的参数argc和argv

    该篇文章主要是关于C C语言最基础的main函数的参数知识 是学习C 或C语言都必备的知识点 不知道你是否知道该知识 希望对大家有所帮助 一 main 函数参数通常我们在写主函数时都是void main 或int main return 0

随机推荐

  • CPU的工作原理

    一 CPU的基本概念 CPU 中央处理器 是一块超大规模的集成电路 是一台计算机的运算核心和控制核心 主要功能是解释计算机指令和处理计算机软件中的数据 二 CPU的组成部分 1 运算器 运算器是对数据加工和处理的中心 由算术逻辑单元 状态寄
  • TLS回调函数的两种写法

    include
  • 泛型+通配符(数学角度)

    打破常规 换个角度重新认识泛型和通配符 跳转提示 如果已经熟悉泛型基础知识的小伙伴可以直接跳过引入泛型这一部分 因为这一部分是关于泛型的基础知识的讲解 文章篇幅较长 想看换个角度认识泛型的部分 可以直接跳过引入泛型这部分 直接看从数学函数角
  • windows安裝mysql步骤

    1 mysql安装分为两种 一种是msi格式的 一种是zip格式的 zip格式相当于绿色版 不需要安装 只需解压缩之后就可以使用了 但是要进行配置 msi格式是安装版 2 mysql官网下载 https www mysql com 3 安装
  • 金融行业知识汇总

    文章目录 一 名词解释 1 一级市场 二级市场 2 投行 PE VC 1 投行 Investment Bank IB 2 VC PE 风险投资 Venture Capital VC 私募股权投资 Private Equity PE 3 买方
  • Apache2.4.23--解析漏洞

    复现环境 Apache文件解析漏洞与用户的配置有密切关系 严格来说属于用户配置问题 Apache文件解析漏洞涉及到一个解析文件的特性 Apache默认 个文件可以有多个以点分隔的后缀 当右边的后缀无法识别 则继续向左识别 发现后缀是 php
  • 强大的JTAG边界扫描(4):STM32边界扫描应用

    文章目录 1 获取芯片的BSDL文件 2 硬件连接 3 边界扫描测试 4 总结 试想这样一个场景 我们新设计了一款集成了很多芯片的板卡 包括BGA封装的微控制器 如FPGA MCU 还有LED 按键 串口 传感器 ADC等基本外设 我们需要
  • Unity 导出的EXE文件关闭时卡死崩溃

    Unity 导出的EXE文件关闭时崩溃 前言 项目分析情况 解决方法一 结论 前言 这个问题出现在Unity导出的可执行文件发生在需要关闭应用程序时无法正常关闭 只能从任务管理器中直接杀死进程 虽然这一步的目的是关闭程序但无法走正常途径就很
  • kettle中时间转换日期格式

    为什么80 的码农都做不了架构师 gt gt gt 经常会用到获取今天日期 但是在kettle中没有日期格式 只有时间格式 我们只有把时间格式转换成日期格式 第一步获取系统信息 第二步选择 改名值 第三步打印输出即可 转载于 https m
  • 【Java入门】统计字符串中“ a ~ z “各个字符出现的次数

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 前言 一 知识点 二 代码 三 运行截图 前言 入门版统计字符串中 a z 各个字符出现的次数 如果需要查询某个字符出现的次数可以写成一个方法 一 知识点 Scan
  • 微信小程序实现文字长按复制、一键复制功能

    一 不引入外部组件的实现方式
  • 将mysql服务启动类型设置为手动或自动提示拒绝访问

    可能被360或者火绒禁止了 直接去火绒 安全工具 启动项管理 服务项 显示禁用的启动项 找到Mysql56允许启动 这里说一下打开Mysql服务的命令 net start mysql56 卸载mysql服务还在 需要删除mysql服务 sc
  • 一张图看懂数据结构-——图

    最小生成树 Prim算法 图解 一些说明 min weight数组表示该集合到达剩余顶点的最小值 adjvex表示这个最小权值是由哪个顶点引入 每次选取最小的权值顶点加入后 需要更新min weight的数值 选取值变为0 全部都为0时表示
  • 时间序列分析-ARIMA模型

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 时间序列分析 ARIMA模型 概述 一 时间序列平稳性 1 严平稳 2 弱平稳 二 建模步骤 1 平稳性检验 2 人工p 和 q 阶数的确定 3 模型拟合AIC和BIC确定最
  • BUUCTF zip伪加密(发现伪加密的惊天大秘密)

    title BUUCTF zip伪加密 date 2021年8月18日 20点03分 tags BUUCTF Misc categories BUUCTF Misc 这道题我为何要单独拿出来写呢 因为我在解题的途中 发现了zip伪加密的惊天
  • 2017年河北秦皇岛天气数据的R语言分析报告

    1 背景 AQI就是各项污染物空气质量分指数中的最大值 当AQI大于50时 IAQI最大的污染物为首要污染物 若IAQI最大的污染物为两项或两项以上时 并列为首要污染物 空气质量指数 综合表示空气污染程度或空气质量等级的无量纲的相对数值 数
  • JEECG online表单代码生成菜单授权后,提示“没有权限,请联系管理员授权”

    JEECG online表单代码生成菜单授权后 提示 没有权限 请联系管理员授权 参考官方文档 http doc jeecg com 2044037 一 不添加按钮 权限 找到生成代码路径中的controller中的java文件进行队jav
  • pandas数据分组与聚合

    目录 1 数据分组 1 1 按列名分组 1 2按列表或元组分组 1 3 按字典分组 1 4按函数分组
  • Linux多线程编程知识汇总!

    大家好 我杂烩君 什么是多线程编程 1 线程和进程的区别 进程是指正在运行的程序 它拥有独立的内存空间和系统资源 不同进程之间的数据不共享 线程是进程内的执行单元 它与同一进程内的其他线程共享进程的内存空间和系统资源 2 多线程的优势和应用
  • 计算机网络-应用层协议5(P2P)

    本文介绍两种特别适合P2P设计的应用 第一种是文件分发 从单个源向大量对等方分发一个文件 特殊例子BitTorrent 第二种P2P应用是分布在大型对等社区中的数据库 重点讨论分布式散列表 DHT 的概念 1 P2P文件分发 首先介绍文件分