中科大计网学习记录笔记(十):P2P 应用

前言:

学习视频:中科大郑烇、杨坚全套《计算机网络(自顶向下方法 第7版,James F.Kurose,Keith W.Ross)》课程
该视频是B站非常著名的计网学习视频,但相信很多朋友和我一样在听完前面的部分发现信息量过大,有太多无法理解的地方,在我第一次点开的时候也有相同的感受,但经过了一段时间项目的学习,对计网有了更多的了解,所以我准备在这次学习的时候做一些记录并且加入一些我的理解,希望能够帮助到大家。
往期笔记可以看专栏中的内容😊😊😊

文章目录

      • 2.6 P2P 应用
        • 2.6.1 P2P 的基本理解
        • 2.6.2 理论计算对比
        • 2.6.3 P2P 文件共享
        • 2.6.4 案例 —— BitTorrent
        • 2.6.5 结构化的 P2P 架构

2.6 P2P 应用

💡 P2P(Peer-to-Peer,点对点)应用是一种允许直接通信和资源共享的网络应用程序。在P2P网络中,每个参与者都可以充当客户端和服务器,从而实现对等的通信和资源共享。

2.6.1 P2P 的基本理解
  • P2P 网络架构中没有(或者极少)有一直运行的服务器,任意的端系统之间都可以实现直接的通信
  • 内容的上载和下载理由了 peer 节点的服务能力。

👉 常见的能够理由 P2P 架构来优化性能或者实现的案例有:

  • 文件分发
  • 流媒体
  • VoIP(通过互联网协议进行语音通信)

💡 大多数大型的云盘应用通常采用混合架构,既包括 CS 架构,也包括 P2P 架构。

  • 这种 混合架构 能够充分利用中心服务器提供的 稳定性可靠性
  • 同时通过 P2P 技术在用户之间直接传输 文件块,从而降低了中心服务器的负载并提高了下载速度。
  • 也就是说使用 P2P 架构不代表完全舍弃 CS 架构,两者混合使用会使得系统更加稳定。
2.6.2 理论计算对比

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

❓ 问题:从一台服务器上分发大小为 F 的文件到 N 个节点需要多少时间?

👉 这里暂时忽略掉传播延迟,这里仅考虑传输延迟也就是将数据传输到链路上的时间

👉 计算得出上载的时间为

  • N F u s \frac{NF}{u_s} usNF

  • 也就是上传 N 个大小为 F 的文件所需的时间

👉 用户下载的最长时间为

  • F d m \frac{F}{d_m} dmF

  • 也就是文件的大小除以用户中最小的下载速度

这两个中的最大值就是 CS 模式下实现分发大小为 F 的文件到 N 个节点需要的最短时间即:
D ≥ m a x ( N F u s , F d m ) D \ge max (\frac{NF}{u_s} , \frac{F}{d_m}) Dmax(usNF,dmF)
随着用户量 N 增大,前一项会占据绝对的主导地位,这就导致 D 会随着 N 的增大而 线性的增长

👉 与 CS 模式不同的是 P2P 模式在随着 N 增大的时候其服务器的数量也会增大,即 us 会变为 Nus,最终会导致下载速度随着用户的增大变化不大。

即:
D ≥ m a x ( F u s , F d m , N F u s + ∑ u i ) D \ge max(\frac{F}{u_s}, \frac{F}{d_m}, \frac{NF}{u_s + \sum u_i}) Dmax(usF,dmF,us+uiNF)
速度对比:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

2.6.3 P2P 文件共享

💡案例:

  • Alice 在自己的电脑上运行 P2P 的客户端,然后她请求“双截棍.MP3”
  • 应用程序自动显示有该资源的对等方(peer)
  • 然后 Alice 随机选择其中一个对等方,文件从这个对等方中得到这个文件
  • 而 Alice 得到这个文件后又可以作为一个服务器来供其他的对象下载。

❗ P2P 文件共享要解决的两大问题

  1. 如何定位所需要的资源
  2. 如何处理 peer 的加入和离开的记录

