0

0

点对点网络详解

王林

王林

发布时间:2023-04-17 13:01:03

|

4274人浏览过

|

来源于云东方

转载

什么是点对点 (P2P)?

在计算机科学领域,点对点网络由一组可以储存,共享文档的设备组成。每一个参与者(节点)都相当于一个对等的个体。也就是说,所有的节点都拥有同样的权利并执行相同的任务。

在金融科技领域,P2P通常指代的是通过分布式网络进行数字货币或数字资产交易。一个P2P平台允许买卖双方在没有中间商的情况下直接进行交易。有些网站也可以为借贷双方提供P2P的交易环境。

P2P的架构适用于各种场景,但它真正盛行是在上世界九十年代,当第一个文件共享程序诞生时。现今,点对点网络已经成为大多数数字货币的核心,占区块链行业的一大部分。然而,它也被用于其他各种分布式的计算机程序中,包括:网络搜索引擎,流媒体平台,网上市场,以及星际文件系统(IPFS)网络协议。

P2P的工作原理

本质上,一个P2P系统是靠一个分布式网络中的用户所维持的。通常来说,他们没有中央系统管理员或服务器,因为每一个节点都拥有一个文件副本 -- 对于其他节点来说就相当于一个用户和一个服务器。因此,每一个节点都能从其他节点那里下载文件或者给他们上传文件。而传统服务器系统的客户端设备需要从中央服务器中下载文件,这就是P2P网络与其他传统服务系统的区别。

在P2P网络中,互联设备共享的文件储存在他们的硬盘当中。并使用软件运用程序来传递共享的数据,用户也可以在其他设备当中找到并下载文件。如果一个用户下载了一个指定的文件,他就能充当该文件源。点对点网络详解

换言之,当一个节点充当了一个用户,那他就要从其他节点那里下载文件。但如果他是作为服务器工作,那其他节点就可以在他那里下载文件。实际上,这两种功能可以同时进行(例如,下载A文件以及上传B文件)。

由于每一个节点都能储存,传输和接收文件,并且随着P2P网络的用户群逐渐壮大,它也变得更加快速以及高效。分布式的结构也让P2P系统更能抵抗网络攻击。与传统模式不同的是,P2P网络没有单个故障点。

根据其结构,我们可以将P2P系统归类,其中主要的三种类型是:非结构对等网络,结构化对等网络以及混合对等网络。

非结构化P2P网络

非结构对等网络并不会展现节点的具体架构。参与者之间可以随意交流。这些系统都是耐高频活动的,也就是说几个节点频繁地进出该网络也不会对系统造成任何影响。

虽然非结构对等网络比较容易建立,但它却需要更强大的中央处理器和内存,因为搜索查询会发送给最多的对等点。特别是如果一小部分的节点能提供所需要的内容,大量的搜索便会涌入到网络中。

结构化对等网络

不同于非结构对等网络,结构化对等网络展现了一个组织架构,它可以让节点有效地搜索文件,即使该文件的内容没有被广泛使用。大多数情况下,搜索是通过使用哈希函数来帮助数据库查找。

相对来说,结构化对等网络会更加高效,因其更能展现高层次的中央集权,并且需要用到更多的启动资金和维护费用。除此之外,结构化对等网络比较不耐受高频活动。

混合对等网络

混合对等网络结合了传统的主从式架构以及点对点架构的某些特征。例如,它可能会建立一个中心服务器来加速各点之间的结合。

不同于其他两种模式,混合对等网络倾向于呈现改良后的总体性能。它结合了各个方式的优点,同时达到了高效性和去中心化。

分布式 VS 去中心化

虽然点对点结构都是分布式的,但是其去中心化的程度却是不相同的。因此,并不是所有的点对点网络都是去中心化的。

事实上,很多系统都需要一个中央部门来指导网络活动,或多或少地使其中心化。例如,一些点对点文件分享系统可以让用户从其他用户那里搜索并下载文件,但是他们却不能参与像是一些管理搜索查询的流程。

此外,某些被少量的用户所管控的小型网络也可以说是高度中心化的,尽管它可能没有中性化的基础设施。

点对点在区块链中的作用

在比特币诞生的初期,中本聪(Satoshi Nakamoto)将其定义为一个“点对点的电子现金系统”。比特币以一种电子现金的形式出现在大众视野。通过点对点网络,它能够在两个用户之间相互转移,而这需要用到分布式账本,即:区块链。在区块链中,点对点的架构可以让比特币以及其他数字货币在不需要中间商和任何中央服务器的其况下,在全世界范围内进行相互转移。如果任意用户想要参与到验证区块的程序当中,都可以建立一个比特币节点。

因此,在比特币网络中没有任何的银行步骤或者交易记录。取而代之的是,区块链作为一个电子账本,公开地记录了所有的交易活动。基本上,每一个节点都拥有一个区块链副本,并将其与其他节点进行对比,来保证数据的正确性。比特币网络能快速地清除各种错误和恶意的活动。

节点在区块链中可以扮演各种不同的角色。例如,全节点通过共识规则来验证交易,从而保障了网络的安全性。

每一个全节点维持了一个完整的,升级的区块链副本 — 让这些区块链副本可以共同来验证分布式账本的真实状况。需要注意的是,不是所有的验证节点都是矿工。

优势

区块链的点对点架构有许多优点。更重要的是,相较于传统的主从式架构,点对点网络有更高的保密性。大部分节点几乎都能抵抗损害了许多系统的“拒绝服务(DoS)”攻击。同样地,由于数据被添加到区块链中需要大部分节点的一致同意,所以攻击者几乎不可能改变数据。尤其是在比特币这样的大型网络中。然而相对较小的区块链则容易受到攻击,因为一个个人或组织往往会控制大量的节点(这也就是51%攻击)。因此,在多数节点一致同意的前提下,分布式点对点网络使区块链更能抵抗恶意的网络攻击。点对点模式是比特币网络能够实现拜“占庭容错”的主要原因。

