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