100 likes | 143 Views
Explore the extended eDonkey protocol and decentralized file sharing network of eMule, with millions of clients and servers. Learn about client-to-server and client-to-client connections, data transfer methods, client IDs, call-back mechanism, and credit system.
E N D
Overview • Extends the eDonkey protocol • File sharing network • Several hundreds of eMule servers • Millions of eMule clients • Each server is an independent centralized indexing service and does not store any files
eMule Client • Preconfigured with a list of servers and a list of shared files • Uses a single TCP connection for logging into the network • Uses several TCP connections to upload/ download files to/from other clients
Client to Server Connection • Upon startup the client connects using TCP a single eMule server • Receives a client ID that is valid only through the connection lifetime • Sends its list of shared files • Sends its download list • Receives a download sources lists • The connection is kept open during all the client’s session • After establishment • Further search queries can be made and replied with sources list • A filename query is answered with a set of matching hashes
Client to Client Connection • An eMule client connects another client (source) to download a file • Files are fragmented and clients may download fragments of the same file form several sources concurrently • When two clients connect the uploading client serves the downloading client or adds it to its downloading queue • When a downloading client reaches the head of an uploading client the uploading client initiates a connection in order to send him the needed fragments
Data Transfer • Compressed to save bandwidth • Erasure coded to support fast recovery • When a complete chunk of 9500 kilobytes is downloaded and verified this data is also shared by the downloader
Client ID • A client can receive a low-id or a high-id • A low-id is assigned if the server fails to initiate a TCP connection to the client • Low-id restricts the clients use of the network and might result with the server rejecting the client • High-id is based on the client IP address and will remain constant as long as the IP address does not change
Call back Mechanism • Allows high-id clients to utilize low-id clients in case they are connected to the same server • The server sends the low-id client the high-id client’s IP address • The low-id client then initiates a TCP connection to the high-id client and serve it
Credit System • A local “tit-for-tat” mechanism to encourage uploads • A downloading client may identify itself upon clients connection establishment through a simple RSA challenge response • Clients records the upload/download ratio for other clients and promote friendly clients in their queues