计算机网络——13P2P应用

news2024/11/25 0:28:54

P2P应用

纯P2P架构

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

例子:

  • 文件分发
  • 流媒体
  • VoIP

文件分发:C/S vs P2P

问题:从一台服务器分发文件(大小F)到N个Peer需要多少时间

  • Peer节点上下载能力是有限的资源

在这里插入图片描述

文件分发时间:C/S模式

  • 服务器传输:都是由服务器发送给peer,服务器必须顺序传输(上载)N个文件拷贝:
    • 发送一个copy: F / u s F/u_s F/us
    • 发送N个copy: N F / u s NF/u_s NF/us
  • 客户端:每个客户端必须下载一个文件拷贝
    • d m i n = d_{min} = dmin=客户端最小的下载速度
    • 下载带宽最小的客户端下载的时间: F / d m i n F/d_{min} F/dmin
  • 采用C/S方法将一个F大小的文件分发给N个客户端耗时: D c / s D_{c/s} Dc/s ≥ \geq max{NF/ u s u_s us,F/ d m i n d_{min} dmin}

文件分发时间:P2P模式

  • 服务器传输:最少需要上载一份拷贝
    • 发送一个拷贝的时间:F/ u s u_s us
  • 客户端:每个客户端必须下载一个拷贝
    • 最小下载带宽客户单耗时:F/ d m i n d_{min} dmin
  • 客户端:所有客户端总体下载量NF:
    • 最大上载带宽是: u s u_s us + ∑ \sum u i u_i ui
    • 除了服务器可以上载,其他所有的peer节点都可以上载
  • 采用P2P方法将一个F大小的文件分发给N个客户端耗时: D p 2 p D_{p2p} Dp2p ≥ \geq max{F/ u s u_s us,NF/( u s u_s us+ ∑ u i \sum u_i ui)}
  • 分子随着N线性变化,每个节点需要下载,整体下载量随着N增大;分母也是如此,随着peer节点的增多,每个peer也带了服务能力

在这里插入图片描述

P2P文件共享

例子

  • Alice在其笔记本电脑上 运行P2P客户端程序
  • 间歇性地连接到 Internet,每次从其 ISP得到新的IP地址
  • 请求“双截棍.MP3”
  • 应用程序显示其他有“ 双截棍.MP3” 拷贝的对 等方
  • Alice选择其中一个对等方, 如Bob.
  • 文件从Bob’s PC传送到 Alice的笔记本上:HTTP
  • 当Alice下载时,其他用户也 可以从Alice处下载
  • Alice的对等方既是一个Web 客户端,也是一个瞬时Web 服务器

所有的对等方都是服务器 = 可扩展性好

P2P:集中式目录

最初的“Napster”设计就是这个架构

  • 当对等方连接时,它告知中心服务器:
    • IP地址
    • 内容
  • Alice查询 “双截棍 .MP3” ,服务器返回Bob拥有这个文件
  • Alice从Bob处请求文件

在这里插入图片描述

P2P:集中式目录中存在的问题

  • 单点故障
  • 性能瓶颈
  • 侵犯版权

文件传输是分散的,而定位内容是高度集中的

查询洪泛:Gnutella

  • 全分布式
    • 没有中心服务器
  • 开放文件共享协议
  • 许多Gnutella客户端实现了Gnutella协议
    • 类似HTTP有许多的浏览器

覆盖网络:图

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

Gnutella:协议

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

可拓展性:限制范围的洪泛查询
在这里插入图片描述

Gnutella:对等方加入

  • 对等方X必须首先发现某些已经覆盖在网络中的其他对等方:使用可用对等方列表
    • 自己维持一张对等方列表(经常开机的对等方的IP)
    • 联系维持列表二Gnutella结点
  • X接着试图与该列表上的对等方建立TCP连接,直到与某个对等方Y建立连接
  • X向Y发送一个Ping报文,Y转发该Ping报文
  • 所有收到Ping报文的对等方以Ping报文格式响应
    • IP地址,共享文件的数量及总字节数
  • X收到许多Ping报文然后它能建立其他TCP连接

