A brief description of the
EDonkeyProtocol can be found at
MLDonkey:eDonkey2000 and at
[Infoanarchy]
Links
- http://forum.emule-project.net/lofiversion/index.php/t74494.html (Lots of usefull links and wanna-be protocol specs)
- http://forum.emule-project.net/lofiversion/index.php/t71164.html (See the last lugdunummaster reply on queries)
- http://forum.emule-project.net/lofiversion/index.php/t80329.html (On tags e .met files)
- http://forum.emule-project.net/index.php?showtopic=65240 MUITO BOM!!!
- Yes, you have to send exactly those extensions as have been told in the handshake (important! the lowest number of the two clients is the extension version that should be used).
- http://jmule.sourceforge.net/doc/edonkeyIntro.html
- http://unc.dl.sourceforge.net/sourceforge/pdonkey/eDonkey-protocol-0.6.2.html
- http://ed2k-tools.sourceforge.net/index.shtml
- [Edonkey client and protocol description]
- Não é muito bom. tem alguns links mas não lista muita coisa interessante, pelo visto.
- [eDonkey Protocol Dissector - Patch for EtherReal]
- Esse sim é interessante. Além de conter referências boas, ele vai além e as corrige. O codigo é interessante de ser olhado também.
- http://savannah.nongnu.org/download/mldonkey/docs/Edonkey-Overnet/edonkey-protocol.txt
- Muito Interessante tb. É resumida e vai direto ao ponto. O problema é que fica a cargo do leitor fazer muitas suposições do tipo e para que é que serve esse campo? além de conter algumas incorreções. Para ajudar essas ultimas, tem-se link do patch para o ethereal de qq forma.
- The documentation found at savannah has some errors. <Meta tag> has the values of string and dword exchanged. Tem um outro ai tb que so aparece quando você vai tratar queries de busca mas esse eu já não me lembro.
- http://www.efarm-project.net/
- Muito interessante. Na parte de documentos ele lista uns 3 pdfs que descrevem o protocolo do e-donkey, mostrando passo a passo o que deve ser feito numa sessão edonkey. Bom para entender o enredo. Não é nem de perto suficiente para algo mais profundo: apesar de explicar o processo de login detalhadamente, não desce ao nível de explicar o formato completo dos pacotes e nem o restante do protocolo.
- http://silicon-verl.de/home/flo/software/donkey/
- Não é muito extenso mas, para quem não entendeu nada dos anteriores, server como uma referencia introdutória, mostrando formato básico de 3 pacotes ( dai vc lendo os outros documentos consegue entender boa parte do resto )
- http://www.w3seek.de/opendonkey/
- A protocol description auf Deutsch - Du spreachst Deutsch, richtig?!
- http://www.slyck.com/forums/viewtopic.php?t=2044
- http://www.infoanarchy.org/wiki/wiki.pl?EMule
- http://emuleplus.info/forum/index.php?showforum=23&hyperlink=/Developers/KB/Diagrams
- http://aleron.dl.sourceforge.net/sourceforge/pdonkey/eDonkey-protocol-0.6.1.html
- http://www.efarm-project.net/data/docs/Protocol_V3_1_EN.pdf
- http://forum.emule-project.net/index.php?showtopic=39340
On Part size and merkle trees
Kad Links and other sfuff
Where to start looking?!
Packed packets
- CClientUDPSocket?::OnReceive?() - ClientUDPSocket?.cpp
- Notice
- Packed packets has only its msg_payload compressed, .i.e., the first 2 bytes of the packet (proto and msg) are intact.
Publishing the list of shared files into kad
- CSharedFileList?::Publish() - SharedFileList?.cpp
- CSharedFileList?::AddFile?() - SharedFileList?.cpp
keyword search
- CSearchResultsWnd?::DoNewKadSearch? - SearchResultsWnd?.cpp
- CSearchManager?::prepareFindKeywords - kad../kad..(/SearchManager)?.cpp
- Creates a new CSearch (Kad-only)
- CSearchManager?::getWords
- Splits search string into keywords and adds 'em to CSearch's list of keywords
And Zlib and the others emule extensions?
[aMule] has support for zlib implemented.
Client Software
Source Exchange
"One of the latest additions to the eMule program is source-propagation between clients. eMule will automatically distribute and fetch known sources for files with other clients it's connected to, greatly speeding the process of discovering rare files that aren't located on your immediately-connected server"
[1]
Unknown issues (pending)
- Once a client started a download, it can re-use this connection to download another file or he has to make a different tcp connectiong for this?! I'm not sure if there's any protocol details that would force the later but I belive most clients do the former. Yet, this is an open issue.
- Look for documentation regarding A4AF ( Ask for Another File)
For inforrmation on other protocols see
PeerToPeerProtocols