【计网 P2P】计算机网络 P2P(Peer to Peer)详解:中科大郑烇老师笔记 (七)

news2024/9/22 19:34:35

目录

  • 0 引言
  • 1 C/S 模式 VS P2P模式
  • 2 P2P 概述
    • 2.1 纯P2P架构
    • 2.2 非结构化P2P和结构化(DHT)P2P
      • 2.2.1 非结构化P2P
      • 2.2.1 结构化P2P
    • 2.3 P2P需要解决的问题及解决方案
      • 2.3.1 集中式目录
      • 2.3.2 完全分布式
      • 2.3.3 混合体

请添加图片描述

  • 🙋‍♂️ 作者:海码007
  • 📜 专栏:计算机四大基础专栏
  • 📜 其他章节:网络快速入门系列、计网概述、计网应用层详解、计网Web和HTTP、计网FTP、计网EMail、计网DNS、计网P2P
  • 💥 标题:【计网 P2P】计算机网络 P2P(Peer to Peer)详解:中科大郑烇老师笔记 (七)
  • ❣️ 寄语:人生的意义或许是可以发挥自己全部的潜力,所以加油吧!
  • 🎈 最后:文章作者技术和水平有限,如果文中出现错误,希望大家能指正

0 引言

之前介绍的都是 C/S 模式,但是 C/S 模式存在很多缺点,客户端都需要通过服务器获取服务。

1 C/S 模式 VS P2P模式

C/S模式(Client/Server模式)和P2P模式(Peer-to-Peer模式)是两种常见的计算机网络架构。它们在设计和功能上存在一些区别,下面是它们的优缺点和区别:

  1. C/S模式(Client/Server模式)

优点:

  • 中心化管理:C/S模式中,服务器负责管理和控制整个系统,可以集中管理和维护资源,提高网络的安全性和可靠性。
  • 高性能:服务器可以专注于处理数据和请求,分担了客户端的负担,可以提供更高的性能和响应速度。
  • 数据一致性:服务器拥有数据的权威性,可以确保数据的一致性和完整性。

缺点:

  • 单点故障:C/S模式中,服务器是中心节点,如果服务器发生故障或宕机,整个系统将无法正常工作。
  • 扩展性限制:C/S模式下,服务器承担大部分的计算和存储任务,当用户数量增加或数据规模扩大时,服务器的负载可能会过大,限制了系统的可扩展性。
  • 高成本:C/S模式需要专门的服务器来支持,这增加了系统的成本和复杂性。
  1. P2P模式(Peer-to-Peer模式)

优点:

  • 去中心化:P2P模式中,每台计算机都可以充当客户端和服务器,节点之间平等地共享资源和服务,不存在单点故障。
  • 高度可扩展:P2P模式下,系统的性能和存储容量可以随着节点的增加而线性扩展,更适合大规模分布式环境。
  • 灵活性:P2P模式不依赖于中心服务器,节点之间可以直接通信和交换数据,提高了网络的灵活性和自主性。

缺点:

  • 安全性风险:P2P模式下,节点之间直接通信,可能存在安全风险和数据泄露的风险,需要采取额外的安全措施来保护系统和数据。
  • 网络负载:P2P模式中,每个节点都要承担一部分计算和存储任务,当节点数量庞大时,可能导致网络负载过大,影响系统性能。
  • 数据一致性:P2P模式下,节点之间的数据一致性较难保证,需要采取一致性协议和机制来解决数据同步和冲突问题。

综上所述,C/S模式适用于需要集中管理和控制的系统,强调安全性和数据一致性而P2P模式适用于去中心化、可扩展性要求较高的系统,强调灵活性和可扩展性。选择哪种模式取决于具体的应用需求和系统规模。

使用一张思维导图总结一下:
在这里插入图片描述

  1. 在文件分发应用中,C/S 和 P2P 的比较

首先思考一个问题从一台服务器分发文件(大小为F)到N个peer需要多少时间?
Peer节点上下载能力(upload、download)是有限的资源
在这里插入图片描述

1) 使用C/S模式分析该问题:客户端都是通过服务器获取文件,所以客户端的上载能力不是影响因素,主要取决于服务器的上载能力Us。

  • 服务器必须顺序传输(上载)N个文件拷贝(速度是:NF/Us)
  • 每个客户端必须下载一个文件拷贝。(下载速度是:F/dmin)
    在这里插入图片描述

