问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

比特币网络架构:去中心化的点对点网络详解

创作时间:
作者:
@小白创作中心

比特币网络架构:去中心化的点对点网络详解

引用
CSDN
1.
https://blog.csdn.net/xiaodeng6657/article/details/142331051

比特币网络采用了一种去中心化的点对点(P2P)分布式网络架构。与传统的中心化网络相比,比特币网络没有中心服务器,每个节点都是平等的,共同提供网络服务。本文将深入分析比特币网络的架构特点、节点发现机制以及节点间的通信过程。

中心化网络

为了更好地理解P2P网络,我们先来看看传统的中心化模型:

这是一种典型的星型(“中心化”)结构,我们常见的B/S及C/S网络架构就是这种模型。C1、C2、C3等客户端之间无法直接连接,必须通过中心服务器S进行中转。中心化节点充当服务者和中介的角色,例如,资金转移必须通过银行这个中介才能完成。

P2P网络

P2P网络是指位于同一网络中的每台计算机都彼此对等,各个节点共同提供网络服务,不存在任何“特殊”节点。每个网络节点以扁平(flat)的拓扑结构相互连通。

在P2P网络中不存在任何中心化的服务端(server)。P2P网络的节点之间交互连接、协同,每个节点在对外提供服务的同时也使用网络中其他节点所提供的服务,每个节点既是服务端又是客户端。

P2P网络模型除应用于比特币网络,使用广泛的BT下载就是基于P2P网络。P2P网络不仅仅去除了中心化带来的风险(中心化可能作恶),还可以提高传输的效率。(中心化网络当能也有优点)

如何发现节点

既然每个网络节点都是平等的(是指在网络层面上节点是平等的,但各节点在功能上可以有不同的分工, 如钱包节点、挖矿节点等),不存在任何“特殊”中心节点,那么当新的网络节点启动后,它是如何跟其他的节点建立连接,从而加入到比特币网络呢?

在中心化网络中,新加入的节点只要连接“特殊”的中心节点就可以加入网络。

为了能够加入到比特币网络,比特币客户端会做以下几件事情:

  1. 节点会记住它最近成功连接的网络节点,当重新启动后它可以迅速与先前的对等节点网络重新建立连接。
  2. 节点会在失去已有连接时尝试发现新节点。
  3. 当建立一个或多个连接后,节点将一条包含自身IP地址的消息发送给其相邻节点。相邻节点再将此消息依次转发给它们各自的相邻节点,从而保证节点信息被多个节点所接收、保证连接更稳定。
  4. 新接入的节点可以向它的相邻节点发送获取地址(getaddr)消息,要求它们返回其已知对等节点的IP地址列表。节点可以找到需连接到的对等节点。
  5. 在节点启动时,可以给节点指定一个正活跃节点IP。如果没有,客户端也维持一个列表,列出了那些长期稳定运行的节点。这样的节点也被称为种子节点(其实和BT下载的种子文件道理是一样的),就可以通过种子节点来快速发现网络中的其他节点。

节点通信简述

比特币节点通常采用TCP协议、使用8333端口与相邻节点建立连接。建立连接时也会有认证“握手”的通信过程,用来确定协议版本、软件版本、节点IP、区块高度等。

当节点连接到相邻节点后,接着就开始跟相邻节点同步区块链数据(轻量级钱包应用其实不会同步所有区块数据)。节点们会交换一个getblocks消息,它包含本地区块链最顶端的哈希值。如果某个节点识别出它接收到的哈希值并不属于顶端区块,而是属于一个非顶端区块的旧区块,就说其自身的本地区块链比其他节点的区块链更长,并告诉其他节点需要补充区块,其他节点发送getdata消息来请求区块,验证后更新到本地区块链中。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号