P2P 应用

P2P 工作方式概述

·在 P2P 工作方式下,所有的音频/视频文件都是在普通的互联网用户之间传输

1 具有集中目录服务器的 P2P 工作方式

·Napster 最早使用 P2P 技术,提供免费下载 MP3 音乐。

·Napster 将所有音乐文件的索引信息都集中存放在 Napster 目录服务器中。

·使用者只要查找目录服务器,就可知道应从何处下载所要的 MP3 文件。

·用户要及时向 Napster 的目录服务器报告自己存有的音乐文件。

·Napster 的文件传输是分散的,文件的定位则是集中的。

Napster 的工作过程

1.用户 X 向 Napster 目录服务器查询(采用客户服务器方式)谁有音乐文件 MP3#。

2.Napster 目录服务器回答 X:有三个地点有文件 MP3#,即 A, B 和 C(给出了这三个地点的 IP 地址)。于是用户 X 得知所需的文件 MP3# 的三个下载地点。

3.用户 X 可以随机地选择三个地点中的任一个。假定 X 向 A 发送下载文件 MP3# 的请求报文。双方都使用 P2P 方式通信。

4.对等方 A(现在作为服务器)把文件 MP3# 发送给 X。

集中式目录服务器的缺点

·可靠性差。

·会成为性能的瓶颈。

2 具有全分布式结构的 P2P 文件共享程序

·Gnutella 是第二代 P2P 文件共享程序,采用全分布方法定位内容的 P2P 文件共享应用程序。

·Gnutella 与 Napster 最大的区别不使用集中式的目录服务器,而是使用洪泛法在大量 Gnutella 用户之间进行查询。

·为了不使查询的通信量过大,Gnutella 设计了一种有限范围的洪泛查询,减少了倾注到互联网的查询流量,但也影响到查询定位的准确性。

·第三代 P2P 文件共享程序采用分散定位和分散传输技术。例如 KaZaA,电骡 eMule,比特洪流 BT (Bit Torrent) 等。

使用 P2P 的比特洪流 BT 主要特点

·BitTorrent 所有对等方集合称为一个洪流 (torrent)。

·下载文件的数据单元为长度固定的文件块 (chunk)。

·基础设施结点,叫做追踪器 (tracker)。

·A 和对等方建立了 TCP 连接。所有与 A 建立了 TCP 连接的对等方为相邻对等方(neighboring peers)。

相邻关系是逻辑的,对等方的数目是动态变化的

对等方之间互相传送文件数据块

BT 协议

问题:哪些文件块是首先需要向其相邻对等方请求的?

方法:A 使用最稀有的优先 (rarest first) 的技术,首先向其相邻对等方请求对应的文件块。

稀有:如果 A 所缺少的文件块在相邻对等方中的副本很少,那就是“很稀有的”。

问题:在很多向 A 请求文件块的相邻对等方中,A 应当向哪些相邻对等方发送所请求的文件块?

方法:凡当前以最高数据率向 A 传送文件块的某相邻对等方,A 就优先把所请求的文件块传送给该相邻对等方。

3  P2P 文件分发的分析

从互联网传送数据到主机,叫做下载 (download);

从主机向互联网传送,则称为上传 (upload) 或上载。

有 N 台主机从服务器下载一个大文件,其长度为 F bit。

假定主机与互联网连接的链路的上传速率和下载速率分别为 ui 和 di ,单位都是 bit/s。

客户-服务器方式下分发的最短时间分析:

·从服务器端考虑,所有主机分发完毕的最短时间 Tcs 不可能小于 NF/us ;

·下载速率最慢的主机的下载速率为 dmin,则 Tcs 不可能小于 F/dmin  。

·由此可得出所有主机都下载完文件 F 的最少时间是: Tcs=max( NF/us,F/dmin )。

P2P 方式下分发的最短时间分析

·初始服务器文件分发的最少时间不可能小于 F/us ;

·下载文件分发的最少时间不可能小于 F/dmin ;

·上载文件分发的最少时间不可能小于 NF/uT ,其中是 uT  是上传速率之和。

·所有主机都下载完文件 F 的最少时间的下限是: Tp2p >= max( F/us , F/dmin, NF/uT  )

时间比较

·设所有的对等方的上传速率都是 u,并且 F/u = 1 小时。

·设服务器的上传速率 us = 10u。

·当 N = 30 时,

        1.P2P 方式:最少时间的下限是 0.75 小时 < 1 小时(不管 N 多大)。

        2.客户服务器方式:最少时间是 3 小时。

4  在 P2P 对等方中搜索对象

·Napster 在一个集中式目录服务器中构建查找数据库,简单,但性能上有瓶颈

