主页 > 如流下载imtoken > 20181117——一种去中心化、点对点的区块链网络架构

20181117——一种去中心化、点对点的区块链网络架构

如流下载imtoken 2023-07-06 05:10:07

集中式网络

这是一个典型的星型(“中心化”)结构。 我们常见的B/S、C/S网络架构就是这样的模型。 C1、C2 和 C3 之间没有直接连接。 如果 C 节点想要连接,必须通过中心化的 S 节点作为桥梁。

集中节点充当服务提供者和中介。 比如我们没有办法直接把资金从一个人转到另一个人,必须要经过银行这个中介。

P2P网络

P2P网络是指同一网络中的每一台计算机都是平等的,各个节点共同提供网络服务。 没有“特殊”的节点,每个网络节点以扁平(flat)的拓扑结构相互连接。

与中心化网络相比比特币网络的所有节点,P2P 网络中没有服务器或中心化服务。

P2P 网络的节点是交互连接和协调的。 每个节点在对外提供服务的同时,也使用网络中其他节点提供的服务。 每个节点既是服务器又是客户端。

除了应用于比特币网络的P2P网络模型外,广泛使用的BT下载也是基于P2P网络。

P2P网络不仅消除了中心化的风险(中心化可能作恶),还提高了传输效率。 (中心化网络也可以有优势)

如何发现节点

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

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

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

一个节点会记住它成功连接到的最后一个网络节点,并且在重新启动时它可以快速地重新建立与以前的对等节点网络的连接。

当节点失去现有连接时,它们将尝试发现新节点。

当建立一个或多个连接时,节点会向其邻居发送一条包含其自身 IP 地址的消息。 相邻节点再将此消息依次转发给各自的相邻节点,以保证节点信息被多个节点接收到,连接更稳定。

新加入的节点可以向其邻居发送一条 getaddr 消息,要求它们返回已知对等点的 IP 地址列表。 节点可以找到要连接的对等点。

节点启动时,可以为节点指定一个活动节点IP。 如果不是,客户端还维护一个列表,列出那些已经稳定运行了很长时间的节点。 这样的节点也称为种子节点(其实和BT下载的种子文件是一样的),通过种子节点可以快速发现网络中的其他节点。