从4个方面分析:节点与节点之间是如何建立连接的?
在分布式系统中每个终端节点都是平等的,不存在任何中心化节点帮助它们互相连接,那当一个新的节点要加入网络中来时,它该如何找到自己的小伙伴的呢?
我们知道比特币网络采用了基于互联网的点对点(P2P:peer-to-peer)分布式网络,但是你知道节点与节点之间是如何建立连接的吗?
本期将会对区块链的分布式网络中,节点与节点之间如何建立连接进行介绍,希望对你有帮助。
一、分布式网络基本概念
在介绍分布式网络之前我们先明确它的基本概念,分布式网络是什么?
分布式网络也叫网状网络,它和中心化网络(中央控制式网络)相对应,是一套全新的网络结构。分布式网络是由分布在不同地点的多个终端节点互相连接而成,形成纵横交错的网状结构,在这种网状结构中无中心节点。
上面是中心化网络和分布式网络对比图,中心化网络中终端与终端之间连接通讯,需要经过中央处理器统一处理,分布式网络中终端节点之间可以直接建立连接。
分布式网络相较于中心化网络的优点在于:它没有中心化控制中心,不会因为中心服务器遭到破坏而造成整体崩溃。当分布式网络中的某个节点损坏时,通信信息可通过其他的节点进行传输,具有较高的可靠性和传输速度。
二、一个终端如何加入区块链网络?
在分布式系统中每个终端节点都是平等的,不存在任何中心化节点帮助它们互相连接,那当一个新的节点要加入网络中来时,它该如何找到自己的小伙伴的呢?
以比特币网络为例:安装了比特币客户端的终端,可认为是一个网络节点。
举个例子:来看一个新节点A是如何加入比特币网络的,这个节点在启动之后会做如下的几件事。
1. 告诉伙伴它在哪?
如果节点A是第一次连入比特币网络,那它首先会通过一种算法找到距离它最近的一个网络节点。
节点将一条包含自身IP地址的消息发送给相邻节点,相邻的节点再将这条消息向与自己连接的节点进行分发广播,以此类推,最终导致新节点的IP地址在全网进行分发,每个网络节点都知道节点A的地址,可以与之建立直接连接。
2. 找到伙伴在哪
节点A在找到相邻最近的节点之后,还会向与它相邻的节点索要它们已知节点的IP地址列表,拿到这些节点的IP地址列表之后,节点A便可以主动与这些节点建立直接的连接。
3. 更快的找到伙伴
当节点A加入到网络中之后,一般会与正活跃的节点连接。如果难以找到这样的节点,节点A会根据自己得到的IP地址列表,来找到那些长期稳定运行的节点,这种节点就是种子节点,通过种子节点能够帮助节点A更快速的发现网络中的其他节点。
三、比特币网络中不同节点的数据如何同步
比特币网络中的节点在连接到相邻的节点之后,首先会和相邻的节点同步数据,然后再去和更多的节点进行数据交换和同步。
在节点与节点之间进行数据同步的过程中会根据一个哈希值(可以暂时理解为一种独一无二的数据标记,后面期刊中会详细介绍)来判断谁的数据为最新的数据。
如果节点发现本身的数据不是最新的,就会寻找拥有最新数据的节点进行下载。如果发现自己的数据为最新数据,则会告诉其他节点需要从它这里补充数据。其他的节点下载数据并验证通过之后,将会更新到自己的本地数据中。
通过这种方式能保证网络中的所有节点都能及时得到最新数据。
四、总结
分布式是区块链的核心,我们通过了解节点之间如何建立连接,应该体会到分布式它不仅仅是一种网路架构,更是一种先进的思想!
点对点之间的影响通过网络形成了非线性的因果关系,整个网络形成了去中心,自组织的形态,这是事物发展的必然过程。更加高效、更加平等、更加低成本是新制度进化的必然方向。
分布式思想可能给我们带来的不仅仅是科技上的革命,更可能会带来整个人类社会结构的改变。
让我们拭目以待!
作者:liheng,区块链探索者、互联网产品经理,超级个体修炼中,只创作对用户有价值的内容
本文由 @liheng 原创发布于人人都是产品经理。未经许可,禁止转载
题图来自Unsplash,基于CC0协议
666