利用不匀称性:KaZaA

  • 每个对等方要么是一个组长,要么隶属与一个组长
    • 对等方与其组长之间有TCP连接
    • 组长对之间有TCP连接
  • 组长跟踪其所有的孩子的内容
  • 组长与其他组长联系
    • 转发查询到其他组长
    • 获得其他组长的数据拷贝

在这里插入图片描述

KaZaA:查询

  • 每个文件有一个散列标识码和一个描述符
  • 客户端向其组长发送关键字查询
  • 组长用匹配进行相应:
    • 对每个匹配:元数据、散列标识码和IP地址
  • 如果组长将查询转发给其他组长,其他组长也以匹配进行相应
  • 客户端选择要下载的文件
    • 向拥有文件的对等方发送一个带散列标识码的HTTP请求

P2P文件分发:BitTorrent

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

在这里插入图片描述

Peer加入torrent:

  • 一开始没有块,但是将会通过其他节点处理积累文件块
  • 向跟踪服务器注册,获得peer节点列表,和部分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

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

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

相关文章

《Go 简易速速上手小册》第2章:控制结构与函数(2024 最新版)

文章目录 2.1 条件语句:决策的艺术2.1.1 基础知识讲解2.1.2 重点案例:用户角色权限判断实现用户角色权限判断扩展功能实现代码功能扩展:添加或删除用户 2.1.3 拓展案例 1:成绩等级判断实现成绩等级判断功能实现代码扩展功能&#…

Spring中的事务实现、失效场景即AOP的相关概念理解

spring实现事务(声明式事务)的本质就是aop完成的,它会对方法的前后进行拦截,在执行方法之前开启事务,在执行完目标方法之后根据执行情况提交或回滚事务。aop就是面向切面编程,在spring中将那些与业务无关,但却对多个对象产生影响的…

Opencv简单图像操作

