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

目录

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

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


相关推荐
xiaoyalian3 小时前
R语言绘图过程中遇到图例的图块中出现字符“a“的解决方法
笔记·r语言·数据可视化
Red Red5 小时前
网安基础知识|IDS入侵检测系统|IPS入侵防御系统|堡垒机|VPN|EDR|CC防御|云安全-VDC/VPC|安全服务
网络·笔记·学习·安全·web安全
贰十六6 小时前
笔记:Centos Nginx Jdk Mysql OpenOffce KkFile Minio安装部署
笔记·nginx·centos
知兀6 小时前
Java的方法、基本和引用数据类型
java·笔记·黑马程序员
醉陌离7 小时前
渗透测试笔记——shodan(4)
笔记
LateBloomer7777 小时前
FreeRTOS——信号量
笔记·stm32·学习·freertos
legend_jz7 小时前
【Linux】线程控制
linux·服务器·开发语言·c++·笔记·学习·学习方法
Komorebi.py7 小时前
【Linux】-学习笔记04
linux·笔记·学习
fengbizhe8 小时前
笔试-笔记2
c++·笔记
余为民同志8 小时前
mini-lsm通关笔记Week2Day4
笔记