👉 有三种可能的方案:集中、分散、半分散

🍀 方案一:集中式的目录

  • 以 Napster1 最初的设计来举例:最初的 Napster 最初采用了集中式的目录来解决上面的两个问题,即有一台集中式的目录服务器,当用户 上线 的时候会告知服务器她的 IP 地址和它所具有的内容,来提供目录服务和登记用户的上线和下线。
  • 这种架构存在着几个问题
    1. 单点故障的问题:中央目录服务器如果挂掉就会导致单点故障
    2. 性能瓶颈的问题:用户量很大的时候集中式的目录服务器会变为性能的瓶颈
    3. 侵犯版权的问题

🍀 方案二:完全分布式
在这里插入图片描述

  • 与Napster不同,Gnutella是一种分散式的P2P网络,没有单一的中心服务器。在Gnutella网络中,每个参与者都是一个 对等节点,它们彼此连接并共享文件。
  • 邻居关系的建立和维护是Gnutella网络正常运行的关键部分,通过邻居关系可以快速的发送查询信息,而邻居又向它的其他邻居发送查询,指数级的扩散速度可以很快的使查询信息 遍布全网,称为泛洪查询。(解决了目录的问题)
    • 泛洪查询可能会导致问题查询在网络中一直传播,可以采用限制 TTL 或者记录查询请求的方式解决。
  • 邻居关系的建立:在应用安装的时候,配置文件中配置几个经常在线上的节点,当一个节点上线的时候向这个节点发送请求,这几个经常在线的节点继续向它的邻居节点发请求,这些节点最终都会向上线节点发送回复,上线的节点在这些节点中挑选几个作为自己的邻居节点。

🍀 方案三:混合型的方式

  • KaZaa是一个基于P2P技术的文件共享应用程序,KaZaa允许用户共享和下载各种类型的文件,如音乐、视频、图像和软件。
  • 每个对等方要么是一个组长,要么隶属于一个组长,对等方与组长之间有 TCP 连接,组长之间也有 TCP 连接,通过组长转发查询到其他组长来查询到哪个主机有这个资源。
2.6.4 案例 —— BitTorrent

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
💡 BitTorrent是一种用于文件共享的 协议和程序,它允许用户通过点对点的方式快速下载和分享文件。相比传统的直接下载方式,BitTorrent可以更有效地利用带宽,提高下载速度,并降低对中央服务器的依赖。

👉 BitTorrent协议的工作原理是将一个文件分割成小块,然后将这些小块分布到网络中的多个用户之间进行共享。

  • 当一个用户想要下载 某个文件 时,他会连接到一个称为 tracker 的服务器,获取 与该文件相关的信息,如其他用户的IP地址和已经下载的文件块。
  • 然后,用户会与其他拥有该文件的用户建立点对点的连接,从他们那里下载缺失的文件块,直到完成整个文件的下载。

👉 BitTorrent在文件的管理和下载过程中利用了一种称为位图(bitmap)的数据结构。

  • 位图是一种将每个文件块的下载状态表示为二进制位的数据结构
  • 在BitTorrent中,每个文件被划分为固定大小的块,每个块的下载状态(已下载或未下载)由位图中的相应位表示。
  • 当BitTorrent客户端连接到tracker服务器时,它会获取一个包含所有文件块的位图。这样,客户端就知道了其他对等节点所拥有的文件块和哪些文件块尚未下载。客户端使用这些信息来选择与哪些对等节点建立连接以下载所需的文件块。
  • 在下载过程中,当客户端成功下载一个文件块时,它会将相应的位图位设置为1,表示该文件块已经下载。如果客户端检测到某个文件块下载失败或损坏,则会将相应的位图位重置为0,以便重新下载该文件块。

👉 Tit-For-Tat 机制

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  • 一个节点 Alice 在提供服务的时候收到了八十个请求,这个 peer 会优先提供给比如说前面给这个节点提供服务最好的四个节点。
  • 等到传输一段时间后会随机选择一个节点为其提供服务,主要是为了优化疏通网络,当随机选择的这个节点接收到了 Alice 的服务的时候会在下个 Alice 可能向它发送的请求中将 Alice 排到靠前的位置
