以太坊網路服務分析

2021-09-16 23:38:36 字數 2271 閱讀 8707

以太坊所有網路功能如下圖所示:

所有網路功能建立在乙太網的傳輸層之上,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...