当客户端比较少的时候,客户端的下载能力是瓶颈;
但是客户端数量很多时,服务器的上载能力是瓶颈;

2) 使用P2P模式分析该问题:

首先看一个例子,清楚P2P是如何运作的
在这里插入图片描述

如下图所示:随着用户(Peer)数量的增加,请求节点数量增加,同时提供服务的节点数量也在增加,所以文件分发的时间不会增长的很快。C/S模式几乎是线性增长。
在这里插入图片描述

2 P2P 概述

2.1 纯P2P架构

在这里插入图片描述

2.2 非结构化P2P和结构化(DHT)P2P

2.2.1 非结构化P2P

非结构化P2P是指没有明确定义的网络拓扑结构的P2P系统。在非结构化P2P中,节点之间的连接是随机建立的,节点可以自由地加入和离开网络。这种模式下,节点通常通过广播或查询路由表来查找其他节点,并在节点之间直接进行通信和资源共享。非结构化P2P适用于小规模的P2P网络,例如点对点文件共享或实时通信应用。

以下是一些非结构化的P2P网络的例子:

  1. Gnutella:Gnutella是一个著名的非结构化P2P协议,它允许节点直接连接和通信,节点之间通过洪泛式传播查询消息来进行资源搜索。
  2. FastTrack:FastTrack是用于文件共享的非结构化P2P协议,被用于诸如KaZaA和Morpheus等应用程序中。它通过广播查询消息和使用缓存来实现文件搜索和资源发现。
  3. BitTorrent:BitTorrent是一种混合的P2P协议,它既具有非结构化的特点,又包含了一些结构化的元素。BitTorrent网络中的节点通过Tracker服务器进行资源发现,并通过分片和对等交换来实现高效的文件传输。
  4. eDonkey网络:eDonkey网络也是一个非结构化的P2P网络,用于文件共享。它使用了一种称为"Kademlia"的分布式哈希表(DHT)来管理节点和文件的索引信息。

在这里插入图片描述

2.2.1 结构化P2P

  • 结构化P2P使用分布式哈希表(Distributed Hash Table,DHT)来管理节点之间的连接和资源分配。DHT是一种分布式存储系统,将键值对映射到网络中的节点上,并提供高效的查找和存储功能。
  • 在结构化P2P中,节点按照一定的规则组织成结构化的网络拓扑,例如环形或树形结构。这种模式下,节点可以根据键的哈希值来定位存储该键值对的节点,并通过路由表进行高效的查找。结构化P2P适用于大规模的P2P网络,例如分布式存储系统或区块链技术。

以下是一些结构化的P2P网络的例子:

  1. Chord:Chord是一种常用的结构化P2P协议,它使用一致性哈希算法来管理节点和文件的分布。Chord网络中的节点按照哈希值的顺序排列成一个环,节点可以通过查找后继节点的方式进行路由和资源发现。
  2. CAN:CAN(Content-Addressable Network)是一种基于网格结构的结构化P2P网络,将网络空间划分为多个维度,每个节点负责管理一个或多个区域。CAN网络使用坐标系统来定位和路由文件。
  3. Kademlia:Kademlia是一种用于分布式哈希表(DHT)的结构化P2P协议,它通过XOR距离度量来管理节点和数据的分布。Kademlia网络中的节点通过路由表来维护对其他节点的引用,实现高效的路由和资源查找。
  4. Pastry:Pastry是一种用于构建大规模结构化P2P网络的协议,它使用类似于Chord的一致性哈希算法来定位和路由节点。Pastry网络中的节点通过路由表来管理对其他节点的引用。

在这里插入图片描述

2.3 P2P需要解决的问题及解决方案

  • P2P面临的两大问题:
    • 如何定位所需资源
    • 如何处理对等方的加入与离开
  • 可能的解决方案:
    • 集中式目录
    • 完全分布式
    • 混合体

2.3.1 集中式目录

有一个集中式目录服务器,每个节点上线时,需要在集中式目录服务器注册,告诉它自己上线了(下线也是同理)。所以集中式目录服务器就知道了每个节点的上线信息以及资源信息。
在这里插入图片描述

