节点(node)只是一个词。在不同的系统有不同的意思,并不是所有的区块链乃至p2p网络里面提到的节点都是一个东西。 这里我们从p2p网络通讯到区块链,再到bcos区块链系统来看这个节点间通讯问题。
p2p的节点
什么是对等网络(P2P)技术?P2P技术属于覆盖层网络(Overlay Network)的范畴。好吧,覆盖层网络又是什么鬼?简单说来覆盖网络就是应用层网络,它是面向应用层的,不考虑或很少考虑网络层,物理层的问题。详细说来,覆盖网络是指建立在另一个网络上的网络。该网络中的结点可以看作通过虚拟或逻辑链路而连接起来的。虽然在底层有很多条物理链路,但是这些虚拟或逻辑链路都与路径一一对应。P2P网络之所以是覆盖网络,因为它运行在互联网的上层。覆盖网络允许对没有IP地址标识的目的主机路由信息,例如:Freenet 和DHT(分布式哈希表)可以路由信息到一个存储特定文件的结点,而这个结点的IP地址事先并不知道。后面会提到p2p的discover技术。
P2P网络有3种比较流行的组织结构,被应用在不同的P2P应用中。
(1)DHT结构
分布式哈希表(DHT)是一种功能强大的工具,它的提出引起了学术界一股研究DHT的热潮。虽然DHT具有各种各样的实现方式,但是具有共同的特征,即都是一个环行拓扑结构,在这个结构里每个节点具有一个唯一的节点标识(ID),节点ID是一个128位的哈希值。每个节点都在路由表里保存了其他前驱、后继节点的ID。通过这些路由信息,可以方便地找到其他节点。这种结构多用于文件共享和作为底层结构用于流媒体传输。
(2)树形结构
树形结构。在这种结构中,所有的节点都被组织在一棵树中,树根只有子节点,树叶只有父节点,其他节点既有子节点也有父节点。信息的流向沿着树枝流动。最初的树形结构多用于P2P流媒体直播。
(3)网状结构
网状结构所示,又叫无结构。顾名思义,这种结构中,所有的节点无规则地连在一起,没有稳定的关系,没有父子关系。网状结构为P2P提供了最大的容忍性、动态适应性,在流媒体直播和点播应用中取得了极大的成功。当网络变得很大时,常常会引入超级节点的概念,超级节点可以和任何一种以上结构结合起来组成新的结构,如KaZaA。 p2p网络具有很强的动态性。网络中的节点同时充当了客户机和服务器两种角色,并且网络节点可以任意的加入和退出。p2p网络的应用可以很好的解决C/S架构下应用的单点故障,易受攻击性和扩展性问题。 所以p2p网络上的节点是
区块链系统的节点
区块链是指这个分布式数据库的技术,包括这个区块链数据结构,底层的p2p网络,以及共识算法。所以,一般谈区块链就是区块链系统,它跟上面的p2p网络节点有类似的地方但是又不太一样。区块链是个分布式系统,系统里有很多节点,这些节点你可以单纯地理解为通过互联网相连的电脑或者服务器。根据区块链性质的不同,成为节点的方式也不同,以比特币这种区块链为例,比较早期,认为参与交易和挖矿,才算是节点。然而,在现在的比特币里,矿工,完全节点,轻量节点,甚至普通用户,在不同的语境下都可能被称为节点。
节点间通讯
bcos区块链系统中维护了一个NodeAction合约,里面包含入网的节点信息如ip,idx,端口等。 每个节点在本地还维护了一张nodeextrainfo信息维护链接的peer信息。节点间先建立session,然后进行通讯