除了安全性之外,点对点架构让数字货币区块链避免了中央机构的审查。不像一般的银行账号,数字货币钱包不能够被政府冻结或消耗。个人的支付处理和内容平台也能避免相应的审查工作。一些网上的商家为了避免他们的支付被第三方干预,都采用了数字货币的支付方式。

局限性

尽管它有以上这些优点,但在区块链中使用P2P网络也有一定的局限性。

由于分布式账本必须在每一个节点上进行升级,因此在区块链中增加交易便需要庞大的计算机算力。虽然这提高了安全性,但也大大降低了效率,并且也成为了区块链网络扩展和推广的主要障碍之一。但是,密码学家和区块链开发人员正在研究相关的替代方案,用于解决扩展性的相关问题。几个明显的案例包括“闪电网络”,“以太坊等离子体”和“Mimblewimble协议”。另一个潜在的限制是关于硬分叉期间可能出现的攻击。由于大多数区块链是去中心化的和开源的,因此节点可以自由地复制和修改代码并从主链中分离出来,通过这种方式形成新的并行网络。硬分叉是完全正常的,并不会形成威胁。但是如果没有适当地采用某些安全措施,这两条链都可能会受到重放攻击的影响。

此外,P2P网络的分布式特性使它们相对难以控制和监管。该问题不仅仅是在区块链中,某些P2P应用程序和公司也同样涉及到侵权等非法活动。

总结

点对点架构可以被开发运用到许多不同的方面,它在区块链中的核心地位也促成了数字货币的诞生。通过在一个大的节点网络中分发交易账本,点对点架构提供了安全性、去中心化和防范监管等优势。

而除了在区块链技术中的优势之外,P2P系统还可以应用于其他分布式计算应用领域,范围包括文件共享网络到能源交易平台等。

相关专题

更多
什么是分布式
什么是分布式

分布式是一种计算和数据处理的方式,将计算任务或数据分散到多个计算机或节点中进行处理。本专题为大家提供分布式相关的文章、下载、课程内容,供大家免费下载体验。

319

2023.08.11

分布式和微服务的区别
分布式和微服务的区别

分布式和微服务的区别在定义和概念、设计思想、粒度和复杂性、服务边界和自治性、技术栈和部署方式等。本专题为大家提供分布式和微服务相关的文章、下载、课程内容,供大家免费下载体验。

227

2023.10.07

数据库三范式
数据库三范式

数据库三范式是一种设计规范,用于规范化关系型数据库中的数据结构,它通过消除冗余数据、提高数据库性能和数据一致性,提供了一种有效的数据库设计方法。本专题提供数据库三范式相关的文章、下载和课程。

330

2023.06.29

如何删除数据库
如何删除数据库

删除数据库是指在MySQL中完全移除一个数据库及其所包含的所有数据和结构,作用包括:1、释放存储空间;2、确保数据的安全性;3、提高数据库的整体性能,加速查询和操作的执行速度。尽管删除数据库具有一些好处,但在执行任何删除操作之前,务必谨慎操作,并备份重要的数据。删除数据库将永久性地删除所有相关数据和结构,无法回滚。

2068

2023.08.14

vb怎么连接数据库
vb怎么连接数据库

在VB中,连接数据库通常使用ADO(ActiveX 数据对象)或 DAO(Data Access Objects)这两个技术来实现:1、引入ADO库;2、创建ADO连接对象;3、配置连接字符串;4、打开连接;5、执行SQL语句;6、处理查询结果;7、关闭连接即可。

346

2023.08.31

MySQL恢复数据库
MySQL恢复数据库

MySQL恢复数据库的方法有使用物理备份恢复、使用逻辑备份恢复、使用二进制日志恢复和使用数据库复制进行恢复等。本专题为大家提供MySQL数据库相关的文章、下载、课程内容,供大家免费下载体验。

251

2023.09.05

vb中怎么连接access数据库
vb中怎么连接access数据库

vb中连接access数据库的步骤包括引用必要的命名空间、创建连接字符串、创建连接对象、打开连接、执行SQL语句和关闭连接。本专题为大家提供连接access数据库相关的文章、下载、课程内容,供大家免费下载体验。

318

2023.10.09

数据库对象名无效怎么解决
数据库对象名无效怎么解决

数据库对象名无效解决办法:1、检查使用的对象名是否正确,确保没有拼写错误;2、检查数据库中是否已存在具有相同名称的对象,如果是,请更改对象名为一个不同的名称,然后重新创建;3、确保在连接数据库时使用了正确的用户名、密码和数据库名称;4、尝试重启数据库服务,然后再次尝试创建或使用对象;5、尝试更新驱动程序,然后再次尝试创建或使用对象。

402

2023.10.16

JavaScript 性能优化与前端调优
JavaScript 性能优化与前端调优

本专题系统讲解 JavaScript 性能优化的核心技术,涵盖页面加载优化、异步编程、内存管理、事件代理、代码分割、懒加载、浏览器缓存机制等。通过多个实际项目示例,帮助开发者掌握 如何通过前端调优提升网站性能,减少加载时间,提高用户体验与页面响应速度。

3

2025.12.30

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
光速学会docker容器
光速学会docker容器

共33课时 | 1.8万人学习

go语言基础与基本函数
go语言基础与基本函数

共17课时 | 3.1万人学习

Css3入门视频教程
Css3入门视频教程

共21课时 | 3.7万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号