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