eD2k鏈接(eD2k links (ed2k://) )是一種超鏈接,用於指示在eDonkey網絡上存儲的文件。包括eDonkey2000eMuleMLDonkeyaMule等在內的許多使用了eDonkey文件共享協議的客戶端軟件,都可以用eD2k鏈接來管理網絡上的文件。

瀏覽器可以識別eD2k鏈接,並遞交到eMule、eDonkey2000或其他的eD2k軟件中進行傳輸。eD2k鏈接是最早被引入P2P文件網絡的鏈接之一。Magnet鏈接現在也與eD2k鏈接類似,但Magnet鏈接不僅限於eD2k Hash,而是可以使用其他的Hash,諸如SHAMD5等。

這些Hash碼,主要用於確保相同的文件在網絡上具有的相同的唯一標識,即使這些文件儲存在不同的地方或擁有不同的名字。它通過使用該文件的Hash函數(散列函數)來計算其校驗和

eD2k鏈接和很多URI協議一樣,可以被網絡瀏覽器配置為自動關聯處理。安裝某些eD2k軟件時,「ed2k://」協議可能被自動註冊。於是在瀏覽器中點擊文件的eD2k鏈接時,就能自動打開eD2k軟件並進行此文件的下載。

鏈接格式

eD2k鏈接的大致格式形如:

ed2k://|<類型>|<其他信息>|/[註 1]

使用「|」分隔開各個區域。

注釋:

  • ed2k://:協議處理方法。指明該協議是[失效連結]eD2k協議
  • <類型>:鏈接類型。有三種:file(文件)、server(服務器)、serverlist(服務器列表)。
  • <其他信息>:具體的其他信息。

文件鏈接

  • 典型的、基礎的eD2k文件鏈接只包含必要的三樣信息:文件名、文件大小、文件的eD2k Hash。形如:
ed2k://|file|<文件名>|<文件大小>|<文件Hash>|/

以下是大小為2868871字節(約2.7MB)的官方eMule v0.49c zip壓縮包的eD2k鏈接的例子[1]

ed2k://|file|eMule0.49c.zip|2868871|0F88EEFA9D8AD3F43DABAC9982D2450C|/
  • eD2k鏈接也可以包含一個或多個來源的IP地址與端口,形如:
ed2k://|file|<文件名>|<文件大小>|<文件Hash>|/|sources,<IP:端口>|/

例如:

ed2k://|file|eMule0.49c.zip|2868871|0F88EEFA9D8AD3F43DABAC9982D2450C|/|sources,202.89.123.6:4662|/
  • 在eMule中,eD2k鏈接也可以包含根Hash(Root Hash)值。根Hash提供了一個可靠的值用於AICH(高級智能損壞處理),在傳輸的文件有損壞或錯誤時進行糾正恢復。包含根Hash的eD2k鏈接形如:
ed2k://|file|<文件名>|<文件大小>|<文件Hash>|h=<根Hash>|/

例如:

ed2k://|file|eMule0.49c.zip|2868871|0F88EEFA9D8AD3F43DABAC9982D2450C|h=SQ7LUTYUSMDBP2TVE2M7T6VUBLU324KF|/[失效連結]
  • 完整的Hashset可以確保文件的正確,也可幫助發布新的與罕見的文件。包含Hashset的eD2k鏈接形如:
ed2k://|file|<文件名>|<文件大小>|<文件Hash>|p=<Hash Set>|/
  • 帶主機的eD2k鏈接形如:
ed2k://|file|<文件名>|<文件大小>|<文件Hash>|/|sources,<主機名:端口>|/
  • eMule也可兼容帶HTTP來源的eD2k鏈接,形如:
ed2k://|file|<文件名>|<文件大小>|<文件Hash>|s=<文件的HTTP地址>|/

服務器鏈接

eDonkey服務器的eD2k鏈接和文件的eD2k鏈接類似,它可以指示一個eDonkey服務器地址,格式形如:

ed2k://|server|<IP>|<端口>|/

例如:

ed2k://|server|207.44.222.51|4242|/[失效連結][2]

服務器列表鏈接

服務器列表鏈接,用於從一個固定的HTTP地址添加server.met服務器列表文件。格式形如:

ed2k://|serverlist|<HTTP地址>|/

<HTTP地址>:server.met文件的HTTP地址。[3]

Kad節點列表鏈接

Kad節點列表鏈接,用於從一個固定的HTTP地址添加nodes.dat Kad節點文件。格式形如:

ed2k://|nodeslist|<HTTP地址>|/

<HTTP地址>:nodes.dat文件的HTTP地址。[4]

好友鏈接

好友鏈接,根據用戶Hash來添加好友。格式形如:

ed2k://|friend|<用戶名>|<用戶Hash>|/

官方eMule不支持eD2k好友鏈接添加好友功能,僅Xtreme及Xtreme的Mods(如ScarAngelMephisto等)、CN Mod等部分eMule Mods支持此功能。

eD2k Hash

eD2k Hash 算法是一種MD4算法的變體。其函數是一個MD4 Hash列表(MD4 Hash List)的MD4根Hash,但與MD4 Hash的結果不同:

文件數據被分割成多個9500KBchunks塊(9728000字節或大約9.28MB)和剩餘的一個chunk。每個chunk都要計算128-bit MD4 校驗和。如果文件長度正好是9500KB的整倍數,剩餘的大小為0的chunk依然存在於Hash列表的末尾。將這些chunk的MD4校驗和按順序聯合起來,並使用MD4計算Hash,可得到eD2k Hash。對於僅由一個chunk組成的文件(即文件大小小於9500KB),MD4和eD2k Hash是完全相同的。[5]

這種方法可以直接將Hash列表與原eD2k Hash進行驗證,而無需使用文件塊來驗證。

參見

注釋

  1. ^ 尖括號「<>」為指示,實際使用時需替換內容,下同。

參考資料

  1. ^ 存档副本. [2009-09-26]. (原始內容存檔於2010-02-07). 
  2. ^ 存档副本. [2009-09-26]. (原始內容存檔於2009-09-25). 
  3. ^ 存档副本. [2009-09-26]. (原始內容存檔於2009-10-12). 
  4. ^ 存档副本. [2010-06-29]. (原始內容存檔於2010-07-06). 
  5. ^ 根據eMule源代碼,method CKnownFile::CreateFromFile。

外部連結