区块链网络技术基础学习笔记

简介: 对区块链网络层的对等网络、节点类型、数据传播协议、通信机制等概念的简单介绍,此文章为博主的学习笔记仅供大家参考。

一、 对等网络

对等网络又称 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)是一种常用的序列化和反序列化协议, 具有以下优缺点:

  • 优点:
  1. 具有人机可读性好可指定元素或特性的名称
  • 缺点:
  1. 序列化数据只包含数据本身以及类的结构,不包括类型标识和程序集信息
  2. 类必须有一个将由 XmlSerializer 序列化的默认构造函数
  3. 只能序列化公共属性和字段不能序列化方法
  4. 文件庞大,文件格式复杂,传输占带宽
  • 场景:
  1. 当做配置文件存储数据实时数据转换

2、JSON
JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式。
JSON 采用与编程语言无 关的文本格式,但是也使用了类 C 语言(包括 C, C++, C#, Java,JavaScript, Perl, Python 等)的习惯,简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。

  • 优点:
  1. 前后兼容性高
  2. 数据格式比较简单,易于读写
  3. 序列化后数据较小,可扩展性好,兼容性好
  4. 与 XML 相比,其协议比较简单,解析速度比较快
  • 缺点:
  1. 数据的描述性比 XML 差
  2. 不适合性能要求为 ms 级别的情况
  3. 额外空间开销比较大
  • 场景:
  1. 跨防火墙访问
  2. 可调式性要求高的情况
  3. 基于 Web browser 的 Ajax请求
  4. 传输数据量相对小,实时性要求相对低(例如秒级别)的服务

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

相关文章
|
24天前
|
网络协议 Linux C++
Linux C/C++ 开发(学习笔记十二 ):TCP服务器(并发网络编程io多路复用epoll)
Linux C/C++ 开发(学习笔记十二 ):TCP服务器(并发网络编程io多路复用epoll)
71 0
|
24天前
|
网络协议 Linux C++
Linux C/C++ 开发(学习笔记十一 ):TCP服务器(并发网络网络编程 一请求一线程)
Linux C/C++ 开发(学习笔记十一 ):TCP服务器(并发网络网络编程 一请求一线程)
49 0
|
8天前
|
安全 网络安全 区块链
【计算巢】区块链技术在网络安全中的应用与挑战
【5月更文挑战第31天】区块链技术为网络安全带来新机遇,其去中心化、不可篡改和共识机制特性有助于身份验证、数据完整性保护及提高网络抗攻击性。但面临性能、隐私保护和法规监管等挑战。简单Python代码展示了区块链在数据完整性验证的应用。随着技术发展,区块链有望在网络安全领域发挥更大作用,未来可能与其它安全技术融合,为网络安全提供更强保障。
|
16天前
|
网络协议 Docker 容器
Ubantu docker学习笔记(七)容器网络
Ubantu docker学习笔记(七)容器网络
|
24天前
|
监控 Java 数据库连接
【后台开发】TinyWebser学习笔记(1)网络编程基础知识
【后台开发】TinyWebser学习笔记(1)网络编程基础知识
26 3
|
24天前
|
网络协议 网络架构 数据格式
计算机网络学习笔记(一)
OSI七层网络模型旨在支持异构网络互联,从下到上分别为物理层(传输比特流)、数据链路层(帧传输,如交换机)、网络层(IP数据包路由,如路由器)、传输层(TCP/UDP,端到端通信)、会话层(管理会话)、表示层(数据格式转换)和应用层(用户接口,如FTP, SMTP)。每一层负责不同的通信功能,并通过协议如PPP, IP, TCP等协同工作。
|
24天前
|
缓存 网络协议 开发者
计算机网络学习笔记(三)
TCP的异常终止使用reset报文,用于强制关闭连接,不等待正常四次挥手。RST标志位设置时,发送方直接丢弃缓存,接收方无需确认。常见情况包括:尝试连接服务器未开放的端口、一方异常崩溃、收到不属于现有连接的报文、超时未收到确认报文或应用开发者优化效率。reset报文帮助释放资源,防止连接挂起。
|
24天前
|
安全 数据安全/隐私保护
计算机网络学习笔记(四)
HTTPS流程涉及服务器的公钥/私钥和客户端随机密钥。首先,客户端向服务器443端口发起请求,服务器发送公钥给客户端。客户端验证公钥后生成随机密钥(client key),用公钥加密后发送回服务器。服务器用私钥解密获取client key,然后用它加密数据成密文传回客户端。客户端用client key解密完成安全传输。
|
24天前
|
域名解析 缓存 网络协议
【计算机网络基础篇】学习笔记系列之二《游览器输入URL后发生了什么?》
【计算机网络基础篇】学习笔记系列之二《游览器输入URL后发生了什么?》
42 3
|
24天前
|
消息中间件 网络协议 算法
【计算机网络基础篇】学习笔记系列之一《TCP/IP 网络模型》
【计算机网络基础篇】学习笔记系列之一《TCP/IP 网络模型》
39 1