# BitTorrent

BitTorrent| 作者 |
ブラム・コーエン |
| 開発元 |
Rainberry |
| 初版 | 2001年 (2001) |
| 規格 |
The BitTorrent Protocol Specification |
| 種別 |
P2Pファイル共有 |
| 公式サイト | www.bittorrent.org  |

**BitTorrent**（ビットトレント）は、ブラム・コーエンによって開発された、Peer to Peerを用いたファイル転送用プロトコル。Bit（ビット）+Torrent（急流）から、「急流のように早く（ファイルを）ダウンロードできる」という意味を持つ。メインラインと呼ばれる本家の**BitTorrent client**の他にも様々な互換クライアントが存在する。

## 概要

開発者のコーエンは、かつて所属していたベンチャー企業で、P2Pプロトコルをベースにした情報コンテンツ流通プラットフォームの構築プロジェクトに携わった（プロジェクトは頓挫）。その際、従来のP2Pネットワークがピアの帯域を有効に利用していないことやその信頼性が低いことに不満を感じ、それらの欠点を解消するBitTorrentの開発を2001年に一人で始めた。2002年にP2Pプロトコルのファイナライズを、2003年にクライアントソフトをリリースした。2003年4月にRed Hat Linux 9がリリースされた際に、そのISOイメージをドイツ人の一利用者がBitTorrentで公開し、3日間で3万個分のISOイメージが配布されたことで注目されるようになった。

現在では、主要な自由ソフトウェアおよびオープンソースソフトウェアのほか、音楽や映画、商用アプリケーションを提供するために、BitTorrentが利用されている。

BitTorrentで配布されているファイルのダウンロードには、BitTorrentプロトコルを実装したクライアントソフトウェアを利用する。

インターネットでのBitTorrentが占めるトラフィックに関する報告は複数ある。CableLabs（北米CATV業界の研究機関）はCATVの上りトラフィックの55%、英国調査会社CacheLogicはインターネットのトラフィックの35%、別の論文はブロードバンドトラフィックの18%であると報告している。

## 特徴

BitTorrentは、ファイルの配布に使われるコンテンツ提供者の負担を著しく減少させられる。コンテンツ提供者（Bittorrentにおけるシーダー：ファイルの全ての断片の保持者）はそれぞれ異なる断片を、常にピアの一部だけに配布する。各ピアは、ピアやシーダーから断片をダウンロードすると同時に、自分の持つ部分を、持っていないピアにアップロードする。
BitTorrentがこれまでのソフトウェアと大きく異なるのは、従来のインターネットにおける法則に反して、「人気のあるファイルであればあるほど、ダウンロードが早くなる」という特徴である（Winnyなど一部のP2Pプロトコルと同じ特徴）。

Napsterに代表される従来のP2Pソフトウェアの構図は、一極集中型であった。これは、限られた数の豊富な帯域を持っているユーザの周りに、帯域の貧弱な大量のユーザがぶら下がる構図である。このため、ある一つのファイルを取得するためにユーザが集まると、ダウンロード要求が一極集中し、全体の拡散速度としても豊富といわれた帯域を占有するだけの速度しか出すことができない。

この現象に対してBitTorrentでは、「相手（ピア）からファイルの一部を受けとるには、自分もファイルの一部を渡さなければならない」という規則を導入し、貧弱な帯域を持つユーザにも、全体のファイル配布に協力させるようにした。これにより、人気のあるファイルに対する要求であっても、それだけ多くのユーザが配布に協力することになり、結果としてユーザ全体が早くダウンロードすることができる。

また、この特徴より、自分からアップロードするのは、ダウンロード中かダウンロードが完了したファイルのみである。Winnyなどとは異なり、自分がダウンロードしていないファイルのアップロードに加担させられるということが起こらないのも大きな特徴である。

また、BitTorrentは、従来のP2Pに対する進歩というだけではなく、インターネット上でのファイル配布の可能性を広げた。一般的にファイルを配布する際には、サーバからそれぞれのユーザが別々にダウンロードするため、サーバの帯域が配布可能量を決めていた。しかし、BitTorrentを用いることでユーザ同士の帯域が利用可能になり、より多くのユーザにファイルを配布することができるようになる。

