ビットコインの仕組みを追いかけてみる(2)
フルノードがピアと通信する様子をtcpdumpで出力してみた。
sudo tcpdump -X -S -t -n -i wlan0 -s 2048 '(port 44253)' > /tmp/tcpdump.txt
8つのコネクションの1つだけを指定。
通信でやりとりするMessageの構造については以下。
Protocol documentation - Bitcoin Wiki
ヘッダ部分は24バイト
- magic (4バイト)
- command (12バイト)
- length (4バイト)
- checksum (4バイト)
以下は「getdata」のパケット。
IPヘッダ(20=5*4バイト)、TCPヘッダ(32=8*4バイト)、その後にMessage(赤枠)が続いている。
Messageのデータ部分の長さは0x00000025(=10進数37)。
magicはネットワークを指すもので、「0x0709110B」(ダンプ上は「0b11 0907」)は、"testnet3" (testnetバージョン3)を意味する。
commandは他にも「inv」、「addr」、「block」、「getblock」など。