2.6.5 结构化的 P2P 架构

💡 结构化的P2P架构是一种按照特定规则组织节点和数据的对等网络结构。在结构化P2P网络中,节点通常按照一定的拓扑结构连接,使得节点之间可以高效地定位和交换信息。

👉 拓扑结构:结构化P2P网络通常基于一定的拓扑结构

  • 如分布式哈希表(DHT)、树形结构、超立方体等。这些结构能够有效地管理节点和数据的分布。

👉 节点标识:每个节点在结构化P2P网络中都有一个唯一的标识符

  • 通常是通过哈希函数生成的。这个标识符可以用来定位节点的位置和数据的存储位置。

  1. Napster是一个历史悠久的音乐共享服务,是最早期的P2P文件共享应用之一;最初作为一个音乐交换服务,允许用户共享和下载MP3音乐文件。 ↩︎

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

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

相关文章

【Java面试】数据类型常见面试题

什么是包装类型 将基本类型包装进了对象中得到的类型 基本类型和包装类型有什么区别 用途不同:基本类型一般用于局部变量,包装类型用于其他地方存储方式不同:用于局部变量的基本类型存在虚拟机栈中的局部变量表中,用于成员变量…

2023年哪个前端框架用的最多?

2023 年,TypeScript 的每月下载量持续稳定增长,年度累计下载量高达2,071,832,110(20.7 亿),展现了强大的市场需求和用户认可。 本文来通过详细的数据(2023 年 npm 累计下载量),看看…

从计算机恢复已删除文件的 6 种方法!

如果您的重要文件之一已从计算机中删除怎么办?如果不小心从硬盘中删除了文件怎么办? 如今的公司通常将重要数据存储在云或硬盘中。但最重要的是,您必须考虑这样一个事实:您可能会丢失计算机上的数据。数据丢失的原因有多种&#x…

【golang】23、gorilla websocket 源码:examples、数据结构、流程

文章目录 一、examples1.1 echo1.1.1 server.go1.1.2 client.go 1.2 command1.2.1 功能和启动方式1.2.2 home.html1.2.3 main.go 1.3 filewatch1.3.1 html1.3.2 serveHome 渲染模板1.3.3 serveWs1.3.4 writer() 1.4 buffer pool1.4.1 server1.4.2 client 1.5 chat1.5.1 server1…

回归预测模型:MATLAB岭回归和Lasso回归

