Jump to content

ed2k URI scheme

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by SmackBot (talk | contribs) at 21:19, 7 June 2011 (Dated {{Dubious}}. (Build p612)). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

In computing, eD2k links (ed2k://) are hyperlinks used to denote files stored on computers connected to the eDonkey filesharing P2P network.

General

Many programs, such as eMule, MLDonkey and the original eDonkey2000 client by MetaMachine, which introduced the link type, as well as others using the eDonkey file sharing protocol, can be used to manage files stored in the filesharing network.

eD2k links allow a file to be identified from a link in a web browser and to be downloaded thereafter by a client like eMule, Shareaza or any other compatible software. This linking feature was one of the first URIs to be introduced in peer-to-peer file sharing, and had a vast effect on the development of the eDonkey network, as it allowed external link sites to provide verified content within the network. Nowadays, so-called Magnet links have replaced eD2k:// links in practice.[dubiousdiscuss] They serve a similar role, but are not limited to the eD2k hash and can contain other hashes such as SHA-1 or MD5 for example, which makes it possible to use these links to point to files in several networks (as well as in BitTorrent) at once.

eD2k links include file hashes, as these hashes can be used as a unique identifier for files within the network, so even if the linked-to file has a different name on two computers within the network, the file can be fond on both of them, and file chunks can be obtained from both sources. This is done by using a hash function on the file to calculate its checksum, depending only from the file content, not from its name.

Like other URI protocols, web browsers can be configured to automatically handle ed2k URIs. After installing an eD2k client, the ed2k:// protocol is optionally registered so that clicking on it in the browser automatically starts the download or asks whether the user wants to start downloading respectively.

File links are preceded with the "file" token, which indicates that this is a file link, as opposed to a server, serverlist, nodelist or firend link. The typical eD2k file link also includes the filename and the filesize. An example (a link to the 15Mb Purist Edit trailer) is provided below:

ed2k://|file|The_Two_Towers-The_Purist_Edit-Trailer.avi|14997504|965c013e991ee246d63d45ea71954c4d|/

eD2k links can also include a reference to the IP address and port of specific clients that are known to share the linked-to file. This is done by adding a list of sources after the main part of the link, like shown in the following example:

ed2k://|file|The_Two_Towers-The_Purist_Edit-Trailer.avi|14997504|965c013e991ee246d63d45ea71954c4d|/|sources,202.89.123.6:4662|/

On eMule, the link often contains also an AICH top hash |h=H52BRVWPBBTAED5NXQDH2RJDDAKRUWST| to help recover the file in case of corruption during file transfer.

eD2k hash algorithm

The eD2k hash function is a root hash of a list of MD4 hashes, and gives a different result than simply MD4:

The file data is divided into full chunks of 9728000 bytes plus a remainder chunk, and a separate 128-bit MD4 checksum is computed for each. If the file length is an exact multiple of 9500 KiB, the remainder zero size chunk is still used at the end of the hash list. The eD2k hash is computed by concatenating the chunks' MD4 checksums in order and hashing the result using MD4. Although, if the file is composed of a single non-full chunk, its MD4 hash is used with no further modifications.[1]

This method of hashing allows the recipient to verify that a hash list corresponds to the original eD2k file hash, without the need to have the data blocks.

A server link is a reference to an eDonkey2000 server; clicking on such a link typically adds it to the server list. Server links are indicated by the server token at the beginning of the link and have the following format:

ed2k://|server|IP|PORT|/
  • IP —> IP of the server to connect to.
  • PORT —> Port where the server is listening for incoming eD2k connections

Example:

ed2k://|server|207.44.222.51|4242|/

See also

References

  1. ^ emule source, method CKnownFile::CreateFromFile.