メッセージフロー
BitTorrent クライアントの実装メモ.頭が混乱してきたのでまとめてみた.なお,ダウンロード側はコネクション開始直後は choked 状態.
Tracker Client Peers Tracker <- GET request Client Peers Tracker peers list -> Client Peers Tracker Client Handshake -> Peers Tracker Client <- <bitfield> message Peers Tracker Client <request> message -> Peers Tracker Client <interested> message -> Peers Tracker Client <- <unchoke> message Peers Tracker Client <- <piece> message Peers downloaded Tracker Client <not interested> message -> Peers Tracker Client <- <choke> message Peers Tracker Client <have> message -> Peers
実際には choke/unchoke/interested/not interested メッセージは非同期的に送信されるので,ここでのタイミングは適当.
追記: メッセージフローを図に表したWebサイトを発見した.
http://alexmohr.com/bittorrent/btworking.html