2006年10月23日に、BitTorrent, Inc.とPC周辺機器（ネットワーク機器）メーカーであるASUS、Planex、QNAPが提携し、BitTorrentクライアントを内蔵したルーターやNASを発売することを発表した。

BitTorrentがこれまでのP2Pソフトウェアともう一つ大きく異なるのは、indexing web site (index home page) からインデックストレントファイルをダウンロードしてからでないと、本体ファイルをP2Pからダウンロードできないということである。この点はWinny、Share、Perfect Dark、LimeWireなどの他のP2Pソフトとは異なる特徴である。

## 匿名性

「P2P FINDER」というP2Pネットワーク監視サービスが存在しており、同サービスはBitTorrentのトラフィックも解析可能である。一般社団法人日本レコード協会は、このP2P FINDERを利用して発信者情報開示請求訴訟を起こし勝訴し、違法アップローダーを特定している。

## WebTorrent

クライアントソフトなしにブラウザ上でトレントを使用できるようにしたWebTorrentが存在する。

WebTorrentは通信にWebRTCを使っており、トランスポート層が異なる。そのためWebTorrentとBitTorrentは別々に動作し、これらを連携させるためにはWebTorrent Desktopというネットワークブリッジを使う必要がある。

## 用語と説明

インデックスサイト (indexing web site)
トレントファイルのインデックスを保持しており、トレントファイルを検索できるサイト
トレントファイル
トラッカーへのリンクを含むインデックスとなるファイル。拡張子が「.torrent」となっており、クライアントと関連づけがされている。これを読み込むことによりクライアントはトラッカーと接続し、ピアの情報を受取り、ダウンロードが開始される。これ自体はただのインデックスにすぎないので、本体ファイルをまったく含まない。
ピア (peer)
直接接続してデータのやりとりを行っているコンピュータ。
トラッカー (tracker)
新規接続者にピアのIPアドレスを教えるサーバ。
シード／シーダー (seed/seeder)
完全なファイルを提供しているコンピュータ。最初の提供者についても、ダウンロードが完了したものについてもいう。
リーチャー (leecher)
ダウンロード中のコンピュータ。本来、開発者のコーエンは、ピアにアップロードせずにダウンロードだけを試みるものに対してこの言葉を使っているが、今では、広くダウンロード中のピアを呼ぶのに使われている。
スウォーム (swarm)
同じトレントファイルにより、同じファイルを提供／ダウンロード中のコンピュータのグループ全体をいう。ほとんどの場合、一つのコンピュータはその一部とだけ、直接データのやりとりを行っている。
共有比／負担率 (share ratio)
アップロード量とダウンロード量との比。オープンソースソフトウェアなど、開発者が継続的にシードの提供を続けている場合は別として、最低でもこれが1に達するまで共有を続けるのが礼儀とされている。トラッカーによってはこの値に準じてシードの速さあるいは量に制限を掛けていることがある。
可用性／健康度 (health)
ピアにあるデータを集めるといくつのファイルができるかを目安として表したもので、小数か%で表示される。1.0または100%を下回ると完全なファイルをダウンロードできない可能性が高い。
99%病
ファイルのダウンロードが99%完了し、シーダー、リーチャー共あるにもかかわらずダウンロードが100%完了しない状態。最後のピースが見つからないことが原因であるが、ダウンロードしたままにしておくか、一旦ダウンロードをやめ、再度ダウンロードを開始する事で改善する。
## 主なクライアントソフトウェア

BitTorrentクライアントは様々なプラットフォームに実装され、その多くが日本語を含む多言語に対応している。

