マグネットリンク

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

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

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

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

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

パラメータ名称説明xtExact Topicファイルのハッシュ値を含むURN。これはマグネットリンクにおいて最も重要な部分であり、指定されたファイルを検索・検証するために使用される。URNはプロトコルに依存するため、btih（BitTorrent）におけるファイルハッシュURNはed2k用のURNとはまったく異なる。
 xt=urn:btih:c12fe1c06bba254a9dc9f519b335aa7c1367a88adnDisplay Nameユーザーに表示されるファイル名。利便性のために使用される。xleXact Lengthファイルサイズ（バイト単位）traddress TRackerBitTorrentのダウンロードにおいてDHTを用いずにリソースを取得するために使用されるトラッカーのURL。値はURLエンコードされなければならない。
tr=http%3A%2F%2Fexample.org%2FannouncewsWeb SeedHTTP(S)経由で提供されるペイロードデータasAcceptable Sourceウェブサーバからの直接ダウンロードを指す。クライアントがP2Pネットワーク上でファイルを見つけられない・ダウンロードできない場合の代替手段と見なされている。
as=[ファイルへのリンク]xseXact Sourceマグネットリンクが指すファイルのHTTP（またはHTTPS、FTP、FTPSなど）ダウンロード元、P2Pソースのアドレス、またはDC++の場合はハブのアドレスを指す。クライアントはこれらに直接接続し、ファイルやそのソースを要求する。このフィールドはP2Pクライアントによってソース情報を保持するためによく使用され、ファイルハッシュを含む場合もある。
 xs=http://[クライアントのアドレス]:[クライアントのポート]/uri-res/N2R?[ハッシュを含むURN ]
 xs=http://192.0.2.27:6346/uri-res/N2R?urn:sha1:FINYVGHENTHSMNDSQQYDNLPONVBZTICFktKeyword Topic特定のファイルではなく、P2Pネットワークで検索するためのキーワード文字列を指定する。
kt=martin+luther+king+mp3mtManifest Topicマグネットリンクのリストを含むメタファイルへのリンク（MAGMA MAGnet MAnifest）、つまりリンクのリストへのリンク。
mt=http://example.org/all-my-favorites.rss
mt=urn:sha1:3I42H3S6NNFQ2MSVX7XZKYAYSCX5QBYJsoSelect OnlyTorrentクライアントがダウンロードすべき特定のファイルを列挙する。個別のファイルインデックスまたはインデックス範囲（両端含む）で指定される。
so=0,2,4,6-8x.pePEer接続先の固定ピアアドレスを指定する。トラッカーやDHTが存在しない場合のピア検出の初期手段として使用される。
x.pe=hostname:port
x.pe=ipv4-literal:port
x.pe=[ipv6-literal]:port

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

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

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

 Tiger Treeハッシュ（TTH） これらのハッシュはDirect ConnectおよびGnutella2などで使用される。  
xt=urn:tree:tiger:[TTHハッシュ(Base32) ]

 SHA-1 これらのハッシュ値はGnutellaおよびGnutella2で使用される。
xt=urn:sha1:[SHA-1ハッシュ(Base32) ]

 BitPrint これらのハッシュはSHA-1ハッシュの後にTTHハッシュが続き、ピリオドで区切られる。GnutellaおよびGnutella2で使用される。
xt=urn:bitprint:[SHA-1ハッシュ(Base32) ].[TTHハッシュ(Base32) ]

 ハッシュ これらのハッシュ値はeDonkey2000（ED2K）で使用される。  
xt=urn:ed2k:[ED2Kハッシュ(16進) ]

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

 Kazaaハッシュ で使用されるが、これらのハッシュは衝突攻撃に対して脆弱である。  
xt=urn:kzhash:[Kazaaハッシュ(16進) ]

 BitTorrent情報ハッシュ（BTIH） これはBitTorrentメタファイルの「info」セクションのSHA-1ハッシュ値を16進でエンコードしたものであり、BitTorrentがダウンロード可能なファイルまたはファイル群を識別するために使用する。既存リンクとの後方互換性のため、クライアントはこのハッシュのBase32エンコード版もサポートすべきである。  
xt=urn:btih:[BitTorrent info ハッシュ(16進) ]  
 一部のクライアント（例：Vuze）ではinfo_hashのBase32を要求する。

 ビットトレント情報ハッシュv2（BTMH） BitTorrentv2では旧式のSHA-1ハッシュをSHA-256ハッシュに置き換えている。v2ハッシュは新しい接頭辞（btmh）を与えられ、v1およびv2両方のスウォームに参加可能なトレントを許容する。  
xt=urn:btmh:[1220: (v2接頭辞) BitTorrent Infoハッシュ (16進) ]

 MD5 Gnutella2でサポートされるが、これらのハッシュは衝突攻撃に対して脆弱である。  
xt=urn:md5:[ MD5ハッシュ (16進) ]

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

 "as"（acceptable source） 多くのクライアントは、"as"を優先順位の面で"xs"トークンと同等に扱い、仕様で示されるタイムアウトを無視して"as"ソースへ接続する。  
 コンテンツアドレス可能なウェブURL この種のに基づくリンクは、GnutellaおよびGnutella2で使用される。  
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.[新しいパメータ]=[新しいパラメータのデータ（URLエンコード済み）]

 クライアント 
 クライアント dn xl xt tr xs as kt mt ws AMule   urn:ed2k:       ApexDC++   urn:bitprint:  urn:tree:tiger:  dchub://[hubaddress]:[hubport]     BitComet   urn:btih:  1.76    1.74    urn:btih:       Deluge   urn:btih:       EiskaltDC++   urn:tree:tiger:  urn:bitprint:  urn:btih:外部ソフトウェアへのリンクを渡す  urn:btmh:    adc:adc://[hubaddress]:[hubport]  adcs:adcs://[hubaddress]:[hubport]     FlylinkDC++   urn:tree:tiger:  urn:bitprint:  urn:btih:    adc:  adcs:        urn:sha1:    push:     KTorrent   urn:btih:       LimeWire   urn:sha1:    urn:guid:     MonoTorrent   urn:btih:       μTorrent   urn:btih:       qBittorrent   urn:btih:    urn:btmh:       Shareaza   urn:bitprint:  urn:btih:  urn:ed2k:  urn:md5:  urn:sha1:  urn:tree:tiger:  v2.5.1.0以降   ftp:   ftp:  （xsと同じ優先度）    Tixati   urn:btih:       Transmission   urn:btih:       Vuze   urn:btih:  urn:sha1:  5.7.5.0 5.7.5.0   

 関連項目 
 BitTorrent
 InterPlanetary File System

 Peer-to-peer

 脚注 
 注釈 

 出典 

 外部リンク 

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

Category:ファイル共有