·Gnutella 是一种采用全分布方法定位内容的 P2P 文件共享应用程序,它解决了集中式目录服务器所造成的瓶颈问题。但 Gnutella 是在非结构化的覆盖网络中采用查询洪泛的方法进行查找,因此查找的效率较低

·现在广泛使用的索引和查找技术叫做分布式散列表 DHT (Distributed Hash Table)。

·DHT 也可译为分布式哈希表,由大量对等方共同维护。

·广泛使用的 Chord 算法是美国麻省理工大学于 2001 年提出的。

基于 DHT 的 Chord 环

·分布式散列表 DHT 利用散列函数,把资源名 K 及其存放的结点 IP 地址 N 都分别映射资源名标识符 KID 结点标识符 NID

·Chord 把结点按标识符数值从小到大沿顺时针排列成一个环形覆盖网络

·每个资源由 Chord 环上与其标识符值最接近的下一个结点提供服务。

通过指针表加速 Chord 表查找

·为了加速查找,在 Chord 环上可以增加一些指针表(finger table),又称为路由表查找器表

·对于结点 N4,其指针表的第 2 列第 i  行根据(N4 + 2i – 1)计算得出其后继结点

欢迎一起学习~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/685788.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Ubuntu Desktop 显示文件路径

Ubuntu Desktop 显示文件路径 1. GUI hot key2. CLIReferences 1. GUI hot key Ctrl L: 显示文件路径 2. CLI right click -> Open in Terminal -> pwd strongforeverstrong:~/Desktop$ pwd /home/strong/DesktopReferences [1] Yongqiang Cheng, https://yongqiang…

(08)Hive——Join连接、谓词下推

前言 Hive-3.1.2版本支持6种join语法。分别是&#xff1a;inner join&#xff08;内连接&#xff09;、left join&#xff08;左连接&#xff09;、right join&#xff08;右连接&#xff09;、full outer join&#xff08;全外连接&#xff09;、left semi join&#xff08;左…

C++ “雪花算法“原理

C雪花算法并不是传统的数据结构与算法而是一种崭新的分布式算法 属于深层次C 本篇文章就来描述一下雪花算法 什么是雪花算法: 雪花算法&#xff08;Snowflake&#xff09;是Twitter开源的一种分布式唯一ID生成算法。它可以在不依赖于数据库等其他存储设施的情况下&#xff0c…

【每日一题】06 排序链表

问题描述 给你链表的头结点 head &#xff0c;请将其按 升序 排列并返回 排序后的链表 。 求解 /*** Definition for singly-linked list.* struct ListNode {* int val;* struct ListNode *next;* };*/ struct ListNode* sortList(struct ListNode* head) {struct…

线性注意力机制全新升级!性能显著提高,速度、精度更优

线性注意力机制通过对传统注意力机制中的Softmax操作进行线性化处理&#xff0c;可以提高Transformer模型的并行性能、降低复杂度&#xff0c;在计算效率、模型表达能力等方面都具有优势。 作为一种常用有效的优化方法&#xff0c;线性注意力机制可以在保证模型性能的同时提高…

qt 开发 “控件之家“

本篇文章我们来描述一下Qt 控件 是qt中最基本 也是最难缠的 有种“小鬼难缠的感觉” qt常用控件大集合 Qt是一个广泛使用的跨平台应用程序框架&#xff0c;它提供了许多用于构建图形用户界面(GUI)的控件。以下是一些Qt中常用的控件&#xff1a; QPushButton&#xff1a;这是…

软考 系统分析师系列知识点之信息系统战略规划方法(12)

接前一篇文章&#xff1a;软考 系统分析师系列知识点之信息系统战略规划方法&#xff08;11&#xff09; 所属章节&#xff1a; 第7章. 企业信息化战略与实施 第4节. 信息系统战略规划方法 7.4.8 战略一致性模型 信息化战略接受企业战略的指导&#xff0c;企业战略需要信息化…

链表总结 -- 《数据结构》-- c/c++

链表的概念 链表是一种物理存储结构上非连续存储结构&#xff0c;数据元素的逻辑顺序是通过链表中的引用链接次序实现的 。 链表是一种通过指针串联在一起的线性结构&#xff0c;每一个节点由两部分组成&#xff0c;一个是数据域一个是指针域&#xff08;存放指向下一个节点的…

适用于Android 的 7 大短信恢复应用程序

对于 Android 用户来说&#xff0c;丢失重要的短信可能是一种令人沮丧的体验。幸运的是&#xff0c;有许多短信恢复应用程序可以帮助恢复丢失或删除的短信。在本文中&#xff0c;将与您分享 7 个最佳短信恢复应用程序&#xff0c;并帮助您找到可用于恢复已删除消息的最佳应用程…

