zoukankan      html  css  js  c++  java
  • 以太坊网络服务分析

    目录

    1 网络分层 

    2 会话层

    2.1 Peer 介绍

    2.2 Peer 管理

    • 2.2.1 Peer 动态添加删除流程 
    • 2.2.2 Peer 握手机制

    3 表示层:RLP 编码 

    4 应用层:Eth 协议

    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 协议应用层包括如下命令:

    原文链接:http://wangxiaoming.com/blog/2017/12/25/HPB-38-ETH-net/

  • 相关阅读:
    【智能家居篇】wifi网络接入原理(上)——扫描Scanning
    ExtJS学习-----------Ext.Array,ExtJS对javascript中的Array的扩展
    android之JSON 进行网络数据交换
    ios应用接入微信开放平台
    android 视频文件不能进行幻灯片的播放
    打一辈子的工才是最大的风险
    《梦断代码》摘录及感悟
    android怎样查看当前project哪些profile是打开的
    Cocos2d-x 游戏存档
    CBitmap,HBitmap,Bitmap区别及联系
  • 原文地址:https://www.cnblogs.com/blockchain/p/9373350.html
Copyright © 2011-2022 走看看