P2P网络基础(学习笔记)

article/2025/10/8 20:16:17

P2P网络基础(学习笔记)

  • 基本概述
    • P2P与C/S架构
    • P2P网络的特点
    • P2P网络的主要功能
    • P2P网络的分类
      • 集中式
      • 全分布式非结构化
      • 全分布式结构化
      • 混合式
        • 比特币网络
    • P2P网络的应用

基本概述

P2P(peer-to-peer)网络又称为对等式网络,或者点对点网络。这是一种无中心的服务器、完全由用户群进行交换信息的互联网体系,P2P网络的每一个用户即是一个客户端,同时也具备服务器的功能。
它的定义是:网络的参与者共享他们所拥有的一部分硬件资源(处理能力、存储能力、网络连接能力、打印机等),这些共享资源通过网络提供服务和内容,能被其它对等节点(Peer)直接访问而无需经过中间实体。在此网络中的参与者既是资源、服务和内容的提供者(Server),又是资源、服务和内容的获取者(Client)。

P2P与C/S架构

在P2P技术之前,我们所有的网络应用都采用C/S或者B/S架构来实现的,然而在之前C/S架构的应用程序中,客户端软件向服务器发出请求,服务器然后对客户端请求做出响应,在这种情况下,如果客户端越多,此时服务器的压力就越大。而采用P2P技术实现的每台计算机既是客户端,也是服务器,他们的功能都是对等的。对于安装了P2P软件(如迅雷,QQ等)的计算机加入一个共同的P2P网络,网络中的节点之间可以直接进行数据传输和通信。
那么以C/S架构为例,我们接下来就看一看P2P网络与传统的架构有什么异同点。
相比于C/S,P2P有其自己独特的优势: 所有的客户端都能够提供资源,包括贷款、存储空间以及计算能力。所以其网络容量可以远超过其他模式。

C/S架构的缺点

  1. 服务器负担过重: 当大量用户访问C/S系统的服务器时,服务器常常会出现网络堵塞等现象,这时候,我们可能会通过增加投资提高服务器的硬件性能;
  2. 系统稳健性和服务器关联密切: 指的是如果服务器出现了问题时,整个系统的运行将会瘫痪(感觉是面向对象中经常强调的原则——低耦合原则)。
     图1 C/S模式

P2P的优点

  1. 对等模式: P2P系统中的客户端能够同时扮演客户端和服务器的角色,使两台计算机之间能够不通过服务器直接进行信息分享。比如:QQ中当好友在线的时候发信息时,相信此时是不需要经过服务器转发的,只有当给离线好友发送消息时,此时应该会先把消息发送到服务器端存储起来,当好友再次登录的时候,会和服务器进行连接,服务器会进行判断是不是给这个用户的信息来决定是否转发,QQ软件的实现属于混合型P2P结构的, 这个会在后面的P2P系统分类中介绍。这也就是说信息的传输分散在各个节点,无须经过某个中心服务器,用户的隐私信息被窃听和泄露的可能大大减少。
  2. 网络资源的分布式存储: 在C/S架构中,所有客户端都直接从服务器下载所有数据资源,这样势必会加重服务器的负担,而P2P则改变了以服务器为中心的状态,使每个节点可以先从服务器上个下载一部分,然后再相互从对方或者其他节点下载其余部分。采用这种方式,当大量客户端同时下载时,就不会形成网络堵塞现象了。
    在这里插入图片描述

P2P网络的特点

  1. 去中心化: 网络中的资源和服务分散在所有结点上,信息的传输和服务的实现都直接在结点之间进行,可以无需中间环节和服务器的介入,避免了可能的瓶颈。P2P的非中心化基本特点,带来了其在可扩展性、健壮性等方面的优势。
  2. 健壮性: P2P架构天生具有耐攻击、高容错的优点。
  3. 高性价比: P2P架构可以有效利用大量普通用户节点的空闲资源,不需要部署服务器或者需要部署的服务器很少。目前,P2P在这方面的应用多在学术研究方面,一旦技术成熟,能够在工业领域推广,则可以为许多企业节省购买大型服务器的成本。
  4. 私密性: 在P2P中,所有参与者都可以提供中继转发的功能,因而大大提高了匿名通信的灵活性和可靠性,能够为用户提供更好的隐私保护。
  5. 流量均衡: P2P网络环境下,硬件资源和数据内容分布在多个节点,而P2P节点可以分布在网络中任何角落,可以很好的实现整个网络的流量均衡。
  6. 负载均衡: P2P 网络环境下由于每个节点既是服务器又是客户机,减少了对传统C/S结构服务器计算能力、存储能力的要求,同时因为资源分布在多个节点,更好的实现了整个网络的负载均衡。
  7. 可扩展性: 不管是用户几点组成的P2P网络还是服务器节点组成的P2P网络,都是完全分布式的,不存在单点性能上的瓶颈。

P2P网络的主要功能

  1. 数据发布和传输: 数据发布和传输有一对一(如即时通讯)、一对多(如群组通信和消息广播)和多对多三种方式;
  2. 数据存储和检索: 数据存储和检索分为基于结构化的P2P网络方法和基于非结构化的P2P网络方法。结构化的P2P网络也就是基于分布式哈希表(DHT)的P2P网络,这个也是目前应用最广泛的,它的网络拓扑结构是确定的。而非结构化的P2P网络的资源存储通常与网络拓扑结构无关,例如Gnutella。
  3. 分布式数据处理: 目前,大多数分布式数据处理技术采用的是master/slave的架构。而基于P2P网络,也能够进行分布式的数据处理。

P2P网络的分类

集中式全分布式非结构化全分布式结构化混合式

集中式

这种网络采用的是中心化的拓扑结构,存在“中心服务器”,而其作用为保存接入节点的地址信息。倘若两个peer之间想要进行通信,那么它们可以通过中心服务器进行对方地址的索要。例如:将音乐文件与保存文件的节点相互关联,用户查找某个音乐时,中心服务器告知储存节点地址,用户点对点连接以获得音乐。由此可知,中心服务器是用来提供地址索引的(其他架构的中心服务器是提供所有的服务)。倘若其出现故障,那么整个系统就出现瘫痪了。
对小型网络而言,中心化拓扑模型在管理和控制方面占一定优势。但是由于整个网络严重依赖于中心服务器,容易造成性能瓶颈和单点故障的问题。该模型并不适合大型网络应用。
在这里插入图片描述

全分布式非结构化

这种网络采用Flooding搜索算法,每次搜索都把要查询的消息广播给网络上的所有节点。因为它没有中央索引服务器,每台机器在网络中是真正的对等关系,既是客户机同时又是服务器。全分布 P2P 节点可以自由加入退出,并且没有中心节点,节点地址没有结构化统一标准,整个网络结构呈随机图的结构, 无固定网络结构图。然而完全的自由意味着新节点无法得知 P2P 网络节点信息,从而无法加入网络。全分布式 P2P 网络更加自由化的同时也带来节点管理的问题,节点频繁加入、退出使得整个网络结构无法稳定, 大量的广播消息不仅造成资源浪费,甚至会阻塞网络。而比特币采用的就是这种 P2P 网络结构,全分布式使得任何人任何节点都可以参与,非结构化使得节点间既可以通过区块链 P2P 协议同步区块数据,又保持匿名隐私保护。
例如:当一台计算机要下载一个文件,它首先以文件名或者关键字生成一个查询,并把这个查询发送给与它相连的所有计算机,这些计算机如果存在这个文件,则与查询的机器建立连接,如果不存在这个文件,则继续在自己相邻的计算机之间转发这个查询,直到找到文件为止。为了控制搜索消息不至于永远这样传递下去,一般通过TTL (Time To Live)的减值来控制查询的深度。
可以发现,当网络规模变大以后,这种搜索方式会引发”广播风暴”,严重消耗网络带宽和节点的系统资源。虽然避免了集中式对等网络的“单点故障”问题,但是效率却很低下。
在这里插入图片描述

全分布式结构化

