マグネットリンク

**マグネットリンク**は、マグネットURIスキームにより定義される形式であり、場所ではなく暗号学的ハッシュ関数を通じてその内容によってファイル（URN）を識別するためのデファクトスタンダードである。

マグネットリンクはさまざまな文脈で使用可能であるが、特にP2Pファイル共有ネットワークにおいて有用である。マグネットリンクは、継続的に利用可能なホストを必要とせずにリソースを参照でき、かつファイルを既に持っている誰もが中央機関を介さずにリンクを生成できるためである。この特性により、ファイル共有コミュニティにおいて「保証された」検索語句としての使用が広まり、誰でもマグネットリンクを配布することで、そのリンクから取得されるリソースが意図したものであることを保証できるようになっている。

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

## フォーマットパラメータ
マグネットURIは、1つ以上のパラメータから成る。順序に意味はなく、通常のHTTPURLの末尾に付加されるクエリ文字列と同様の形式である。

以下のパラメータがサポートされている。

この標準は、"x"で始まるアプリケーション固有の実験的パラメータも許容している。

### Exact Topic (xt)
xtパラメータは、特定のP2Pプロトコルに対するURNを指定する。これはTorrentのメタデータを検索するためのパラメータとして機能し、.torrentファイル自体に含まれるメタデータの代替手段として、URNを用いてP2Pネットワーク上でそのメタデータを検索する。各プロトコルはURNを独自に処理する。たとえば、`xt=`はbtih（BitTorrent v1プロトコル）を使用しており、BitTorrentクライアントはこのハッシュを取得してBitTorrent DHT内でトレントのメタデータを検索できる。DHTの場合、クライアントはあらかじめ既知のノード群を検索し、infohashに対するメタデータを要求する。これらのノードは他の既知ノードに対して同様の要求を行い、最終的にスウォームが発見されて返される。

xtはグループ設定も可能である。複数のファイルを含めることは、各リンクパラメータにピリオド（"."）で始まる連番を付加することで実現される。
:`[最初のファイルの[[Uniform Resource Name|URN]]]&xt.2=[二番目のファイルのURN]`

; Tiger Treeハッシュ（TTH）: これらのハッシュはDirect Connectおよび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（ED2K）で使用される。  
:`xt=:[ED2Kハッシュ([[Hexadecimal|16進]]) ]`

; Advanced Intelligent Corruption Handler（AICH）: これはマグネットリンクの正式なURNではないが、このようなハッシュはでダウンロード中またはダウンロード済みのファイルの整合性を回復および制御するために使用される。  
:`xt=:[AICHハッシュ([[Base32]]) ]`

; Kazaaハッシュ: で使用されるが、これらのハッシュは衝突攻撃に対して脆弱である。  
:`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ハッシュ ([[Hexadecimal|16進]]) ]`

### ファイルへのウェブリンク
Magnetリンクには、直接的またはバックアップ用のソースとして2種類のダウンロードリンクを含めることができる。

; "as"（acceptable source）: 多くのクライアントは、"as"を優先順位の面で"xs"トークンと同等に扱い、仕様で示されるタイムアウトを無視して"as"ソースへ接続する。  
; コンテンツアドレス可能なウェブURL: この種のに基づくリンクは、GnutellaおよびGnutella2で使用される。  
:`xs=http://[Client Address]:[Port of client]/uri-res/N2R?[ [[Uniform Resource Name|URN]] containing a file [[hash sum|hash]] ]`  
:`xs=`  
; ファイルのソースを探すための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.[新しいパメータ]=[新しいパラメータのデータ（[[URL]]エンコード済み）]`

## クライアント

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

## 脚注
### 注釈

### 出典

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