マグネットリンク

パイレート・ベイで使用されるマグネットアイコン
マグネットリンクは、マグネットURIスキームにより定義される形式であり、場所ではなく暗号学的ハッシュ関数を通じてその内容によってファイル（URN）を識別するためのデファクトスタンダードである。
マグネットリンクはさまざまな文脈で使用可能であるが、特にP2Pファイル共有ネットワークにおいて有用である。マグネットリンクは、継続的に利用可能なホストを必要とせずにリソースを参照でき、かつファイルを既に持っている誰もが中央機関を介さずにリンクを生成できるためである。この特性により、ファイル共有コミュニティにおいて「保証された」検索語句としての使用が広まり、誰でもマグネットリンクを配布することで、そのリンクから取得されるリソースが意図したものであることを保証できるようになっている。

**歴史**
マグネットURIの標準は2002年にBitziによって開発された。これは、eDonkey2000およびFreenet（現Hyphanet）で使用されていたed2k:およびfreenet: URIスキームの「ベンダーおよびプロジェクトに依存しない一般化」としての側面もあり、公式なIETFのURI標準にできる限り準拠しようとする試みであった。BitTorrentは、2020年にBitTorrent v2の変更の一環としてbtmh:プロトコルを導入した。

**フォーマットパラメータ**
マグネットURIは、1つ以上のパラメータから成る。順序に意味はなく、通常のHTTPURLの末尾に付加されるQuery stringと同様の形式である。
以下のパラメータがサポートされている。
この標準は、"x"で始まるアプリケーション固有の実験的パラメータも許容しているdate=May 2022。

**Exact Topic (xt) ===  
xtパラメータは、特定のP2Pプロトコルに対するURNを指定する。これはTorrentのメタデータを検索するためのパラメータとして機能し、.torrentファイル自体に含まれるメタデータの代替手段として、URNを用いてP2Pネットワーク上でそのメタデータを検索する。各プロトコルはURNを独自に処理する。たとえば、xt=はbtih（BitTorrent v1プロトコル）を使用しており、BitTorrentクライアントはこのハッシュを取得してBitTorrent DHT内でトレントのメタデータを検索できる。DHTの場合、クライアントはあらかじめ既知のノード群を検索し、infohashに対するメタデータを要求する。これらのノードは他の既知ノードに対して同様の要求を行い、最終的にスウォームが発見されて返される。
xtはグループ設定も可能である。複数のファイルを含めることは、各リンクパラメータにピリオド（"."）で始まる連番を付加することで実現されるdate=May 2022。
最初のファイルのURN&xt.2=二番目のファイルのURN
 Tiger Treeハッシュ（TTH）: これらのハッシュはDirect Connect (file sharing)およびGnutella2などで使用される。  
xt=:TTHハッシュ(Base32) 
 SHA-1: これらのハッシュ値はGnutellaおよびGnutella2で使用される。
xt=:SHA-1ハッシュ(Base32) 
 BitPrint: これらのハッシュはSHA-1ハッシュの後にTTHハッシュが続き、ピリオドで区切られる。GnutellaおよびGnutella2で使用される。
xt=:SHA-1ハッシュ(Base32) .TTHハッシュ(Base32) 
 eDonkey2000ハッシュ: これらのハッシュ値はeDonkey2000（ED2K）で使用される。  
xt=:ED2Kハッシュ(16進) 
 Advanced Intelligent Corruption Handler（AICH）: これはマグネットリンクの正式なURNではないが、このようなハッシュはeDonkey2000でダウンロード中またはダウンロード済みのファイルの整合性を回復および制御するために使用される。  
xt=:AICHハッシュ(Base32) 
 Kazaaハッシュ: FastTrackで使用されるが、これらのハッシュは衝突攻撃に対して脆弱である。  
xt=:Kazaaハッシュ(16進) 
 BitTorrent情報ハッシュ（BTIH）: これはBitTorrentメタファイルの「info」セクションのSHA-1ハッシュ値を16進でエンコードしたものであり、BitTorrentがダウンロード可能なファイルまたはファイル群を識別するために使用する。既存リンクとの後方互換性のため、クライアントはこのハッシュのBase32エンコード版もサポートすべきである。  
xt=:BitTorrent info ハッシュ(16進)   
 一部のクライアント（例：Vuze）ではinfo_hashのBase32を要求する。
 ビットトレント情報ハッシュv2（BTMH）: BitTorrentv2では旧式のSHA-1ハッシュをSHA-256ハッシュに置き換えている。v2ハッシュは新しい接頭辞（btmh）を与えられ、v1およびv2両方のスウォームに参加可能なトレントを許容する。  
xt=:1220: (v2接頭辞) BitTorrent Infoハッシュ (16進) 
 MD5: Gnutella2でサポートされるが、これらのハッシュは衝突攻撃に対して脆弱である。  
xt=: MD5ハッシュ (16進) 

**ファイルへのウェブリンク ===  
Magnetリンクには、直接的またはバックアップ用のソースとして2種類のダウンロードリンクを含めることができる。
 "as"（acceptable source）: 多くのクライアントは、"as"を優先順位の面で"xs"トークンと同等に扱い、仕様で示されるタイムアウトを無視して"as"ソースへ接続する。  
 コンテンツアドレス可能なウェブURL: この種の2168に基づくリンクは、GnutellaおよびGnutella2で使用される。  
xs=http://Client Address:Port of client/uri-res/N2R? URN containing a file hash   
xs=  
 ファイルのソースを探すためのDirect Connect (protocol)ハブへのリンク: この種のリンクは、指定されたハブへ直接ダイレクトコネクトクライアントを接続する。  
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.の後に任意の接尾文字を付けて使用できる。これらの名称が標準化されることは決してない。  
x.新しいパメータ=新しいパラメータのデータ（URLエンコード済み）date=May 2022

**クライアント**

**関連項目**
 BitTorrent- InterPlanetary File System- Metalink- Peer-to-peer

**脚注**

**注釈**

**出典**

**外部リンク**
 Magnet-URI Project- RHash マグネットリンクを計算できるオープンソースのコマンドラインツール