集中式目录存在的问题:

  • 单点故障:目录服务器故障,就全部瘫痪
  • 性能瓶颈
  • 侵犯版权

2.3.2 完全分布式

  • Gnutella 是一种完全分布式非结构化 P2P 协议。它是在 2000 年左右开发的,旨在实现点对点文件共享。Gnutella 网络中的节点相互连接,没有中心服务器或中心节点。每个节点都可以作为文件的资源提供者和请求者。
  • Gnutella 中,节点通过广播消息来发现其他节点,并建立直接连接以进行文件搜索和下载。当一个节点搜索某个文件时,它会向相邻节点发送查询消息,然后逐级传播到整个网络当某个节点拥有所需文件时,它可以响应查询消息并将文件直接发送给请求者
  • Gnutella非结构化特性使得它适用于小规模的 P2P 文件共享。节点可以自由地加入和离开网络,网络拓扑结构没有严格的规定。这种灵活性使得 Gnutella 在一定程度上能够应对节点的动态变化和网络的不稳定性。
    需要注意的是,Gnutella 是一种早期的 P2P 协议,由于其非结构化的特点,它可能在大规模网络环境下面临一些挑战,如搜索效率和扩展性。随着时间的推移,结构化的 P2P 系统如 BitTorrent 和基于 DHT 的协议逐渐取代了 Gnutella,在大规模网络中更为常见

在这里插入图片描述

Gnutella的协议
在这里插入图片描述

2.3.3 混合体

组长与组长之间通过完全分布式P2P传输,组长和组员通过集中式目录P2P传输。所以混合体就很好理解了,就是上面两种方法的结合模式。

在这里插入图片描述
在这里插入图片描述

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

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

相关文章

智能井盖监测系统功能,万宾科技传感器效果

智能井盖传感器的出现是高科技产品的更新换代,同时也是智慧城市建设中的需求。在智慧城市建设过程之中,高科技产品的应用数不胜数,智能井盖传感器的出现,解决了城市道路安全保护着城市地下生命线,改善着传统井盖带来的…

【Qt样式(qss)-5】qss局部渲染混乱,错乱,不生效的一种原因

