Libtorrent

オープンソースのBitTorrentクライアント From Wikipedia, the free encyclopedia

libtorrentオープンソースBitTorrentプロトコル実装である。C++プログラミングされており、主要なライブラリインタフェースC++である。主な特徴としては、Mainline DHTIPv6、HTTPシード、μTorrentピア交換への対応が挙げられる。libtorrentはBoost、特にBoost.Asioを使用することで、プラットフォーム非依存性を実現している。libtorrentはWindowsおよびほとんどのUnix系オペレーティングシステムmacOSLinux、多数のBSD)でビルド可能であることが知られている。

開発元 アルヴィド・ノーバーグ
初版 2005年9月 (20年前) (2005-09)
最新版
2.0.11[1] ウィキデータを編集 / 2025年1月28日 (13か月前)
概要 開発元, 初版 ...
libtorrent
開発元 アルヴィド・ノーバーグ
初版 2005年9月 (20年前) (2005-09)
最新版
2.0.11[1] ウィキデータを編集 / 2025年1月28日 (13か月前)
リポジトリ github.com/arvidn/libtorrent/
プログラミング
言語
C++
対応言語 英語
種別 BitTorrentライブラリ
ライセンス 三条項BSDライセンス
公式サイト libtorrent.org
テンプレートを表示
閉じる

libtorrentは、開発者にとって最も有用と見なされるBitTorrent拡張に対応するよう継続的に更新されており、より幅広い環境で動作するよう最適化が進められている。その多くの機能はコンパイル時に無効化することが可能であり、特定のユースケースで使用されないコードを含めないようにできる。libtorrentは、組み込みデバイス、デスクトップ、シードサーバにとって最も適したlibtorrent実装を目指している。その実装の詳細については、「特徴」の節で述べられている。

libtorrentのオリジナル作者は アルヴィド・ノーバーグである。これはμTorrentと共に拡張プロトコルに初めて対応したクライアントであり、現在では多くの他の拡張の基盤となっている。

特徴

実装されたBEP

BEP(BitTorrent Enhancement Proposal)は、BitTorrent拡張提案プロセスの一部である。BEPとは、BitTorrentコミュニティに情報を提供する設計文書であり、またはBitTorrentプロトコルの新機能を説明するものである。BEPは、機能の簡潔な技術仕様と、その機能の根拠を提供すべきである。BEPは、新機能の提案、問題に対するコミュニティの意見収集、BitTorrentに関する設計決定の記録手段として機能することを目的としている。BEPの著者は、コミュニティ内でコンセンサスを構築し、反対意見を記録する責任を負う。

BEPはバージョン管理されたリポジトリ内でreStructured textファイルとして管理されており、そのリビジョン履歴は機能提案の歴史的記録となる[2]

BEPには以下の三種類がある。

  1. Standards Track BEPは、BitTorrentプロトコルの拡張、またはプロトコル内のアクター(現在はクライアント、トラッカー、Webサーバ)の動作の変更を記述する。
  2. Informational BEPは、BitTorrent設計上の問題について説明したり、BitTorrentコミュニティに対して一般的なガイドラインや情報を提供するが、拡張提案は行わない。Informational BEPは必ずしもBitTorrentコミュニティのコンセンサスや推奨を反映しているわけではないため、ユーザーや実装者はこれらを無視してもよいし、参考にしてもよい。
  3. Process BEPは、BitTorrentを取り巻くプロセスを説明したり、プロセスへの変更(または出来事)を提案する。Process BEPはStandards Track BEPに似ているが、BitTorrentプロトコル以外の分野に適用される。これらは単なる推奨にとどまらず、ユーザーは通常これを無視できない。例としては、リリーススケジュール、手順、ガイドライン、意思決定プロセスの変更、BitTorrent開発に使用されるツールや環境の変更などがある。
さらに見る BEP #, タイトル ...
BEP #タイトル備考
3BitTorrentプロトコル
5DHTプロトコルトラッカーなしトレント、メインライン Kademlia DHTプロトコル
7IPv6 トラッカー拡張
9ピアからメタデータファイルを送信するための拡張メタデータ転送プロトコル、マグネットリンクを有効化
10拡張プロトコル
11ピア交換μTorrent PEX
12マルチトラッカーメタデータ拡張μTorrentの解釈にも対応
14ローカルピア検出
15UDP トラッカープロトコル
16スーパーシーディング
17HTTPシーディングホフマン方式
19WebSeed - HTTP/FTPシーディング(GetRight方式)
21部分シードのアップロードのみ
24トラッカーが外部IPを返す
27プライベートトレント
29Micro Transport Protocolバージョン0.16.0以降[3]
30ハッシュ木バージョン0.15以降[4]
32 BitTorrent DHTのIPv6拡張 バージョン1.2以降
33DHTスクレイプバージョン0.16以降[4]
38ミュータブルトレントバージョン1.1以降[4]
40標準化ピア優先順位バージョン1.0以降[4]
43読み取り専用DHTノードバージョン1.0.3以降[4]
44DHT put/getバージョン1.0以降[4]
47パッドファイルとファイル属性バージョン0.15以降[4]
51 DHT infohashインデクシング バージョン1.2以降
52 BitTorrentプロトコル仕様バージョン2 バージョン2.0以降
53 マグネットリンクのファイル選択 バージョン1.2以降
55ホールパンチ拡張
閉じる

Merkle hash tree torrents

これはBitTorrentプロトコルのBEP30である。Merkle hash tree torrentsは、ピースハッシュを形成するハッシュツリーのルートハッシュのみをトレントファイルに含めることを可能にする拡張である[5]。この機能の主な利点は、トレント内にいくつピースがあっても、.torrentファイルのサイズが常に一定であることである。.torrentファイルのサイズはファイル数に応じてのみ増加する(ファイル名を含める必要があるため)。

通常のトレントでは、クライアントはピースを検証する前に、複数のブロックを異なるピアから取得しなければならない。ピースのサイズが大きくなるほど、ピース全体をダウンロードして検証するまでに時間がかかる。ピースが検証されるまで、そのデータはスウォームと共有できないため、ピースサイズが大きいほど、ピアによってダウンロードされたデータの再配布までの時間が長くなる。平均すると、データはクライアントのバッファ内で検証待ちの状態になる時間が長くなる。

もう一つの大きなピースサイズの問題は、ピースが失敗した場合に悪意のある、またはバグのあるピアを特定しにくくなり、再ダウンロードに時間がかかり、成功するまでに試行回数が増えることである。

通常のトレントにおけるピースサイズは、.torrentファイルのサイズとピースサイズとのトレードオフである。例えば、4GBのファイルでは、.torrentファイルのサイズを大きくしすぎないようにするために、ピースサイズが2MBまたは4MBになることが多い。

Merkle hash tree torrentsは、この.torrentファイルサイズとピースサイズのトレードオフを解消することで、これらの問題を解決する。ピースサイズを最小のブロックサイズ (16KB) にし、これによりピアは他のピアから受け取ったすべてのデータブロックを即座に検証することが可能になる。これによりターンアラウンドタイムが最小化され、悪意のあるピアの特定の問題は完全に排除される。

アプリケーション

libtorrentを使用している主なアプリケーションは以下の通りである。

関連項目

  • BitTorrentソフトウェアの比較英語版

脚注

外部リンク

Related Articles

Wikiwand AI