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(拨号,即握手通信)的节点有以下几部分组成:
3) Peer 删除有三种方式: RPC 命令删除,一次应用层通信完成自动删除,通信过程读写错误。
2.2.2 Peer 握手机制
参考《以太坊底层技术研究:Peer 握手机制》
3 表示层:RLP 编码
以太坊所相关有网络上 x 发送的数据均遵循 RLP 编码,参考《RLP 机制分析》
4 应用层:Eth 协议
Peer 握手成功后,即可进行应用层通信,Eth 协议数据包如下表所示:
Eth 协议应用层包括如下命令: