ビットコインの仕組みを追いかけてみる(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バイト

  1. magic (4バイト)
  2. command (12バイト)
  3. length (4バイト)
  4. checksum (4バイト)

以下は「getdata」のパケット。

f:id:ichou1:20171204211925p:plain

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」など。