【网工】华为设备命令学习(防火墙)

实验目的PC1连接到外网。 关于防火墙的其他知识后续补充。 ensp里的防火墙 用户名admin 密码Admin123 防火墙的接口类型 1.路由模式 物理口可以直接配. ​​​​​2.交换模式 物理口不能直接配IP&#xff0c;类似交换机&#xff0c;可以配vlan 首先我们先要对各个设备进…

2.1.1 摄像头

摄像头 更多内容&#xff0c;请关注&#xff1a; github&#xff1a;https://github.com/gotonote/Autopilot-Notes.git 摄像头是目前自动驾驶车中应用和研究最广泛的传感器&#xff0c;其采集图像的过程最接近人类视觉系统。基于图像的物体检测和识别技术已经相当成熟&#…

【TC3xx芯片】TC3xx芯片SMU模块详解

目录 前言 正文 1.SMU功能概述 1.1 SMU架构 1.2 SMU_core 1.3 SMU_stdby 2. SMU功能详述 2.1 SMU_core 2.1.1 Reset类型 2.1.2 接口&#xff08;Interfaces&#xff09;概述 2.1.2.1 SMU_core到SCU的接口 2.1.2.2 SMU_core到IR的接口 2.1.2.3 SMU_core到Ports(Err…

私立医院患者大数据分析平台建设方案

一、项目目标 1、数据质量,统计数字不仅是真实可信,而且要及时,便于及时判断企业经营情况,同时通过内外部数据的对标,发现企业经营问题。 2、提供指标的监控预警,为决策提供支持,减少杂乱无用报表的生产。 3、提升数据处理效率,提高报表的可用性,让数据标准化,提高…

英文论文(sci)解读复现【NO.18】基于DS-YOLOv8的目标检测方法用于遥感图像

此前出了目标检测算法改进专栏&#xff0c;但是对于应用于什么场景&#xff0c;需要什么改进方法对应与自己的应用场景有效果&#xff0c;并且多少改进点能发什么水平的文章&#xff0c;为解决大家的困惑&#xff0c;此系列文章旨在给大家解读发表高水平学术期刊中的 SCI论文&a…

代码随想录算法训练营第三十四天|860.柠檬水找零 406.根据身高重建队列 452. 用最少数量的箭引爆气球

860.柠檬水找零 链接&#xff1a;力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 细节&#xff1a; 1. 首先根据题意就是只有5.的成本&#xff0c;然后就开始找钱&#xff0c;找钱也是10.和5. 2. 直接根据10 和 5 进行变量定义&#xff0c;然后去循环…

面试经典150题——螺旋矩阵

"The harder the conflict, the more glorious the triumph." - Thomas Paine 1. 题目描述 2. 题目分析与解析 2.1 思路一 看到题目&#xff0c;先仔细观察矩阵&#xff0c;题目要求我们给出顺时针遍历的结果即可&#xff0c;我们根据矩阵可以看出&#xff0c;首…

Android 12.0 MTK Camera2 设置默认拍照尺寸功能实现

1.前言 在12.0的系统rom定制化开发中,在mtk平台的camera2关于拍照的一些功能修改中,在一些平台默认需要设置最大的分辨率 来作为拍照的分辨率,所以就需要了解拍照尺寸设置流程,然后来实现相关的功能 如图: 2.MTK Camera2 设置默认拍照尺寸功能实现的核心类 \vendor\me…

.NET Core MongoDB数据仓储和工作单元模式实操

前言 上一章节我们主要讲解了MongoDB数据仓储和工作单元模式的封装&#xff0c;这一章节主要讲的是MongoDB用户管理相关操作实操。如&#xff1a;获取所有用户信息、获取用户分页数据、通过用户ID获取对应用户信息、添加用户信息、事务添加用户信息、用户信息修改、用户信息删除…

Matplotlib plt.scatter:从入门到精通,只需一篇文章!

Matplotlib plt.scatter&#xff1a;从入门到精通&#xff0c;只需一篇文章&#xff01;&#x1f680; 利用Matplotlib进行数据可视化示例 &#x1f335;文章目录&#x1f335; 一、plt.scatter入门&#xff1a;轻松迈出第一步 &#x1f463;二、进阶探索&#xff1a;plt.scatt…

使用Docker Compose搭建Redis主从复制

在Docker中搭建Redis主从架构非常方便&#xff0c;下面是一个示例&#xff0c;演示一下如何使用Docker Compose搭建一个Redis主从复制环境。首先&#xff0c;确保我们本地环境已经安装了Docker和Docker Compose。 我这里使用OrbStack替代了Docker desktop。 1. 创建一个名为r…