以太坊所有網路功能如下圖所示:
所有網路功能建立在乙太網的傳輸層之上,tcp 及 udp 均有應用。
會話層主要包括 peer 管理,nodetable 管理和 rpc 協議,本文著重介紹 peer 管理,
nodetable 請參考《p2p 網路及鄰居節點發現機制》。
涉及到會話層的關鍵**:
原始檔類
類描述主要方法
server.go
type server struct
server 是網路功能的基本類,所有功能均封裝為 server,並進行啟動。
start:啟動 server run: 執行具體任. 務, 包括建立 peers map, peer 撥號,peer 新增, 刪除處理。startlistening : 監 聽 tcp 埠。 addpeer: 添 加 peer removepeer : 移 除 peer |
peer.go
type peer struct
peer 類提供各種peer 的操作方法
dial.go
type dialer struct
dialer 類,即撥號類,撥號即節 點向鄰居節點發起 peer 通訊
dial:實現一次撥號 |
table.go
type table struct
鄰居節點及 k 桶相關類
|udp.go
提供 kad 協議相關方法及 peer 握手相關方法
|peer介紹
peer 指通過了通訊握手的鄰居節點,只有鄰居節點才能變為 peer,只有 peer 列表中的節點,才能進行正常的通訊。
peer管理
peers 在**中以 map 的結構存在,由 server 執行方法 run 建立,並在 run 方法中進行新增和刪除維護。pees 最大預設數量為 25(node/defaults.go 定義)
peer動態新增刪除流程
peer 新增分為兩種:被動新增和主動新增。
1) 被動新增指其他節點發起握手,流程如下:
2) 每當當前 peers 有變動時,如新增,刪除,或者一次 dial 任務完成,則會執行一次主動握手流程如下,其中要進行 dial(撥號,即握手通訊)的節點有以下幾部分組成:
3) peer 刪除有三種方式: rpc 命令刪除,一次應用層通訊完成自動刪除,通訊過程讀寫錯誤。
peer握手機制
peer握手成功後,即可進行應用層通訊,協議資料報如下表所示:
序號分類描述1
code
資料報命令分類 |
2size
payload大小 |
3payload
負載資料 |
4receivedat
接受到資料報的時間,接受端節點賦值 |
eth協議應用層包括如下命令:
序號分類描述1
statusmsg = 0x00
handshake 使用,握 手成功後不再傳送 |
2newblockhashesmsg = 0x01
新區塊雜湊(廣播) |
3txmsg = 0x02
交易資訊(廣播資料) |
4getblockheadersmsg = 0x03
獲取去塊頭資訊 |
5blockheadersmsg = 0x04
獲取區塊頭資訊響應 |
6getblockbodiesmsg = 0x05
獲取區塊資訊 |
7blockbodiesmsg = 0x06
獲取區塊資訊相應 |
8newblockmsg = 0x07
新塊資訊(廣播資料) |
9getnodedatamsg = 0x0d
獲取節點資料 |
10nodedatamsg = 0x0e
獲取節點資料響應 |
11getreceiptsmsg = 0x0f
獲取收據資訊 |
12receiptsmsg = 0x10
獲取收據資訊響應 |
以太坊網路服務分析
目錄 1 網路分層 2 會話層 2.1 peer 介紹 2.2 peer 管理 3 表示層 rlp 編碼 4 應用層 eth 協議 1 網路分層 以太坊所有網路功能如下圖所示 所有網路功能建立在乙太網的傳輸層之上,tcp 及 udp 均有應用。2 會話層 會話層主要包括 peer 管理,nodeta...
以太坊 網路服務分析
目錄 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 網路分層 以太坊所有網路功能如下圖所示 所有網路功能建立在乙...
以太坊網路服務分析
目錄 1 網路分層 2 會話層 2.1 peer 介紹 2.2 peer 管理 3 表示層 rlp 編碼 4 應用層 eth 協議 1 網路分層 以太坊所有網路功能如下圖所示 所有網路功能建立在乙太網的傳輸層之上,tcp 及 udp 均有應用。2 會話層 會話層主要包括 peer 管理,nodeta...