Network
為什麼java乙太坊使用UDP?- 不只是 devp2p TCP
查看 java ethereum 的原始碼,我看到*UDPListener是org.ethereum.net.rlpx.discover*包的一部分,這似乎使用 NioDatagramChannel(Netty 處理 UDP 數據報的方式)來處理 Ping、Pong、FindNode 和 Neighbors 消息做 kademia DHT 的事情。然而,Devp2p 規範說它只是 TCP,一旦發現節點,實際上 TCP 用於通信。
所以我有點困惑;UDP 是否正式用於節點發現,然後 TCP 用於通信,如果是,該節點發現協議在哪裡記錄?
Q : UDP 正式用於節點發現,然後 TCP 用於通信嗎?
是的。
您可以看到 30301 UDP 發現埠的 enode URL 格式(來自enode url format):
enode://6f8a...d92a0@10.3.58.6:30303?discport=30301
問:如果是這樣,這個節點發現協議在哪裡記錄?