出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2025/05/18 02:49 UTC 版)
![]() |
|
| 開発元 | アルヴィド・ノーバーグ |
|---|---|
| 初版 | 2005年9月 |
| 最新版 | |
| リポジトリ | github |
| プログラミング 言語 |
C++ |
| 対応言語 | 英語 |
| 種別 | BitTorrentライブラリ |
| ライセンス | 三条項BSDライセンス |
| 公式サイト | libtorrent |
libtorrentはオープンソースのBitTorrentプロトコル実装である。C++でプログラムされており、主要なライブラリインターフェースもC++である。主な特徴としては、Mainline DHT、IPv6、HTTPシード、μTorrentのピア交換への対応が挙げられる。libtorrentはBoost、特にBoost.Asioを使用することで、プラットフォーム非依存性を実現している。libtorrentはWindowsおよびほとんどのUnix系オペレーティングシステム(OS X、Linux、多数のBSD)でビルド可能であることが知られている。
libtorrentは、開発者にとって最も有用と見なされるBitTorrent拡張に対応するよう継続的に更新されており、より幅広い環境で動作するよう最適化が進められている。その多くの機能はコンパイル時に無効化することが可能であり、特定のユースケースで使用されないコードを含めないようにできる。libtorrentは、組み込みデバイス、デスクトップ、シードサーバーにとって最も適したlibtorrent実装を目指している。その実装の詳細については、「特徴」の節で述べられている。
libtorrentのオリジナル作者は アルヴィド・ノーバーグである。これはμTorrentと共に拡張プロトコルに初めて対応したクライアントであり、現在では多くの他の拡張の基盤となっている。
BEP(BitTorrent Enhancement Proposal)は、BitTorrent拡張提案プロセスの一部である。BEPとは、BitTorrentコミュニティに情報を提供する設計文書であり、またはBitTorrentプロトコルの新機能を説明するものである。BEPは、機能の簡潔な技術仕様と、その機能の根拠を提供すべきである。BEPは、新機能の提案、問題に対するコミュニティの意見収集、BitTorrentに関する設計決定の記録手段として機能することを目的としている。BEPの著者は、コミュニティ内でコンセンサスを構築し、反対意見を記録する責任を負う。
BEPはバージョン管理されたリポジトリ内でreStructured textファイルとして管理されており、そのリビジョン履歴は機能提案の歴史的記録となる[2]
BEPには以下の三種類がある。
| BEP # | タイトル | 備考 |
|---|---|---|
| 3 | BitTorrentプロトコル | |
| 5 | DHTプロトコル | トラッカーなしトレント、メインライン Kademlia DHTプロトコル |
| 7 | IPv6 トラッカー拡張 | |
| 9 | ピアからメタデータファイルを送信するための拡張 | メタデータ転送プロトコル、マグネットリンクを有効化 |
| 10 | 拡張プロトコル | |
| 11 | ピア交換 | μTorrent PEX |
| 12 | マルチトラッカーメタデータ拡張 | μTorrentの解釈にも対応 |
| 14 | ローカルピア検出 | |
| 15 | UDP トラッカープロトコル | |
| 16 | スーパーシーディング | |
| 17 | HTTPシーディング | ホフマン方式 |
| 19 | WebSeed - HTTP/FTPシーディング(GetRight方式) | |
| 21 | 部分シードのアップロードのみ | |
| 24 | トラッカーが外部IPを返す | |
| 27 | プライベートトレント | |
| 29 | Micro Transport Protocol | バージョン0.16.0以降[3] |
| 30 | ハッシュ木 | バージョン0.15以降[4] |
| 32 | BitTorrent DHTのIPv6拡張 | バージョン1.2以降 |
| 33 | DHTスクレイプ | バージョン0.16以降[4] |
| 38 | ミュータブルトレント | バージョン1.1以降[4] |
| 40 | 標準化ピア優先順位 | バージョン1.0以降[4] |
| 43 | 読み取り専用DHTノード | バージョン1.0.3以降[4] |
| 44 | DHT put/get | バージョン1.0以降[4] |
| 47 | パッドファイルとファイル属性 | バージョン0.15以降[4] |
| 51 | DHT infohashインデクシング | バージョン1.2以降 |
| 52 | BitTorrentプロトコル仕様バージョン2 | バージョン2.0以降 |
| 53 | マグネットリンクのファイル選択 | バージョン1.2以降 |
| 55 | ホールパンチ拡張 |
これはBitTorrentプロトコルのBEP30である。Merkle hash tree torrentsは、ピースハッシュを形成するハッシュツリーのルートハッシュのみをトレントファイルに含めることを可能にする拡張である[5]。この機能の主な利点は、トレント内にいくつピースがあっても、.torrentファイルのサイズが常に一定であることである。.torrentファイルのサイズはファイル数に応じてのみ増加する(ファイル名を含める必要があるため)。
通常のトレントでは、クライアントはピースを検証する前に、複数のブロックを異なるピアから取得しなければならない。ピースのサイズが大きくなるほど、ピース全体をダウンロードして検証するまでに時間がかかる。ピースが検証されるまで、そのデータはスウォームと共有できないため、ピースサイズが大きいほど、ピアによってダウンロードされたデータの再配布までの時間が長くなる。平均すると、データはクライアントのバッファ内で検証待ちの状態になる時間が長くなる。
もう一つの大きなピースサイズの問題は、ピースが失敗した場合に悪意のある、またはバグのあるピアを特定しにくくなり、再ダウンロードに時間がかかり、成功するまでに試行回数が増えることである。
通常のトレントにおけるピースサイズは、.torrentファイルのサイズとピースサイズとのトレードオフである。例えば、4GBのファイルでは、.torrentファイルのサイズを大きくしすぎないようにするために、ピースサイズが2MBまたは4MBになることが多い。
Merkle hash tree torrentsは、この.torrentファイルサイズとピースサイズのトレードオフを解消することで、これらの問題を解決する。ピースサイズを最小のブロックサイズ(16KB)にし、これによりピアは他のピアから受け取ったすべてのデータブロックを即座に検証することが可能になる。これによりターンアラウンドタイムが最小化され、悪意のあるピアの特定の問題は完全に排除される。
libtorrentを使用している主なアプリケーションは以下の通りである。