区块链网络技术学习笔记

一、 对等网络

对等网络又称 P2P 网络。

二、节点类型

  • 全节点(Full Node)
    所有节点都会参与校验和广播交易及区块信息,且会发现和维持与其他节点的连接。有些节点会包含完整的区块链数据库,包括所有交易数据,这种节点也称为全节点(Full Node)。
  • SPV 节点或轻节点(Lightweight Node)
    一些节点只存储了区块链数据库的一部分,一般只存储区块头而不存储交易数据,这样的节点也称为 SPV 节点或轻节点(Lightweight Node)。

三、 数据传播协议

1、建立初始连接

一个新节点如果要加入到区块链网络,一般需要建立 TCP 连接,即三次握手 (Three-Way Handshake)

2、 地址广播及发现

节点在加入区块链网络以后,需要与其他相邻节点建立联系,广播自己的地 址,让其他网络的节点知道自己的节点信息。

3、 区块链同步

在区块链 P2P 网络中,每一个节点保存和维护一份区块链信息,但是由于新区 块的产生是分布式的,因此每个节点的区块信息并不是最新的,为保证全网的一致 性,节点需要进行同步信息。

4、交易传播

一笔新交易产生时,会先被广播到区块链网络中的其它参与节点。节点将交易 单广播至全网,每个节点会将数笔未验证的交易 Hash 值收集到区块中,每个区块可以包含数百笔或上千笔交易。最快完成 POW 的节点,会将自己的区块传播给其他节点。

5、 检测节点存活

发送 ping 消息,用于检测节点是否存活; 响应 pong 消息,返回 pong 消息,告诉对方节点还存活。

6、 Gossip 协议:“八卦版”区块链通信协议

每个节点可能知道所有其他节点,也可 能仅知道几个邻居节点,只要这些节可以通过网络连通,最终他们的状态都是一致 的,因此 Gossip 天然具有分布式容错的优点。

四、通信机制

1、RPC

RPC(Remote Procedure Call)—远程过程调用,它是一种通过网络从远程计 算机程序上请求服务,而不需要了解底层网络技术的协议。

在 OSI 网络通信模 型中,RPC 跨越了传输层和应用层。RPC 使得开发包括网络分布式多程序在内的应 用程序更加容易。

2、HTTP 连接

HTTP 协议即超文本传送协议(Hypertext Transfer Protocol ),是 Web 联网的基 础,也是手机联网常用的协议之一,HTTP 协议是建立在 TCP 协议之上的一种应用。

3、 SOCKET

Socket 是通信的基石,是支持 TCP/IP 协议的网络通信的基本操作单元。应用层可以和传输层通 过 Socket 接口,区分来自不同应用程序进程或网络连接的通信,实现数据传输的并 发服务。

五、消息序列化协议

1、XML

XML(Extensible Markup Language)是一种常用的序列化和反序列化协议, 具有以下优缺点:

优点:

  • 具有人机可读性好可指定元素或特性的名称

缺点:

  • 序列化数据只包含数据本身以及类的结构,不包括类型标识和程序集信息
  • 类必须有一个将由 XmlSerializer 序列化的默认构造函数
  • 只能序列化公共属性和字段不能序列化方法
  • 文件庞大,文件格式复杂,传输占带宽

场景:
当做配置文件存储数据实时数据转换

2、JSON

JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式。

JSON 采用与编程语言无 关的文本格式,但是也使用了类 C 语言(包括 C, C++, C#, Java, JavaScript, Perl, Python 等)的习惯,简洁和清晰的层次结构使得 JSON 成为理想的数据交 换语言。

优点:

  • 前后兼容性高
  • 数据格式比较简单,易于读写
  • 序列化后数据较小,可扩展性好,兼容性好
  • 与 XML 相比,其协议比较简单,解析速度比较快

缺点:

  • 数据的描述性比 XML 差
  • 不适合性能要求为 ms 级别的情况
  • 额外空间开销比较大

场景:

  • 跨防火墙访问
  • 可调式性要求高的情况
  • 基于 Web browser 的 Ajax请求
  • 传输数据量相对小,实时性要求相对低(例如秒级别)的服务

3、Protobuf

Protocol buffers 由谷歌开源而来,在谷歌内部久经考验。它将数据结构 以.proto 文件进行描述,通过代码生成工具可以生成对应数据结构的 POJO 对象和Protobuf 相关的方法和属性。

适合于远程调用。

猜你喜欢

转载自blog.csdn.net/nina_1314521/article/details/130036098