前言: 之前写过一些关于qss的文章: 【Qt样式(qss)-1】手册小结(附例:软件深色模式)_深蓝色主题qss表-CSDN博客 【Qt样式(qss)-2】使用小结(软件换肤&#…

拆贡献+统计非法可能不统计非法贡献:ARC150D

https://atcoder.jp/contests/arc150/tasks/arc150_d 先拆贡献成每个点,然后就只需要考虑这条链上的情况了 我们现在要求的是: 在所有点选完之前,最后一个点被选了多少次 我们发现这很难做,但有个性质: 在所有点选…

国外创意二维码案例:利马博物馆的二维码艺术展!

今天我们要分享的品牌创意二维码案例来自国外一家博物馆。 2022年12月,位于秘鲁的利马艺术博物馆策划并展出了一场别开生面的艺术展。和以往的展览不同,这次展览的主角是一些艺术画作“雕刻”而成的二维码。 利马博物馆(The Lima Art Museum…

OPC UA:工业领域的“HTML”

OPC UA是工业自动化领域的一项重要的通信协议。它的特点是包括了信息模型构建方法。能够建立工业领域各种事物的信息模型。在工业自动化行业,OPCUA 类似互联网行业的HTTP协议和“HTML”语言。能够准确,可靠地描述复杂系统中各个元素,并且实现…

质数(素数)prime :只能被 1 和 它本身整除的自然数,不可再分,(三种方式求出质数)

从 2 开始,到这个数 减 1 结束为止, 都不能被这个数本身整除。例如:5 是否是质数 ? 那么 2,3,4,都不能被 5 整除 所以 5 是 质数判断 n 是否是质数? 2,3,4&…

Python基础入门例程12-NP12 格式化输出(二)

目录 描述 输入描述: 输出描述: 示例1 解答: 说明: 描述 牛牛、牛妹和牛可乐都是Nowcoder的用户,某天Nowcoder的管理员希望将他们的用户名以某种格式进行显示, 现在给定他们三个当中的某一个名字name…

No module named ‘cv2’ 解决方法

目录 解决方案1解决方案2 解决方案1 一般情况下的解决方案 在自己的虚拟环境里面安装就行 pip install opencv-python解决方案2 但是我遇到的情况没有这么简单,我使用了pip list | grep open 搜索含有open字样的opencv的包,结果显示已经安装了 我直接进入我的自定义的虚拟…

TCP链接为什么要必须要四次挥手,为什么链接三次握手即可?

为什么TCP链接要三次握手,四次挥手? 寄快递两个问题三次握手四次挥手 寄快递 背景:小王要寄快递,早上上班把快递放在门口,等上午快递员到门口拿到快递。 小王打电话给快递小哥告诉他取件码。 这个交互其实就是TCP 传输…

Python第三方库 - Flask(python web框架)

1 Flask 1.1 认识Flask Web Application Framework( Web 应用程序框架)或简单的 Web Framework( Web 框架)表示一个库和模块的集合,使 Web 应用程序开发人员能够编写应用程序,而不必担心协议,线…

理解OOMKilled

背景 今天部署es集群时,pod总是报OOMKilled,于是理解的于是进行了排查 参考文章:https://zhuanlan.zhihu.com/p/519430209?utm_id0 排查,从两方面入手 1.查看node,并通过kubectl describe node,pod所在…

【Java笔记+踩坑】设计模式——原型模式

导航: 【Java笔记踩坑汇总】Java基础JavaWebSSMSpringBootSpringCloud瑞吉外卖/黑马旅游/谷粒商城/学成在线设计模式面试题汇总性能调优/架构设计源码-CSDN博客​ 目录 零、经典的克隆羊问题(复制10只属性相同的羊) 一、传统方案&#xff1…

unity 圆形障碍,避障算法,动态避障,静态避障,屎壳郎推屎回娘家

Unity3d圆形障碍避障算法,动态避障,静态避障 屎壳郎推屎回娘家 废话不多上图 1:根据,屎和娘家的位置做计算,不管屎在哪里,获取朝向娘家,屎后面一定距离的位置 //获取位置Vector3 GetTraget…

【MySQL架构篇】存储引擎

文章目录 1. 概述2 InnoDB引擎:具备外键支持功能的引擎3. MyISAM引擎:主要的非事务处理存储引擎4. Archive 引擎:用于数据存档5. Blackhole 引擎: 丢弃写操作,读操作会返回空内容6. CSV引擎:存储数据时,以逗…

Linux新建用户、删除用户以及用户之间的切换

Linux新建用户、删除用户以及用户之间的切换 文章目录 Linux新建用户、删除用户以及用户之间的切换1. 新建用户adduser2. 删除用户userdel3. 切换用户su3.1 root用户 -> 普通用户3.2 普通账户 -> 普通账户3.3 普通账户 -> root账户 学习之前,我们需要了解一…

【中国数据】中国基础矢量数据(shp格式)

数据目录 数据举例 数据获取 专栏分享常用的地理空间数据,包括矢量数据、栅格数据、统计数据等,订阅专栏后,从私信查收专栏完整数据包,持续同步更新。

侯捷——2.C++标准库 体系结构与内核分析

侯捷——2.C标准库 体系结构与内核分析 1. C标准库 vs STL C标准库包含STL。标准库都用 std 这个命名空间包装起来。 2. STL体系结构基础介绍 allocators(分配器)是给containers(容器)分配内存的。当要创建容器时,必…

C# Onnx Yolov8 Detect 印章 指纹捺印 检测

应用场景 检测文件中的印章和指纹捺印,用于判断文件是否合规(是否盖章,是否按印) 效果 项目 代码 using Microsoft.ML.OnnxRuntime; using Microsoft.ML.OnnxRuntime.Tensors; using OpenCvSharp; using System; using System.…

debian 10 安装apache2 zabbix

nginx 可以略过,改为apache2 apt updateapt-get install nginx -ynginx -v nginx version: nginx/1.14.2mysql 安装参考linux debian10 安装mysql5.7_debian apt install mysql5.7-CSDN博客 Install and configure Zabbix for your platform a. Install Zabbix re…

Failed to run the WC DB work queue associated with 错误的解决

步骤: 1、”文件夹选项"中,显示所有隐藏的文件夹及文件,操作后,能看到隐藏的.svn文件夹下的wc.db文件了 2、到官网下载 sqlite 如果是Windows系统,下载Precompiled Binaries for Windows 下红框中版本 3、用sq…