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。

外部連結

編輯