eD2k連結
eD2k連結(eD2k links (ed2k://) )是一種超連結,用於指示在eDonkey網絡上儲存的檔案。包括eDonkey2000、eMule、MLDonkey、aMule等在內的許多使用了eDonkey檔案共用協定的客戶端軟件,都可以用eD2k連結來管理網絡上的檔案。
瀏覽器可以辨識eD2k連結,並遞交到eMule、eDonkey2000或其他的eD2k軟件中進行傳輸。eD2k連結是最早被引入P2P檔案網絡的連結之一。Magnet連結現在也與eD2k連結類似,但Magnet連結不僅限於eD2k Hash,而是可以使用其他的Hash,諸如SHA或MD5等。
這些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>|<埠>|/
例如:
伺服器列表連結
伺服器列表連結,用於從一個固定的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(如ScarAngel、Mephisto等)、CN Mod等部分eMule Mods支援此功能。
eD2k Hash
eD2k Hash 演算法是一種MD4演算法的變體。其函數是一個MD4 Hash列表(MD4 Hash List)的MD4根Hash,但與MD4 Hash的結果不同:
檔案數據被分割成多個9500KB的chunks塊(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進行驗證,而無需使用檔案塊來驗證。
參見
註釋
- ^ 尖括號「<>」為指示,實際使用時需替換內容,下同。
參考資料
外部連結
- emule forum guides (頁面存檔備份,存於互聯網檔案館) How to remove the ed2k link protocol association in windows.
- aMule wiki: ed2k link (頁面存檔備份,存於互聯網檔案館).
- emule project (頁面存檔備份,存於互聯網檔案館) Ed2k link formats supported by emule client.
- ED2K tools - ED2K_Hash (頁面存檔備份,存於互聯網檔案館) Tool to create ED2K hashes.
- Phantom P2P (頁面存檔備份,存於互聯網檔案館) eD2k Links Provider