This wiki is a place to record information about the eDonkey2000 (ed2k) peer-to-peer (p2p) network, in particular technical details necessary to implement tools, client and eventually server software.
The acronym ed2k used throughout this wiki is a short for eDonkey2000, the name of a peer to peer network. The goal of the network is to share and distribute binary files of any size, and is especially used to share music and video files.
In ed2k, a file is uniquely identified by its ed2k hash. This is not a very secure hash, but it's designed to be relatively fast to compute and has some interesting properties for a p2p network.
Since shared files are usually very large (hundreds of megabytes or even several gigabytes), it is usually not feasible to download them all in one session. So the files are split in smaller blocks, or parts, that can be requested, downloaded and checked individually.
Despite its peer-to-peer nature, ed2k uses servers. The servers are used to locate files in the network. Each client will connect to one or more servers, advertise a list of the local files it's sharing, and then make requests for the files it's trying to download. If a client doesn't know the hash of a file, it can make search requests using the file name or other attributes. The server will reply with a list of matching files, and for each file a list of peers that can provide the file.
Once a client has identified a list of possible sources for a file, it will connect to these peers and request parts of that file. When blocks are downloaded, they can be individually checked and eventually re-requested. When the file is complete, its hash can be checked and the file made available to the user.