eMule - Webcourse
Download
Report
Transcript eMule - Webcourse
eMule behind the
scenes
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
High Level Network Diagram
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