Opencv 一、读取图片 1.imshow Mat imread(const string& filename, intflags1 );flags: enum { /* 8bit, color or not */CV_LOAD_IMAGE_UNCHANGED -1, /* 8bit, gray */CV_LOAD_IMAGE_GRAYSCALE 0, /* ?, color */CV_LOAD_IMAGE_COLOR 1, /* any depth, ? */…

深度学习之线性模型

深度学习之线性模型 y w * x模型思路 y w * x b模型思路 y w * x模型 思路 这里求权重w , 求最适合的权重,就是求损失值最小的时候 这里用穷举法:在一个范围内,列出w的所有值,并且计算出每组数据的平均损失值,以w 为横坐标, 损失值为纵坐…

定时器按秒计时

一、函数学习 二、代码、 main.c #include "stm32f10x.h" // Device header #include "Delay.h" #include "OLED.h" #include "Timer.h"uint16_t Num;int main(void) {OLED_Init();Timer_Init(); OLED_ShowString(1,1,"Num:…

树莓派5 EEPROM引导加载程序恢复镜像

树莓派5不能正常启动,可以通过电源led灯的闪码来判断错误发生的大致情形。 LED警告闪码 如果树莓派由于某种原因无法启动,或者不得不关闭,在许多情况下,LED会闪烁特定的次数来指示发生了什么。LED会闪烁几次长闪烁,然…

Linux POSIX信号量 线程池

Linux POSIX信号量 线程池 一. 什么是POSIX信号量?二. POSIX信号量实现原理三. POSIX信号量接口函数四. 基于环形队列的生产消费模型五. 线程池 一. 什么是POSIX信号量? POSIX信号量是一种用于同步和互斥操作的机制,属于POSIX(Po…

C++入门篇——命名空间

在C/C中,变量、函数和后面要学到的类都是大量存在的,这些变量、函数和类的名称将都存 在于全局作用域中,可能会导致很多冲突。使用命名空间的目的是对标识符的名称进行本地化, 以避免命名冲突或名字污染,namespace关键…

Calendar的使用(Java)

直接从需求来理解:将2024年2月16日增加一个月 如果不使用Calendar的话,我们需要定义字符串记住这个日期,然后把字符串解析成Date日期对象,通过Date日期对象获取其毫秒值,然后增加一个月的毫秒值,再格式化时…

社区养老|社区养老服务系统|基于springboot社区养老服务系统设计与实现(源码+数据库+文档)

社区养老服务系统目录 目录 基于springboot社区养老服务系统设计与实现 一、前言 二、系统功能设计 三、系统实现 1、管理员部分功能 (1) 用户管理 (2)服务种类管理 (3)社区服务管理 &#xff08…

嵌入式培训机构四个月实训课程笔记(完整版)-Linux ARM驱动编程第五天-ARM Linux编程之字符设备驱动(物联技术666)

链接:https://pan.baidu.com/s/1V0E9IHSoLbpiWJsncmFgdA?pwd1688 提取码:1688 教学内容: 1、内核模块的简单框架: __init __exit执行完后就释放空间 简单框架:包含三个部分 1)模块初始化和模块退出函数…

题目:3.神奇的数组(蓝桥OJ 3000)

问题描述: 解题思路: 官方: 我的总结: 利用双指针遍历每个区间并判断是否符合条件:若一个区间符合条件则该区间在其左端点不变的情况下的每一个子区间都符合条件,相反若一个区间内左端点固定情况下有一个以…

排序算法---桶排序

原创不易,转载请注明出处。欢迎点赞收藏~ 桶排序(Bucket Sort)是一种排序算法,它将待排序的数据分到几个有序的桶中,每个桶再分别进行排序,最后将各个桶中的数据按照顺序依次取出,即可得到有序序…

MySQL免安装版安装教程

官网下载安装包 MySQL :: Download MySQL Community Server (Archived Versions) 选择mysql版本下载 安装配置MySQL 将下载完的Mysql安装包解压到指定目录 打开windos系统的cmd,以管理员身份运行 进入mysql文件夹中的bin目录 安装MySQL的服务mysqld --install 初…

【教程】C++语言基础学习笔记(五)——Vector向量

写在前面: 如果文章对你有帮助,记得点赞关注加收藏一波,利于以后需要的时候复习,多谢支持! 【C语言基础学习】系列文章 第一章 《项目与程序结构》 第二章 《数据类型》 第三章 《运算符》 第四章 《流程控制》 第五章…

姿态传感器MPU6050模块之陀螺仪、加速度计、磁力计

MEMS技术 微机电系统(MEMS, Micro-Electro-Mechanical System),也叫做微电子机械系统、微系统、微机械等,指尺寸在几毫米乃至更小的高科技装置。微机电系统其内部结构一般在微米甚至纳米量级,是一个独立的智能系统。 微…

C语言指针(初阶)

文章目录 1:内存与地址1.1内存1.2:如何理解编址 2:指针变量与地址2.1:指针变量与解引用操作符2.1.1:指针变量2.1.2:如何拆解指针类型2.1.3:解引用操作符 2.2:指针变量的大小 3:指针变量类型的意义代码1解引用修改前解引用修改后 代码2解引用修改前解引用修改后 4:const修饰指针…

【C语言期末项目-通讯录】-终级版本-可动态申请内存、可存储数据到文件(手把手详细过程,期末评分A+的项目,答辩辅助神博文,建议三连点赞收藏)

目录 ​编辑 前言: 1.项目功能需求分析 2.文件框架说明 3.程序主框架实现 4.创建联系人结构体类型和通讯录结构体类型 4.1创建通讯录 5.程序功能实现--封装功能函数实现不同功能 5.1通讯录初始化 5.2增加联系人 5.3显示所有联系人的信息 5.4删除指定…

BBC英式口语~发音练习~笔记整理

参考资料 原视频地址: https://www.bilibili.com/video/BV1D7411n7bS/?spm_id_from333.1245.0.0&vd_source5986fc7c8e6d754f3ca44233573aeaff 笔记图片

root MUSIC 算法补充说明

root MUSIC 算法补充说明 多项式求根root MUSIC 算法原理如何从 2 M − 2 2M-2 2M−2 个根中确定 K K K 个根从复数域上观察 2 M − 2 2M-2 2M−2 个根的分布 这篇笔记是上一篇关于 root MUSIC 笔记的补充。 多项式求根 要理解 root MUSIC 算法,需要理解多项式求…