【通訊技術】以太坊通訊通訊分層peer管理,p2p網路及鄰居節點發現機
1網路分層
2會話層
2。1Peer介紹
2。2Peer管理
2。2。1Peer動態新增刪除流程
2。2。2Peer握手機制
3表示層:RLP編碼
4應用層:Eth協議
1網路分層
以太坊所有網路功能如下圖所示:所有網路功能建立在乙太網的傳輸層之上,TCP及UDP均有應用。
2會話層
會話層主要包括Peer管理,NodeTable管理和RPC協議,本文著重介紹Peer管理,NodeTable請參考《P2P網路及鄰居節點發現機制》。涉及到會話層的關鍵程式碼:
2。1Peer介紹
Peer指通過了通訊握手的鄰居節點,只有鄰居節點才能變為Peer,只有Peer列表中的節點,才能進行正常的通訊。
2。2Peer管理
Peers在程式碼中以map的結構存在,由server執行方法run建立,並在run方法中進行新增和刪除維護。
Pees最大預設數量為25(node/defaults。go定義)
2。2。1Peer動態新增刪除流程
Peer新增分為兩種:被動新增和主動新增。1)被動新增指其他節點發起握手,流程如下:
2)每當當前peers有變動時,如新增,刪除,或者一次dial任務完成,則會執行一次主動握手流程如下,其中要進行Dial(撥號,即握手通訊)的節點有以下幾部分組成:
靜態節點,系統啟動時配置檔案寫入
nodeTable中隨機選取(當前needDynDials的二分之一,needDynDials的值為(s。MaxPeer+1)/2=13)
loobbuf中的節點(discoverytask中的鄰居節點)
lookbuf中的節點Peer數量不足時,會強制進行一次nodetable重新整理,重新整理到的node寫入lookbuf
3)Peer刪除有三種方式:RPC命令刪除,一次應用層通訊完成自動刪除,通訊過程讀寫錯誤。
2。2。2Peer握手機制
參考《以太坊底層技術研究:Peer握手機制》
3表示層:RLP編碼
以太坊所相關有網路上x傳送的資料均遵循RLP編碼,參考《RLP機制分析》
4應用層:Eth協議
Peer握手成功後,即可進行應用層通訊,Eth協議資料包如下表所示:
Eth協議應用層包括如下命令: