以太坊源码(05):网络服务分析

目录 

1 网络分层 .............................................................................................4

2 会话层..................................................................................................4

2.1 Peer 介绍..........................................................................................5

2.2 Peer 管理 .........................................................................................5

2.2.1 Peer 动态添加删除流程 ................................................................5

2.2.2 Peer 握手机制................................................................................6

3 表示层:RLP 编码 .................................................................................6

4 应用层:Eth 协议.................................................................................6 

 

 

1 网络分层 

以太坊所有网络功能如下图所示: 所有网络功能建立在以太网的传输层之上,TCP 及 UDP 均有应用。



2 会话层 

会话层主要包括 Peer 管理,NodeTable 管理和 RPC 协议,本文着重介绍 Peer 管理, NodeTable 请参考《P2P 网络及邻居节点发现机制》。 涉及到会话层的关键代码:


2.1 Peer 介绍 

Peer 指通过了通信握手的邻居节点,只有邻居节点才能变为 Peer,只有 Peer 列表中的 节点,才能进行正常的通信。 


2.2 Peer 管理 

Peers 在代码中以 map 的结构存在,由 server 运行方法 run创建,并在 run 方法中进行 添加和删除维护。Pees 最大默认数量为 25(node/defaults.go 定义) 


2.2.1 Peer 动态添加删除流程 

Peer 添加分为两种:被动添加和主动添加。 1) 被动添加指其他节点发起握手,流程如下: 

2) 每当当前 peers 有变动时,如添加,删除,或者一次 dial任务完成,则会执行一次主动 握手流程如下,其中要进行 Dial(拨号,即握手通信)的节点有以下几部分组成:


  • 静态节点,系统启动时配置文件写入


  • nodeTable 中随机选取(当前 needDynDials 的二分之一,needDynDials 的值为 (s.MaxPeer+1)/2=13)


  • loobbuf 中的节点(discovery task 中的邻居节点)


  • lookbuf 中的节点 Peer 数量不足时,会强制进行一次 nodetable 刷新,刷新到的node 写入 lookbuf。 

3) Peer 删除有三种方式: RPC 命令删除,一次应用层通信完成自动删除,通信过程读写错误。 


2.2.2 Peer 握手机制 

参考《以太坊底层技术研究:Peer 握手机制》 



3 表示层:RLP 编码 

以太坊所相关有网络上 x 发送的数据均遵循 RLP 编码,参考《RLP 机制分析》 



4 应用层:Eth 协议 

Peer 握手成功后,即可进行应用层通信,Eth 协议数据包如下表所示: 

Eth 协议应用层包括如下命令: 


本篇文章由芯链团队整理。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值