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

news/2025/6/23 14:13:23

目录

  • 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传输。所以混合体就很好理解了,就是上面两种方法的结合模式。

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

文章来源:https://blog.csdn.net/hhw_hhw/article/details/133992258
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:https://dhexx.cn/news/show-5091402.html

相关文章

AGI超级互联启动会落幕,UCC启动城市节点,促算力普及千家万户

10月24日,由中关村超互联新基建产业创新联盟、中国智能计算产业联盟主办,互联科技、鼎好DH3联合承办的“AGI超级互联启动会(AGI Ultra Cross Connects Kick-off Convention)”在北京鼎好DH3圆满举行。 本次活动汇聚众多行业专家、…

JAVA 链式编程和建造者模式的使用(lombok的使用)

0.说明 0.1 链式编程 链式编程的原理是返回一个this对象,也就是返回对象本身,从而达到链式效果。这样可以减少一些代码量,是java8新增的内容。 此处主要介绍在新建对象使用链式编程更加方便的创建对象。链式编程的一些常见用法可以看这个&a…

分频音响和全频音响的区别

起初,音箱发明开始,它是全频的,后来为了更好的拓展音箱的频率范围,逐渐演变成分频的了。目前分频音箱占主流,但由于材料科技和磁铁技术的发展, 似乎全频音箱又开始逐步被推崇了,那么它们到底有何…

界面控件DevExtreme v23.1 - UI组件 UI模板库增强

DevExtreme拥有高性能的HTML5 / JavaScript小部件集合,使您可以利用现代Web开发堆栈(包括React,Angular,ASP.NET Core,jQuery,Knockout等)构建交互式的Web应用程序。从Angular和Reac&#xff0c…

【linux】倒计时小程序

倒计时小程序 第一步(创建一个目录)mkdir processbar: 进入目录cd processbar: 第二步(创建一个.h文件【声明】,两个.c文件【实现】和【函数调用】的文件)touch processBar.h touch processB…

如何在 SwiftUI 中创建悬浮操作按钮

文章目录 前言创建悬浮操作按钮悬浮按钮出现在屏幕的最前方悬浮按钮位于屏幕的右下角使悬浮按钮呈现圆形添加阴影总结 前言 悬浮操作按钮(Floating Action Button, FAB)是一种在 Android 和 Material Design 中使用的 UI 元素。它用于触发特定屏幕的主要…

财务RPA机器人真的能提高效率吗?

财务部门作为一个公司的管理职能部门承担着一个公司在商业活动中各个方面的重要职责。理论上来说,一个公司的财务部门的实际工作包含但不限于对企业的盈亏情况进行评估、对风险进行预测、通过数据分析把握好公司的财务状况、税务管理等。 然而,实际上在…

在自己的服务器上部署个人博客和开源项目:实现数字存在感

在数字时代,拥有自己的服务器不再是一项难以实现的任务。通过云计算和开源技术的广泛应用,个人可以轻松地拥有自己的服务器,并在其上部署个人博客以及开源项目,为自己在互联网上创造一个数字存在感。本文将介绍如何在自己的服务器…

LeetCode|动态规划|139. 单词拆分、198. 打家劫舍、213. 打家劫舍 II

目录 一、139. 单词拆分 1.题目描述 2.解题思路 3.代码实现 二、198. 打家劫舍 1.题目描述 2.解题思路 3.代码实现 三、213. 打家劫舍 II 1.题目描述 2.解题思路 3.代码实现 一、139. 单词拆分 1.题目描述 给你一个字符串 s 和一个字符串列表 wordDict 作为字典。…

GSCoolink GSV6183 带嵌入式MCU的MIPI D-PHY 转 DP/eDP

Gscoolink GSV6183是一款高性能、低功耗的MIPI D-PHY到DisplayPort/eDP 1.4转换器。通过集成基于RISC-V的增强型微控制器,GSV6183创造了一种具有成本效益的解决方案,提供了上市时间优势。MIPI D-PHY接收器支持CSI-2版本1.3和DSI版本1.3,每条通…