マグネットリンク
この項目は内容が専門的であり、一般の閲覧者にはわかりにくくなっているおそれがあります。 |
ファイル共有 |
---|
![]() |

マグネットリンクは、マグネットURIスキームにより定義される形式であり、場所ではなく暗号学的ハッシュ関数を通じてその内容によってファイル(URN)を識別するためのデファクトスタンダードである。
マグネットリンクはさまざまな文脈で使用可能であるが、特にP2Pファイル共有ネットワークにおいて有用である。マグネットリンクは、継続的に利用可能なホストを必要とせずにリソースを参照でき、かつファイルを既に持っている誰もが中央機関を介さずにリンクを生成できるためである。この特性により、ファイル共有コミュニティにおいて「保証された」検索語句としての使用が広まり、誰でもマグネットリンクを配布することで、そのリンクから取得されるリソースが意図したものであることを保証できるようになっている。
歴史
[編集]マグネットURIの標準は2002年にBitziによって開発された。これは、eDonkey2000およびFreenet(現Hyphanet)で使用されていたed2k:
およびfreenet:
URIスキームの「ベンダーおよびプロジェクトに依存しない一般化」としての側面もあり、公式なIETFのURI標準にできる限り準拠しようとする試みであった。BitTorrentは、2020年にBitTorrent v2の変更の一環としてbtmh:
プロトコルを導入した[1]。
フォーマットパラメータ
[編集]マグネットURIは、1つ以上のパラメータから成る。順序に意味はなく、通常のHTTPURLの末尾に付加されるクエリ文字列と同様の形式である。
パラメータ | 名称 | 説明 |
---|---|---|
xt | Exact Topic | ファイルのハッシュ値を含むURN。これはマグネットリンクにおいて最も重要な部分であり、指定されたファイルを検索・検証するために使用される。URNはプロトコルに依存するため、btih(BitTorrent)におけるファイルハッシュURNはed2k用のURNとはまったく異なる。
|
dn | Display Name | ユーザーに表示されるファイル名。利便性のために使用される。 |
xl | eXact Length | ファイルサイズ(バイト単位) |
tr | address TRacker | BitTorrentのダウンロードにおいてDHTを用いずにリソースを取得するために使用されるトラッカーのURL[3]。値はURLエンコードされなければならない。
|
ws | Web Seed | HTTP(S)経由で提供されるペイロードデータ |
as[要出典] | Acceptable Source | ウェブサーバからの直接ダウンロードを指す。クライアントがP2Pネットワーク上でファイルを見つけられない・ダウンロードできない場合の代替手段と見なされている。
|
xs[要出典] | eXact Source | マグネットリンクが指すファイルのHTTP(またはHTTPS、FTP、FTPSなど)ダウンロード元、P2Pソースのアドレス、またはDC++の場合はハブのアドレスを指す。クライアントはこれらに直接接続し、ファイルやそのソースを要求する。このフィールドはP2Pクライアントによってソース情報を保持するためによく使用され、ファイルハッシュを含む場合もある。
|
kt[要出典] | Keyword Topic | 特定のファイルではなく、P2Pネットワークで検索するためのキーワード文字列を指定する。
|
mt[要出典] | Manifest Topic | マグネットリンクのリストを含むメタファイルへのリンク(MAGMA – MAGnet MAnifest)、つまりリンクのリストへのリンク。
|
so[4][5] | Select Only | Torrentクライアントがダウンロードすべき特定のファイルを列挙する[6]。個別のファイルインデックスまたはインデックス範囲(両端含む)で指定される。
|
x.pe | PEer | 接続先の固定ピアアドレスを指定する。トラッカーやDHTが存在しない場合のピア検出の初期手段として使用される[3]。
|
この標準は、"x"で始まるアプリケーション固有の実験的パラメータも許容している[要出典]。
Exact Topic (xt)
[編集]xtパラメータは、特定のP2Pプロトコルに対するURNを指定する。これはTorrentのメタデータを検索するためのパラメータとして機能し、.torrentファイル自体に含まれるメタデータの代替手段として、URNを用いてP2Pネットワーク上でそのメタデータを検索する。各プロトコルはURNを独自に処理する。たとえば、xt=urn:btih:FFC7E738EAA4CD4ECF51EC6FD669C6CDE2C281A8
はbtih(BitTorrent v1プロトコル)を使用しており、BitTorrentクライアントはこのハッシュを取得してBitTorrent DHT内でトレントのメタデータを検索できる[7]。DHTの場合、クライアントはあらかじめ既知のノード群を検索し、infohashに対するメタデータを要求する。これらのノードは他の既知ノードに対して同様の要求を行い、最終的にスウォームが発見されて返される。
xtはグループ設定も可能である。複数のファイルを含めることは、各リンクパラメータにピリオド(".")で始まる連番を付加することで実現される[要出典]。
magnet:?xt.1=[最初のファイルのURN]&xt.2=[二番目のファイルのURN]
- Tiger Treeハッシュ(TTH)
- これらのハッシュはDirect ConnectおよびGnutella2などで使用される。
xt=urn:tree:tiger:[TTHハッシュ(Base32) ]
- BitPrint
- これらのハッシュはSHA-1ハッシュの後にTTHハッシュが続き、ピリオドで区切られる。GnutellaおよびGnutella2で使用される。
xt=urn:bitprint:[SHA-1ハッシュ(Base32) ].[TTHハッシュ(Base32) ]
- eDonkey2000ハッシュ
- これらのハッシュ値はeDonkey2000(ED2K)で使用される。
xt=urn:ed2k:[ED2Kハッシュ(16進) ]
- Advanced Intelligent Corruption Handler(AICH)
- これはマグネットリンクの正式なURNではないが、このようなハッシュはeDonkey2000でダウンロード中またはダウンロード済みのファイルの整合性を回復および制御するために使用される。
xt=urn:aich:[AICHハッシュ(Base32) ]
- BitTorrent情報ハッシュ(BTIH)
- これはBitTorrentメタファイルの「info」セクションのSHA-1ハッシュ値を16進でエンコードしたものであり、BitTorrentがダウンロード可能なファイルまたはファイル群を識別するために使用する。既存リンクとの後方互換性のため、クライアントはこのハッシュのBase32エンコード版もサポートすべきである[3]。
xt=urn:btih:[BitTorrent info ハッシュ(16進) ]
- 一部のクライアント(例:Vuze)ではinfo_hashのBase32を要求する。
- ビットトレント情報ハッシュv2(BTMH)
- BitTorrentv2では旧式のSHA-1ハッシュをSHA-256ハッシュに置き換えている。v2ハッシュは新しい接頭辞(
btmh
)を与えられ、v1およびv2両方のスウォームに参加可能なトレントを許容する[1]。 xt=urn:btmh:[1220: (v2接頭辞) BitTorrent Infoハッシュ (16進) ]
ファイルへのウェブリンク
[編集]Magnetリンクには、直接的またはバックアップ用のソースとして2種類のダウンロードリンクを含めることができる。
- "as"(acceptable source)
- 多くのクライアントは、"as"を優先順位の面で"xs"トークンと同等に扱い、仕様で示されるタイムアウトを無視して"as"ソースへ接続する。
- コンテンツアドレス可能なウェブURL
- この種のRFC 2168に基づくリンクは、GnutellaおよびGnutella2で使用される。[8]
xs=http://[Client Address]:[Port of client]/uri-res/N2R?[ URN containing a file hash ]
xs=http://192.0.2.27:6346/uri-res/N2R?urn:sha1:FINYVGHENTHSMNDSQQYDNLPONVBZTICF
- ファイルのソースを探すためのDirect Connectハブへのリンク
- この種のリンクは、指定されたハブへ直接ダイレクトコネクトクライアントを接続する。
xs=dchub://[hub address]:[hub port]
- Gnutella2上のファイルのウェブベースのソースキャッシュへの参照
- この場合、リンクはクライアントのIPや直接的なソースではなく、同一ファイルをダウンロードする他のクライアントのIPを保持するソースキャッシュを指す。クライアントがキャッシュに接続すると、他のソースのIPが提供されると同時に、そのクライアントのIPもキャッシュに保存され、次に接続してくるクライアントに転送される。このシステムはBitTorrentトラッカーと類似して機能する。
xs=http://cache.freebase.be/[ SHA-1ハッシュ ]
- eD2kソースへの参照
xs=ed2kftp://[client address]:[client port]/[ed2k hash]/[file size]/
補足形式(x.)
[編集]実験的または自己補完的な非公式オプションには、接頭辞x.
の後に任意の接尾文字を付けて使用できる。これらの名称が標準化されることは決してない。
クライアント
[編集]クライアント | dn | xl | xt | tr | xs | as | kt | mt | ws |
---|---|---|---|---|---|---|---|---|---|
AMule | Yes | Yes | urn:ed2k: | No | 不明 | 不明 | 不明 | 不明 | 不明 |
ApexDC++ | Yes | Yes | urn:bitprint: urn:tree:tiger: | No | dchub:[Note 1] | dchub:[Note 1] | No | No | 不明 |
BitComet | Yes | Yes | urn:btih: | Yes | Yes1.76 | No | No | No | Yes1.74 [9] |
Bitflu | Yes | No | urn:btih: | Yes | No | No | No | No | 不明 |
Deluge | Yes | No | urn:btih: | Yes | No | No | No | No | 不明 |
EiskaltDC++ | Yes | Yes | urn:tree:tiger: urn:bitprint: urn:btih: [Note 2] urn:btmh: [Note 2] | No | dchub:[Note 1] adc:[Note 3] adcs:[Note 4] | dchub:[Note 1] | Yes | No | 不明 |
FlylinkDC++ | Yes | Yes | urn:tree:tiger: urn:bitprint: urn:btih: | No | dchub:[Note 1] adc:[Note 3] adcs:[Note 4] | dchub:[Note 1] | Yes | No | 不明 |
gtk-gnutella | Yes | Yes | urn:sha1: | No | http: push: | Yes | Yes | No | 不明 |
KTorrent | Yes | No | urn:btih: | Yes | No | No | No | No | 不明 |
LimeWire | Yes | Yes | urn:sha1: | No | http: urn:guid: | 不明 | No | No | 不明 |
MonoTorrent | Yes | Yes | urn:btih: | Yes | No | Yes | No | No | 不明 |
μTorrent | Yes | No | urn:btih: | Yes | No | No | No | No | Yes |
qBittorrent | Yes | Yes[10] | urn:btih: urn:btmh: | Yes | 不明 | 不明 | No | No | 不明 |
Shareaza | Yes | Yes | urn:bitprint: urn:btih: urn:ed2k: urn:md5: urn:sha1: urn:tree:tiger: | Yes[Note 5] | http: ftp: | http: ftp: (xsと同じ優先度) | Yes | No | 不明 |
Tixati | Yes | Yes | urn:btih: | Yes | Yes | Yes | 不明 | 不明 | Yes |
Transmission[2][11] | Yes | No | urn:btih: | Yes | No | No | No | No | Yes[12] |
Vuze | Yes | Yes | urn:btih: urn:sha1: | Yes | Yes5.7.5.0 | Yes5.7.5.0 | No | No | Yes |
関連項目
[編集]脚注
[編集]注釈
[編集]出典
[編集]- ^ a b “BitTorrent v2”. BitTorrent (2020年9月7日). 2020年10月30日時点のオリジナルよりアーカイブ。2020年9月21日閲覧。
- ^ a b “magnet-test.c in trunk/libtransmission; Revision 9531”. Transmission. 2012年2月17日時点のオリジナルよりアーカイブ。2012年2月4日閲覧。
- ^ a b c d “BitTorrent Enhancement Proposal 9: Extension for Peers to Send Metadata Files”. bittorrent.org (2017年3月26日). 2022年10月10日時点のオリジナルよりアーカイブ。2022年11月4日閲覧。
- ^ Houlihan, タイラー (2017年5月24日). “Magnet URI extension - Select specific file indices for download”. BitTorrent.org. 2024年12月30日閲覧。
- ^ “libtorrent/magnet_uri.cpp at 64817e0e8793d0875fc10245de52ffb2540a223d · arvidn/libtorrent”. libtorrent. 2022年11月4日時点のオリジナルよりアーカイブ。2022年11月4日閲覧。
- ^ “BitTorrent Enhancement Proposal 53: Magnet URI extension - Select specific file indices for download”. BitTorrent.org (2017年6月6日). 2022年10月10日時点のオリジナルよりアーカイブ。2022年11月4日閲覧。
- ^ “bep_0005.rst_post”. bittorrent.org. 2022年5月12日閲覧。
- ^ Chapweske, Justin (2001年11月29日). “HTTP Extensions for a Content-Addressable Web”. www-talk. W3C. 2011年7月28日時点のオリジナルよりアーカイブ。2010年11月7日閲覧。
- ^ “v1.74 Core Improve: support ws parameter in Magnet URI, to add web seed”. bitcomet. 2021年4月10日時点のオリジナルよりアーカイブ。2021年4月7日閲覧。
- ^ “Add eXact Length parameter when creating magnet URI”. GitHub. 2024年12月29日閲覧。
- ^ “magnet.c in trunk/libtransmission; Revision 9979”. Transmission. 2012年2月17日時点のオリジナルよりアーカイブ。2012年2月4日閲覧。
- ^ “magnet.c in libtransmission: Commit 5c3fd1b5ccc3a8c4ab68e2c56861df31dd1c720a”. Transmission. 2021年9月4日時点のオリジナルよりアーカイブ。2021年9月4日閲覧。
外部リンク
[編集]- Magnet-URI Project - SourceForge.net
- RHash - SourceForge.net マグネットリンクを計算できるオープンソースのコマンドラインツール