首頁科技 > 正文

【通訊技術】以太坊通訊通訊分層peer管理,p2p網路及鄰居節點發現機

2021-07-27由 威孚影視集 發表于 科技

1網路分層

2會話層

2。1Peer介紹

2。2Peer管理

2。2。1Peer動態新增刪除流程

2。2。2Peer握手機制

3表示層:RLP編碼

4應用層:Eth協議

1網路分層

以太坊所有網路功能如下圖所示:所有網路功能建立在乙太網的傳輸層之上,TCP及UDP均有應用。

【通訊技術】以太坊通訊通訊分層peer管理,p2p網路及鄰居節點發現機

2會話層

會話層主要包括Peer管理,NodeTable管理和RPC協議,本文著重介紹Peer管理,NodeTable請參考《P2P網路及鄰居節點發現機制》。涉及到會話層的關鍵程式碼:

【通訊技術】以太坊通訊通訊分層peer管理,p2p網路及鄰居節點發現機

2。1Peer介紹

Peer指通過了通訊握手的鄰居節點,只有鄰居節點才能變為Peer,只有Peer列表中的節點,才能進行正常的通訊。

2。2Peer管理

Peers在程式碼中以map的結構存在,由server執行方法run建立,並在run方法中進行新增和刪除維護。

Pees最大預設數量為25(node/defaults。go定義)

2。2。1Peer動態新增刪除流程

Peer新增分為兩種:被動新增和主動新增。1)被動新增指其他節點發起握手,流程如下:

【通訊技術】以太坊通訊通訊分層peer管理,p2p網路及鄰居節點發現機

2)每當當前peers有變動時,如新增,刪除,或者一次dial任務完成,則會執行一次主動握手流程如下,其中要進行Dial(撥號,即握手通訊)的節點有以下幾部分組成:

靜態節點,系統啟動時配置檔案寫入

nodeTable中隨機選取(當前needDynDials的二分之一,needDynDials的值為(s。MaxPeer+1)/2=13)

loobbuf中的節點(discoverytask中的鄰居節點)

lookbuf中的節點Peer數量不足時,會強制進行一次nodetable重新整理,重新整理到的node寫入lookbuf

【通訊技術】以太坊通訊通訊分層peer管理,p2p網路及鄰居節點發現機

3)Peer刪除有三種方式:RPC命令刪除,一次應用層通訊完成自動刪除,通訊過程讀寫錯誤。

2。2。2Peer握手機制

參考《以太坊底層技術研究:Peer握手機制》

3表示層:RLP編碼

以太坊所相關有網路上x傳送的資料均遵循RLP編碼,參考《RLP機制分析》

4應用層:Eth協議

Peer握手成功後,即可進行應用層通訊,Eth協議資料包如下表所示:

【通訊技術】以太坊通訊通訊分層peer管理,p2p網路及鄰居節點發現機

Eth協議應用層包括如下命令:

【通訊技術】以太坊通訊通訊分層peer管理,p2p網路及鄰居節點發現機

頂部