eMule is a peer-to-peer file sharing application that uses both client-server and peer-to-peer protocols. The client connects to servers to search for files and sources. It then connects directly to peer clients to download and upload file parts. Key aspects of the protocol include credit systems to incentivize uploads, queue management, and mechanisms to detect and recover from corrupted downloads.