目前采用最广泛的就是结构化的分布式网络,也就是基于DHT(分布式哈希表)的网络。DHT为了达到Napster的效率和正确性,以及Gnutella的分散性,使用了较为结构化的基于键值对的路由方法。(如下图所示)。
在这里插入图片描述
它也是一种分布式网络结构,但与纯分布式结构不同。纯分布式网络就是一个随机网络,而结构化网络则将所有节点按照某种结构进行有序组织,比如形成一个环状网络或树状网络。而结构化网络的具体实现上,普遍都是基于 DHT(Distributed Hash Table,分布式哈希表) 算法思想。结构化模型与非结构化模型相似,但结构化模型的节点管理有固定结构图。例如:以太坊将节点椭圆加密算法的公钥转换为64 Byte长度的NodeID作为唯一标志符来区分节点,使得以太坊可以在没有中心服务器的情况下实现节点地址精确查找。
目前实现了DHT协议的有Kademlia和Chord算法,其中Kad算法由于简单易用而被广泛使用,其中比特币和以太坊网络中的P2P网络采用的就是Kad算法。后面会对DHT进行进一步说明。

混合式

混合式也可称为半分布式。结合集中式和分布式模型各有的优点,半分布式 P2P 网络将节点分类成普通节点和超级节点,从而构成了半分布式网络结构。
如下图所示,网络中存在多个超级节点组成分布式网络,而每个超级节点则有多个普通节点与它组成局部的集中式网络。一个新的普通节点加入,则先选择一个超级节点进行通信,该超级节点再推送其他超级节点列表给新加入节点,加入节点再根据列表中的超级节点状态决定选择哪个具体的超级节点作为父节点。这种结构的泛洪广播就只是发生在超级节点之间,就可以避免大规模泛洪存在的问题。在实际应用中,混合式结构是相对灵活并且比较有效的组网架构,实现难度也相对较小,因此目前较多系统基于混合式结构进行开发实现。
在这里插入图片描述
其实,比特币网络如今也是这种结构。

比特币网络

首先,比特币网络中的节点主要有四大功能:钱包、挖矿、区块链数据库、网络路由。每个节点都会具备路由功能,但其他功能不一定都具备,不同类型的节点可能只包含部分功能,一般只有比特币核心(bitcoin core)节点才会包含所有四大功能。
在这里插入图片描述
所有节点都会参与校验和广播交易及区块信息,且会发现和维持与其他节点的连接。有些节点会包含完整的区块链数据库,包括所有交易数据,这种节点也称为全节点(Full Node)。另外一些节点只存储了区块链数据库的一部分,一般只存储区块头而不存储交易数据,它们会通过“简化交易验证(SPV)”的方式完成交易校验,这样的节点也称为 SPV节点或轻节点(Lightweight Node)。钱包一般是 PC 或手机客户端的功能,用户通过钱包查看自己的账户金额、管理钱包地址和私钥、发起交易等。除了比特币核心钱包是全节点之外,大部分钱包都是轻节点。挖矿节点则通过解决工作量证明(PoW)算法问题,与其他挖矿节点相互竞争创建新区块。有些挖矿节点同时也是全节点,即也存储了完整的区块链数据库,这种节点一般都是独立矿工(Solo Miner)。还有一些挖矿节点不是独立挖矿的,而是和其他节点一起连接到矿池,参与集体挖矿,这种节点一般也称为矿池矿工(Pool Miner)。这会形成一个局部的集中式矿池网络,中心节点是一个矿池服务器,其他挖矿节点全部连接到矿池服务器。矿池矿工和矿池服务器之间的通信也不是采用标准的比特币协议,而是使用矿池挖矿协议,而矿池服务器作为一个全节点再与其他比特币节点使用主网络的比特币协议进行通信。