1. 岭回归和Lasso回归的基本原理 1.1 岭回归: 岭回归(Ridge Regression) 是一种用于共线性数据分析的技术。共线性指的是自变量之间存在高度相关关系。岭回归通过在损失函数中添加一个L2正则项( λ ∑ j 1 n β j 2 \lambda \s…

使用PyOD进行异常值检测

异常值检测各个领域的关键任务之一。PyOD是Python Outlier Detection的缩写,可以简化多变量数据集中识别异常值的过程。在本文中,我们将介绍PyOD包,并通过实际给出详细的代码示例 PyOD简介 PyOD为异常值检测提供了广泛的算法集合&#xff0c…

相机图像质量研究(11)常见问题总结:光学结构对成像的影响--像差

系列文章目录 相机图像质量研究(1)Camera成像流程介绍 相机图像质量研究(2)ISP专用平台调优介绍 相机图像质量研究(3)图像质量测试介绍 相机图像质量研究(4)常见问题总结:光学结构对成像的影响--焦距 相机图像质量研究(5)常见问题总结:光学结构对成…

网络协议与攻击模拟_17HTTPS 协议

HTTPShttpssl/tls 1、加密算法 2、PKI(公钥基础设施) 3、证书 4、部署HTTPS服务器 部署CA证书服务器 5、分析HTTPS流量 分析TLS的交互过程 一、HTTPS协议 在http的通道上增加了安全性,传输过程通过加密和身份认证来确保传输安全性 1、TLS …

网络安全检查表

《网络攻击检查表》 1.应用安全漏洞 2.弱口令,默认口令 3.服务器互联网暴露 4.操作系统,中间件安全漏洞 5.研发服务器,邮件服务器等安全检查

CTFshow web(php命令执行 37-40)

?ceval($_GET[shy]);&shypassthru(cat flag.php); #逃逸过滤 ?cinclude%09$_GET[shy]?>&shyphp://filter/readconvert.base64-encode/resourceflag.php #文件包含 ?cinclude%0a$_GET[cmd]?>&cmdphp://filter/readconvert.base64-encode/…

使用C++从零开始,自己写一个MiniWeb

第一步:新建项目 1、打开VS点击创建新项目 2、选择空项目并点下一步(切记不能选错项目类型) 3、填写项目名称和路径,点击创建即可 新建好后项目是这样的比较干净 4、右击源文件,点击添加,新建http.cpp文件…

正点原子-STM32通用定时器学习笔记(1)

目录 1. 通用定时器简介(F1为例) 2. 通用定时器框图 ①时钟源 ②控制器 ③时基单元 ④输入捕获 ⑤捕获/比较(公共) ⑥输出比较 3.时钟源配置 3.1 计数器时钟源寄存器设置方法 3.2 外部时钟模式1 3.3 外部时钟模式2 3…

Toolify.ai 帮助你发现最好的 AI 网站和 AI 工具

🍉 CSDN 叶庭云:https://yetingyun.blog.csdn.net/ 人工智能作为一门前沿科技领域,吸引着越来越多的人关注和投入。首先,让我们探讨一下为什么对人工智能感兴趣是值得的: 科技进步与应用:近年来&#xff0c…

探索Nginx:强大的开源Web服务器与反向代理

一、引言 随着互联网的飞速发展,Web服务器在现代技术架构中扮演着至关重要的角色。Nginx(发音为“engine x”)是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器。Nginx因其卓越的性能、稳定性和灵活性&…

数字图像处理实验记录十(图像分割实验)

一、基础知识 1、什么是图像分割 图像分割就是指把图像分成各具特性的区域并提取出感兴趣目标的技术和过程,特性可以是灰度、颜色、纹理等,目标可以对应单个区域,也可以对应多个区域。 2、图像分割是怎么实现的 图像分割算法基于像素值的不连…

ES实战-book笔记1

#索引一个文档,-XPUT手动创建索引, curl -XPUT localhost:9200/get-together/_doc/1?pretty -H Content-Type: application/json -d {"name": "Elasticsearch Denver","organizer": "Lee" } #返回结果 {"_index" : "g…

[CUDA 学习笔记] Reduce 算子优化

Reduce 算子优化 注: 本文主要是对文章 【BBuf的CUDA笔记】三,reduce优化入门学习笔记 - 知乎 的学习整理 Reduce 又称之为归约, 即根据数组中的每个元素得到一个输出值, 常见的包括求和(sum)、取最大值(max)、取最小值(min)等. 前言 本文同样按照英伟达官方 PP…

微信小程序的图片色彩分析,解决画布网络图片报错问题,窃取网络图片的主色调

1、安装 Mini App Color Thief 包 包括下载包,简单使用都有,之前写了,这里就不写了 网址:微信小程序的图片色彩分析,窃取主色调,调色板-CSDN博客 2、 问题和解决方案 问题:由于我们的窃取图片的…

【02】右旋函数(C语言)

目录 题目:给定一个整数数组nums,将数组中的元素向右轮转k个位置,其中k是非负数。 1.暴力求解(轮转k次) 2. 三段逆置求解 ①逆置函数 ②轮转函数 3.空间换时间求解 题目:给定一个整数数组nums,将数组中…

Ubuntu 23.10通过APT安装Open vSwitch

正文共:888 字 8 图,预估阅读时间:1 分钟 先拜年!祝各位龙年行大运,腾跃展宏图! 之前在介绍OpenStack的时候介绍过(什么是OpenStack?),OpenStack是一个开源的…