* BitTorrent：コーエンおよびBitTorrent, Inc.によって開発、配布されているオリジナルのBitTorrentクライアントで、**Mainline**とも呼ばれる。バージョン5まではPythonによって実装され、オープンソースとして公開されている。BitTorrent, Inc.が2006年12月にWindows用クライアントを開発していたμTorrentを買収した後、バージョン6からはこれをベースにしたものに変更され、それ以降のソースコードも非公開となった。
* ABC (Yet Another BitTorrent Client)：BitTornadoを元にPythonで実装されている。接続の優先度を調整する機能や、ウェブインターフェースを備える。
* BitComet：C++で実装されている。UPnP対応ルーターを使っている場合のNAT設定やポート設定、コンピューターのキャッシュ設定を自動で行う。トレントファイルを開いて、複数のファイルの中からダウンロードするファイルを任意で選択することができる。特に、極東アジアで使われているクライアントである。日本もその例外ではなく、多くの情報を日本語で得ることができる。一方で、動作ないし開発思想が利己的であると非難されることがあり、一部のクライアントはBitCometとの接続を禁止している。
* BitSpirit (Eng)：多言語対応。DHTネットワーク、Gzip圧縮、UPnP、スーパーシード、プロキシ対応など多機能。個別ファイルダウンロード可能。ダウンロードピースマップ表示。TCPIP接続制限解除パッチ装備。
* BitThief：Javaで動作するクライアントソフトウェア。BitTorrentの原則に反してアップロードを行わず、ダウンロードのみおこなうので一部のクライアントは接続を禁止している。言語は英語のみ。
* μTorrent：uTorrentと表記される場合も。リソースの消費を抑えた軽量なクライアントとして開発されている。2006年12月7日に本家BitTorrentに買収された。多くがオープンソースで開発されているBitTorrentクライアントの中で珍しく、クローズドソースにて提供されている。ただし、元々の製作者はver. 1.6.1を最後に開発には参加していない。トレントファイルを開いて、複数のファイルの中からダウンロードするファイルを任意で選択することができる。Vuze、BitCometと並んで、最もよく使われているクライアントのひとつ。
* BitTornado：Pythonによる実装。クロスプラットホーム。スーパーシードモードを備える。
* CTorrent：C++で実装されている。軽量化や機能拡張を図ったEnhanced CTorrentもある。
* Deluge：Pythonによる実装。UPnPやNAT-PMP、DHTなどに対応する。
* Flash Get：最新版で対応している。欲しいファイルだけを入手できる機能もついている。
* Free Download Manager：Windows用のオープンソースなダウンロードマネージャ。BitTorrentにも対応している。日本語対応。
* Net Transport：日本語対応のダウンロードマネージャ。ファイルの個別ダウンロード対応。
* KTorrent：KDEに含まれるクライアント。
* Lftp：コンソール上で使えるクライアント。
* LimeWire：Beta版の4.13.0でBitTorrentが実装されている。
* Mozilla Firefox：BitTorrentプロトコルを実装した拡張機能「FireTorrent」「MozTorrent」「AllPeers」の開発が行われている。
* Opera：バージョン9より、BitTorrentに正式対応した。米BitTorrent社との間で、商標の使用やBitTorrentサーチエンジンへのアクセスなどに関して提携が結ばれている。
* qBittorrent：Qtを使用して実装された、クロスプラットホームなクライアント。非常に高機能。
* QtWeb：バージョン3.2より、Torrentクライアント機能を搭載している。
* rTorrent：ncursesを使用したTUIのBitTorrentクライアント
* Shareaza：Gnutella2をメインとしたソフトウェアだが、Gnutella、eDonkey2000の他にBitTorrentプロトコルにも対応している。
* Transmission：Cによる実装。クロス・プラットホームバックエンドの上に、シンプルで使いやすいインターフェースを持つ。macOS (Cocoa), Linux/NetBSD/FreeBSD/OpenBSD (GTK), BeOS/ZETA版が公開されている。非公式だがWindows版もある。
* 4Gamer Game Loader/Torrentan Network System：ゲームポータルサイトの4Gamer.netが、ジャストプレイヤー株式会社と制作している。ゲームのダウンロードに特化している模様。ベンチマークサイトを見る限り、BitTorrentとの違いが何かあるようであるが、詳細は不明。BitTorrentを使ったベンチマークサイトでもある。
* Vuze（旧 Azureus）：Javaで実装されており、多くのプラットフォームに対応している。細かい設定が可能であり、また、様々なプラグインがある。
* 迅雷（Xunlei、Thunder）：中国圏でよく使われているクライアント。利用者数だけで見れば世界最大のμtorrentに匹敵するとのデータもある。
* aria2：C++で実装されているクロスプラットフォームなダウンロードマネージャ。CUIで動作するほか、JSON-RPCやXML-RPCでのリモートコントロールに対応。

* ImageShack

* BitTorrent（英語）
* BitTorrent（日本語）