P2P网络的应用

  1. 文件内容共享和下载: 利用P2P技术可以使计算机之间不通过服务器直接进行内容共享和数据分发,使得互联网上任意两台机器间共享数据成为可能。例如爱奇艺、腾讯视频客户端等采用的P2P流媒体技术,使得播放速度更加流畅。
  2. 计算能力和存储共享: 基于P2P网络的分布式结构构造出分布式的存储系统实现存储共享,提供高效率、高性价比、负载均衡的文件存取功能,例如国外的Sia、Storj等分布式云存储平台,不依赖第三方的大型集中存储空间,避免了数据泄露、保证了安全性。同时由于任何人的主机都可以提供存储服务,降低了门槛,大幅降低了存储的成本。 同时也可以共享CPU处理能力。例如360的共享云计划和星域CDN等,充分利用每个人机器的闲散计算资源来提供计算服务。
    在这里插入图片描述
  3. 基于P2P的即时通讯: 例如Skype通话软件就是从连接建立和数据传输都采用P2P实现,保证了良好的通话质量。
  4. 基于P2P方式的协同处理与服务共享平台: 常见的协同处理有视频会议、共享白板、协同协作等,而基于P2P技术的同样也可以实现上述功能,不同的是,这种实现方式不需要中心服务器,参与协同工作的计算机之间可以直接建立点对点的连接。例如被微软收购的Groove协同软件平台。

http://chatgpt.dhexx.cn/article/NaNiqrVP.shtml

相关文章

计算机网络基础实验(Cisco Packet Tracer 实验)

目录 一.简介二.Cisco Packet Tracer 实验1.直接连接两台 PC 构建 LAN2.用交换机构建 LAN3.交换机接口地址列表4.生成树协议5.路由器配置初步 三.小结 一.简介 1.本部分实验需使用 Cisco Packet Tracer 软件完成。 下载文件压缩包: 提取地址:Cisco Pack…

初识网络基础《网络七层模型详解》

坚持原创输出,点击蓝字关注我吧 图片来自网络 目录 一、初识网络基础二、网络七层模型详解 1.物理层2.数据链路层3.网络层4.传输层5.会话层6.表示层7.应用层三、总结 一、初识网络基础 其实网络刚刚开始发展的时候,它并没有这么一个复杂的模型&#xff0…

【算力网络】算力网络的技术创新——网络基础设施关键技术

