BitTorrentの仕組み
このページについて
このページのコンテンツは、このサイトの管理人が作成したものではありません。とても視覚的にわかりやすく説明されていたのでリンクしていたのですが、残念なことにオリジナルのサイトは閉鎖されたようなので、勝手にミラーしたものです。(若干加筆しています)
こちらにもミラーされています。
BitTorrentネットワーク
|
・ |
WEBサーバ等からトレントファイルを取得してBitTorrentネットワークに参加する。 |
・ |
トレントファイルからトラッカーのアドレスを読み込んでトラッカーより他のピアの情報を取得して、他のピアからピースを相互にダウンロード/アップロードしていき、100%完了したらシーダーとなりアップロード専用になる。 |
・ |
トラッカー(tracker)が提供を停止したりダウンしたらネットワークは消失する。すでに確立しているP2P接続はそのままなので、短時間のダウンなら耐性がある。 |
・ |
トラッカーはWEBサーバと兼ねることがある。 |
・ |
ネットワークの最初は通常1つのシーダー(seeder
種)から始まる。このときスーパーシードという初期配信用モードを使用する。 |
・ |
複数のトラッカーにアクセスするマルチトラッカー機能もある。 |
|
P2P接続の確立
|
・ |
定期的にトラッカーへアクセスし、ネットワークに参加しているクライアントの情報を取得・更新する。 |
・ |
接続の際に、トレントファイルに記されたハッシュ(SHA1)が認証キーとなり、これが一致しないとクライアント間は接続されない。同じトレントファイルを持ったクライアント同士のみがネットワークを形成する。 |
|
ファイル処理
|
・ |
データファイルはトレントファイルとピース(piece)に分解され、最終的にまた合成される。 |
・ |
トレントファイルには全ピース分のハッシュ(SHA1)が記録されており、最終的なデータファイルの信用性はトレントファイルの信用性とほぼ等しい。WEBサーバからデータファイルをダウンロードするのと変わらない信用性となる。 |
|
データ転送
|
・ |
接続したクライアントと、互いに必要なピースを交換し合う。実際にはさらに細分化されたピースセクション(piece-section)を送受信する。 |
・ |
トレントファイルにはピース1つずつのハッシュが記されており、ピースを受信するごとにそのハッシュと合うか計算する。 |
・ |
交換するデータ量は1対1ではない。 |
・ |
クライアントはデータを送信してきたクライアントに対して優先的にデータを送り返すことで、ダウンロードだけを行う「ただ乗り」クライアント(leecher
/ ヒル)を排除する。ただし一定値以上の送信速度があれば認められるので実際には送信と受信の差が100倍以上になる場合もある。 |
|
ピースの入手性
|
・ |
トレント(=1つのBitTorrentネットワーク)にシーダー(100%を持つピア)が居ない場合、ピースがすべて揃わない場合がある。 |
・ |
ピースが揃うかどうかはAvailabilityで表され、1に満たない場合は現時点でピースが揃わないことを表す。 |
・ |
ピースが揃わない場合、そのトレントを諦めるか、必要なピースを持ったクライアントがアクセスしてくるのを待たなければならない。 |
・ |
クライアントには、すでにダウンロードが完了したトレントを監視し、シーダーの居ないトレントに自動的にアクセスしてネットワークを補完する機能もある。 |
|
クライアントが負うべき負担
|
・ |
クライアントの送信量:受信量の比率は負担率(share
ratio)で表され、BitTorrentではダウンロード完了後も1以上(送信量が受信量を上回る)になるまでクライアントを動作させることが強く推奨される。 |
|
次のステップ