コンピューティングにおいて、eD2kリンク(ed2k://)は、eDonkeyファイル共有P2Pネットワークに接続されたコンピュータに保存されているファイルを示すために使用されるハイパーリンクです。
eMule、MLDonkey 、そしてリンクタイプを導入したMetaMachineのオリジナルeDonkey2000クライアントなど、eDonkeyファイル共有プロトコルを使用する多くのプログラムは、ファイル共有ネットワークに保存されているファイルを管理するために使用できます。
eD2kリンクは、Webブラウザのリンクからファイルを識別し、eMule、Shareaza、またはその他の互換性のあるソフトウェアなどのクライアントでダウンロードできるようにするものです。このリンク機能は、ピアツーピアファイル共有で最初に導入されたURIの1つであり、外部リンクサイトがネットワーク内で検証済みのコンテンツを提供できるようになったため、eDonkeyネットワークの発展に大きな影響を与えました。現在では、いわゆるマグネットリンクがeD2kリンクに取って代わっています。マグネットリンクは同様の役割を果たしますが、eD2kハッシュに限定されず、SHA-1やMD5などの他のハッシュを含めることができるため、これらのリンクを使用して複数のネットワーク(BitTorrentを含む)のファイルを同時に指定することが可能です。
eD2kリンクにはファイルハッシュが含まれています。これは、ネットワーク内のファイルの一意の識別子としてハッシュを使用できるためです。そのため、リンク先のファイルがネットワーク内の2台のコンピュータで異なる名前であっても、両方のコンピュータでファイルを見つけることができ、両方のソースからファイルの一部を取得できます。これは、ファイルの名前ではなくファイルの内容のみに基づいて、ファイルのハッシュ関数を使用してチェックサムを計算することによって実現されます。
他のURIプロトコルと同様に、Webブラウザはed2k URIを自動的に処理するように設定できます。eD2kクライアントをインストールした後、eD2kプロトコルを任意で登録することで、ブラウザでeD2k URIをクリックすると自動的にダウンロードが開始されるか、ダウンロードを開始するかどうかをユーザーに確認するようになります。
ファイルリンクの前には「file」トークンが付きます。これは、これがファイルリンクであることを示しています。これは、<link> server、 <link> serverlist、nodelistまたはfriend<link>リンクとは異なります。一般的なeD2kファイルリンクには、ファイル名とファイルサイズも含まれます。以下に例(15MBのPurist Editトレーラーへのリンク )を示します。
ed2k://|file|The_Two_Towers-The_Purist_Edit-Trailer.avi|14997504|965c013e991ee246d63d45ea71954c4d|/
eD2kリンクには、リンク先のファイルを共有していることがわかっている特定のクライアントのIPアドレスとポート番号への参照を含めることもできます。これは、次の例に示すように、リンクのメイン部分の後にソースのリストを追加することで行います。
ed2k://|file|The_Two_Towers-The_Purist_Edit-Trailer.avi|14997504|965c013e991ee246d63d45ea71954c4d|/|sources,202.89.123.6:4662|/
eMuleでは、ファイル転送中にファイルが破損した場合にファイルを復元するために、リンクにAICHトップハッシュ|h=H52BRVWPBBTAED5NXQDH2RJDDAKRUWST|が含まれていることがよくあります。
eD2kハッシュ関数は、MD4ハッシュのリストのルートハッシュです。これは、MD4アルゴリズムを単純に使用した場合とは異なる結果をもたらします。
ファイルデータは、9500 KiB (9728000 バイト) の完全なチャンクと残りのチャンクに分割され、それぞれに対して個別の 128 ビット MD4 チェックサムが計算されます。ファイルが 9500 KiB より大きい場合 (つまり、複数のチャンクがある場合)、eD2k ハッシュは、チャンクの MD4 チェックサムを順番に連結し、その結果を MD4 を使用して再度ハッシュ化することによって計算されます。それ以外の場合は、ファイルの唯一のチャンクの MD4 ハッシュが、それ以上の変更なしで使用されます。[ 1 ]
このハッシュ化方式を用いることで、受信者は、実際にディスク上にファイルが存在する必要なく、ハッシュリストが元のeD2kファイルのハッシュ値に対応していることを検証できる。
過去には、チャンクサイズ (9500 KiB) の倍数のサイズのファイルに関して、いくつかの曖昧さがありました。一部の eD2k ハッシュツールの古いバージョンでは、ファイルのハッシュの最後に 0 バイトのチャンクを追加して計算していました。これは、残りのチャンクという用語が、最後のチャンクまたは末尾の不完全なチャンクのどちらとも解釈できるという曖昧さがあったためです。後者の解釈に従って、一部の実装では、ファイルの最後のチャンクが完全なチャンクである場合に 0 バイトのチャンクを追加しました。しかし、この方法は推奨されておらず、ハッシュの計算に使用されるアルゴリズムの実装によってファイルのハッシュが異なることを防ぐために、現在では最初の解釈が標準として使用されています。[ 2 ]
AICH (Advanced Intelligent Corruption Handling) は eMule の拡張機能です。9500 KiB のチャンクを 180 KiB のブロックに分割し、53 個のブロックの SHA1 ハッシュからマークル ツリーを構築します。各ブロックのルート ハッシュはブロック ハッシュと呼ばれます。ブロック ハッシュはさらにマークル ツリーに入力され、そのルート ハッシュが実際の AICH ルート ハッシュになります。ブロック サイズが小さいため、eMule クライアントは破損箇所をより正確に特定できます。[ 3 ]
サーバーリンクはeDonkey2000サーバーへの参照です。このようなリンクをクリックすると、通常はサーバーリストに追加されます。サーバーリンクはserverリンクの先頭にあるトークンで示され、次の形式になります。
ed2k://|サーバー|IP|ポート|/
例:
ed2k://|サーバー|207.44.222.51|4242|/