本人就职于国际知名终端厂商,负责modem芯片研发。 在5G早期负责终端数据业务层、核心网相关的开发工作,目前牵头6G算力网络技术标准研究。 博客内容主要围绕: 5G协议讲解 算力网络讲解(云计算,边缘计算…

计算机网络基础知识框架

前言 计算机网络基础 该是程序猿需掌握的知识,但往往会被忽略今天,我将献上一份详细 & 清晰的计算机网络基础 学习指南,涵盖 TCP / UDP协议、Http协议、Socket等,希望你们会喜欢。 目录 示意图 1. 计算机网络体系结构 1.1 简介…

python网络基础

python网络基础 1. 前言1.1 拓扑图1.2 三个问题 2. IP2.1 概念2.2 组成2.3 分类2.4 私有IP和私有IP2.4.1 共有IP2.4.2 私有IP 2.5 子网掩码 3. 网络端口3.1 前言3.2 注意 4. 网络协议4.1 前言4.2 四层模型 1. 前言 1.1 拓扑图 1.2 三个问题 IP windows中查看: ipco…

网络基础--搭建一个简单的网络

文章目录 前言一、配置路由器二、配置服务器三、电脑开启dhcp服务总结 前言 这里用的是华为的模拟器ENSP来完成这个实验。 华为的模拟器中PC不能访问服务器,也就是说不能访问网页,所以用Client。 要求:所有电脑自动获取ip地址—dhcp服务&am…

神经网络基础知识

一、课程来源: 深度之眼神经网络基础知识 二、主要内容: 主要分为三个部分,分别是 1.神经网络基础与多层感知机:基础知识、激活函数、反向传播、损失函数、权值初始化和正则化 2.卷积神经网络:统治图像领域的神经…

计算机网络基础知识

计算机网络 上帝视角 如上图就是一张简单的计算机网络,那么什么是计算机网络呢? 百度百科的定义: 网络是由若干节点和连接这些节点的链路构成,表示诸多对象及其相互联系。 在我看来计算机网络通俗地讲就是通过传输介质将分布在…

【Kubernetes】容器网络基础

文章目录 一、前言二、Kubernetes 容器网络基础2.1 容器网络基础知识回顾2.2 Kubernetes 容器网络概览2.3 CNI 插件介绍2.3.1 使用 CNI 插件创建并连接容器网络的操作步骤 三、Kubernetes 容器网络模型3.1 容器网络模型简介3.2 容器网络模型实现3.3 容器网络模型与 CNI 插件的关…

数通基础-网络基础知识

OSI参考模型 OSI 概念 Open System Interconnect开放系统互连参考模型,是由ISO(国际标准化组织)定义的。它是个灵活的、稳健的和可互操作的模型,并不是协议,而是一个伟大的模型。常用来分析和设计网络体系结构。​ O…

计算机网络基础 (一) —— 概念、组成、功能、分类

1、基本概念 1.1、计算机网络的概念 网络包含了计算机网络: 概念 1.2、计算机功能 1.3、计算机网络组成 1.4、计算机网络的分类 1.5、标准化工作的相关组织 1.6、速率相关的性能指标 1.6.1、速率 数据是1个比特1个比特的传递的,下图中将10个数字传送给…

计算机网络基础知识大全

🏆作者简介:哪吒,CSDN2022博客之星Top1、CSDN2021博客之星Top2、多届新星计划导师✌、博客专家💪 ,专注Java硬核干货分享,立志做到Java赛道全网Top N。 🏆本文收录于,Java基础教程系…

浅谈网络基础架构

浅谈网络基础架构 背景看一次网络请求主要过程1.URL解析2.DNS解析解析顺序服务器层次划分 3.建立TCP连接HTTP请求为什么要用TCP协议建立连接?TCP 三次握手 4.服务器处理请求5.浏览器接受响应6.渲染页面 部署架构总览结构组成相关术语 负载均衡(LB/SLB&am…

网络基础知识详解(图解版)

网络基础知识详解(图解版) 1.网络协议: 我们用手机连接上网的时候,会用到许多网络协议。从手机连接 WiFi 开始,使用的是 802.11 (即 WLAN )协议; 手机自动获取网络配置,使用的是 DHCP 协议。 这…

网络知识(入门)

目录 二、基本网络通信原理 网络基础概念:IP地址 IP地址的格式: 由什么来决定网络位的长度? 三、IP地址如何配置 如何看自己电脑IP地址? 另一种命令式查看 手机地址如何查看 IP地址如何配置 疑问:为什么没有配…

网络基础知识

Net Basic 一、网络分层 1. OSI七层模型 物理层:确保原始数据在各种物理媒介上的传输。 有两个重要设备:中继器(放大器)和集线器 数据链路层:为网络层提供数据传输服务;基本数据单位是帧;以太…

【网络入门】详解常用的基础网络知识(面试笔试常考内容)

目录 1、概述 2、OSI七层模型和TCP/IP四层模型 3、数据进入TCP/IP协议栈时的封装过程 4、端口的概念 5、TCP建立连接时的三次握手 5.1、TCP头的构成 5.2、三次握手的流程说明 5.3、为什么必须使用三次握手,不能用两次握手去建立连接 5.4、SYN包攻击简介 …

面试官都震惊,你这网络基础可以啊!

目录 网络1.对网络的基础认识<1>.组网方式<2>.OSI七层模型<3>.TCP/IP五层&#xff08;四层模型&#xff09;<4>.对封装分用的理解 2.网络数据传输<1>局域网(1)认识IP和MAC(2)网络数据传输的特性(3)网络数据传输流程1)网络互联的方式2).局域网交换…

用matlab做bp神经网络预测,matlab神经网络怎么预测

1、请问MATLAB中神经网络预测结果应该怎么看&#xff1f;求大神解答 从图中Neural Network可以看出&#xff0c;你的网络结构是两个隐含层&#xff0c;2-3-1-1结构的网络&#xff0c;算法是traindm&#xff0c;显示出来的误差变化为均方误差值mse。经过482次迭代循环完成训练&…

matlab神经网络应用设计,神经网络及其matlab实现

Matlab里的神经网络是什么意思啊&#xff0c;我是新手&#xff0c;谁能简单通俗地解释下啊&#xff1f;谢谢了&#xff01;&#xff01;&#xff01; 。 所谓神经网络算法顾名思义是模拟生物神经网络而产生的一种算法&#xff0c;首先需要用一些已知的数据输入到神经网络中&a…