什么是P2P网络?
P2p的英文全称是peer to peer,一般翻译为对等网络,在介绍p2p网络之前,先介绍一下传统的客户端/服务器模式,也就是c/s模式的网络架构,在c/s模式的网络架构下,会有一中央服务器对外提供服务,而其他的客户端通过网络去访问中央服务器所提供的各种资源和服务。在这种架构模式下,角色非常清晰,中央服务器提供资源和服务,客户端获取资源和服务,是一个典型的中心化的架构。
而在p2p网络的架构中,网络中的每个节点都是对等的,每个节点既充当服务器,为其他节点提供服务,同时也是客户端,可以通过访问其他节点来获取服务,而且对等节点之间是直接进行交互的,不会经过中间节点,所以在整个的p2p网络中,不会存在中心节点的情况,也就是无中心化。
P2P网络的特点
第一个特点我们刚才已经介绍过了,就是无中心化,资源和服务分散在网络中的所有节点上,信息直接在各节点之间进行传输,无中心是p2p网络最大的特点,也是其他特点的基础。
第二个特点是易扩展,在p2p网络中,随着节点的加入,虽然服务需求会增加,但是整个网络所能提供的服务能力也会相应的增加,因为我们刚才介绍过,加入到网络中的节点,不仅仅是服务的需求方,本身也会为网络提供相应的服务和资源。不同于传统的c/s模式架构,客户端增多会对服务器造成压力,但是p2p本身是无中心化的,加入的节点越多,资源获取的速度反而越快。
P2p技术的第三个特点:健壮性。由于在p2p网络中,服务和资源是分散在各个节点上的,所以部分节点遭到破坏的情况下,并不会影响到整个系统的正常运行。同时,由于p2p网络的开放性,允许节点很方便的加入或者退出。
第四个特点是高性价比。性能优势是p2p技术能被广泛关注的一个重要原因。在c/s模式的架构中,为了支持客户端的高并发性,对中央服务器的性能要求比较高,当然这也意味着价格不菲。而在p2p网络中,可以有效的利用互联网上大量的普通计算机节点,将计算任务或者存储资料分散到所有节点上,充分利用计算机的闲置计算能力、存储空间和带宽,从而达到高性能 计算和少量存储的目的。
P2p网络的第五个特点是对用户的隐私保护。在p2p网络中,数据是分散在网络中的各个节点上的,而且数据的交互也不会经过某个中心节点,所以数据被窃取和泄漏的可能性比较小。而且在p2p网络中,所有的节点都提供中继转发的功能,所以大大提高了通信的匿名性,为用户提供更好的隐私保护。
P2p网络的最后一个特点是负载均衡。在P2P 网络环境下由于每个节点既是服务器又是客户机,相对于传统的c/s架构,减少了对中央服务器计算能力、存储能力的要求,同时因为资源分布在多个节点上,意味着资源的获取可以从多个节点上获取,而不是只依赖中央服务器,所以更好的实现了整个网络的负载均衡。
区块链中的p2p网络
在介绍完了p2p网络的特点之后,你或许会发现原来区块链的很多特点与p2p网络的特点是相同的。或者准确的说,由于区块链底层采用的是p2p网络技术,所以区块链继承了p2p网络的特点。
在区块链中,参与和维护p2p网络的节点,一般称之为full node,也就是全节点。全节点的主要作用之一是下载区块和交易,然后进行校验,在校验通过后,通过网络路由功能将区块和交易转发给其他节点。除此之外,还有两种特殊的全节点,分别是archival full node和pruned full node. 其中,archival full node可以认为是一个区块的归档节点,它存储了整个区块链的区块数据,可以为其他节点提供历史区块数据,本身可能并不参与挖矿。而pruned full node虽然也称之为全节点,但是由于本身的存储受限,不足以存储整个区块链的数据,但是仍然具有全节点的其他功能,比如钱包、挖矿、网络路由等功能等。
比特币全节点的数量
对于比特币系统来说,全球有多少全节点呢?根据bitenodes的统计,截止到2019年1月初,全球总共有1万多个节点。但是这个数字并不准确,因为这个数据通过向节点发送一个简单的getaddress消息来获取的,不过有些全节点可能隐藏在公司的防火墙后面,通过这种方式是无法获取到准确信息的。不管如何,1万多个比特币全节点已经是不小的数字了。