FAQ eD2k-Kademlia-nl

From AMule Project FAQ
Revision as of 06:45, 18 January 2006 by Notch (Talk | contribs | merge | delete)

Jump to: navigation, search

Veel gestelde vragen over eD2k-Kademlia

English | Español | Italiano | Deutsche | Français | Nederlands | Polski

Wat is ED2K?

ED2K is een protocol dat oorspronkelijk werd gebruikt door de P2P (Peer-to-Peer) client eDonkey2000, waar de naam vandaan komt. Het is een server-client gebaseerd protocol, met de mogelijkheid om bronnen uit te wisselen tussen clients.

Het ED2K netwerk is server gebaseerd, dit in tegenstelling tot P2P netwerken als Kazaa, wat betekent dat het eerste ding wat u moet doen als u aMule draait is verbinden met een server (handmatig of automatisch).

Als u verbonden bent met een server, de client kan zoeken, lokaal (de server waarmee verbinding is) of globaal (alle servers), naar elk bestand en de servers waarop gezocht wordt zullen de client een lijst sturen van alle bestanden die voldoen aan de zoekopdracht.

Als de gebruiker een download start, zal de client de server vragen om bronnen, die de server zal sturen in de vorm van een IP adres van de clients die de server hebben verteld dat ze het specifieke bestand hebben.

Dan zal de client waarmee verbonden is beginnen met het uploaden van een heel blok op het moment dat u de eerste bent in de wachtrij, lees Waar gaat al dat gedoe met credits, waardering en score over? en, als het blok compleet verstuurd is, gaat u terug naar zijn upload wachtrij. Zo verspreiden verschillende delen zich over het ED2K netwerk, zodat, hoewel niemand op een bepaald moment het complete bestand heeft, het compleet gemaakt kan worden door de verschillende blokken van verschillende mensen te downloaden (het is bekend dat gebruikers vaak stoppen met het delen van een bestand als het compleet is).


Let op: clients uploaden slechts één blok per keer naar een andere client. Zelfs als een client in de upload wachtrij van twee verschillende bestanden van dezelfde gebruiker staat en bij beide bovenaan aankomt, zal die gebruiker maar een van de bestanden uploaden naar die client (de andere upload zal, afhankelijk van het ED2K programma die de client gebruikt, blijven staan als een hoogste prioriteit upload, maar zal niet beginnen tot het ander blok succesvol is ge-upload).

Als beide gebruikers een Hoog ID hebben (zie Wat is Laag ID en Hoog ID?) zal de overdracht direct van client naar client verlopen (Peer-to-Peer), maar als een van de clients een Lage ID heeft, zal de verbinden verlopen via de server, omdat Lage ID geen binnenkomende verbindingen kan accepteren. Het gevolg daarvan is dat twee Lage ID clients niet met elkaar kunnen verbinden.

Wat is Kademlia?

Kademlia is een natuurlijke evolutie van het ED2K netwerk. Kademlia is de toekomst. Zie Zijn er beperkingen aan het ED2K netwerk? voor meer informatie over waarom Kademlia nodig is.

Omdat Kademlia een gedecentraliseerd netwerk is, haalt het de bottleneck weg die eerst veroorzaakt was door de noodzaak van servers (hoewel Lugdunum goed werk heeft gedaan bij het verminderen van deze bottleneck). Nu, in plaats van verbinden met een server, verbindt u met een client (met een bekend IP-adres en poort), die het netwerk Kademlia ondersteunt. Dit wordt Boot Strapping genoemd.

Als u verbonden bent krijgt u, afhankelijk van de mogelijkheid tot het accepteren van binnenkomende verbindingen, de status "open" of "firewalled", gelijk aan Hoog ID en Laag ID van het ED2K netwerk. Dan krijgt u een ID.

Op dit moment worden "firewalled" gebruikers niet ondersteund door het het Kademlia netwerk, en krijgen dus geen ID en kunnen niet verbinden. Firewalled ondersteuning wordt later toegevoegd.

Bij het zoken, dient elke client als een kleine server en krijgt verantwoordelijkheid voor bepaalde zoekwoorden of bronnen. Dit maakt het vinden van bronnen complexer omdat er geen centrale server meer is om aan te vragen, maar een zoekopdracht moet zich nu verspreiden via het netwerk.

Op dit moment wordt Kademlia niet ondersteund door aMule, maar dat zal binnenkort veranderen.

Is Kademlia het zelfde als Overnet?

Kort en duidelijk: Nee. Overnet is de natuurlijke serverloze evolutie van de eDonkey software, terwijl Kademlia de natuurlijke serverloze evolutie van *Mule clients is.

Short and clear: No. Overnet is the natural serverless evolution of the eDonkey software, while Kademlia is the natural serverless evolution of *Mule clients. Dus, het heeft dezelfde filosofie, maar verschillende regels. Om te leren hoe Overnet werkt, kijk op http://www.edonkey2000.com/documentation/how_on.html, maar bedenk dat Overnets ontwikkeling gesloten is tot het versie 1.0 heeft bereikt, terwijl Kademlias ontwikkeling compleet open is sinds het begin.

Wat is een blok?

Om het delen van beschadigde bestanden te voorkomen in het ED2K protocol, wordt elk bestand verdeeld in meerdere delen, die bekend staan als blokken, en dan elk blok krijgt een hashwaarde (zie hieronder om te weten wat een hash is). Elk blok is 9,28MB groot, dus een bestand van 15MB wordt verdeeld in twee blokken (9,28MB + 5,72MB), een 315kB bestand is één blok en een 100MB bestand wordt verdeeld in 11 blokken (10x9,28MB + 7,2MB).

Wat is een hash?

Het opdelen van bestanden in blokken (zie Wat is een blok?) voorkomt het probleem dat een heel beschadigd bestand opnieuw gedownload moet worden omdat alleen het beschadigde blok opnieuw gedwonload hoeft te worden, maar een methode om beschadigde blokken te herkennen is nodig. Dit wordt gedaan met MD4 hashes.

Een MD4 hash is een unieke waarde die elk blok krijgt en is het resultaat van een wiskundige operatie op elke bit van het blok. Dit betekent dat het veranderen van één enkele bit in een blok een compleet verschillende hash oplevert. Daarmee is het mogelijk om te controleren of elk deel van een bestand correct is als het gedownload is.

Niet alleen de blokken worden gehashed, maar ook, om een bestandshash te krijgen, worden alle hashes van de blokken achter elkaar gezet in de volgorde van het bestand (dat wil zeggen: hash_van_blok1+hash_van_blok2+hash_van_blok3+...) en het resultaat wordt gehashed. Op deze manier krijgt elk bestand op het ED2K netwerk een unieke identificatiecode. De bestandshash wordt niet verkregen door het hele bestand te hashen, maar door het hashen van de waarde van de hashes van de blokken.

In werkelijkheid heeft u de hash van een bestand en de grootte nodig. Deze delen van informatie worden opgenomen in de ED2k URLs die op vele plaatsen te vinden zijn.

Bijvoorbeeld:

ed2k://|file|eMule0.42f-Sources.zip|2407949|CC8C3B104AD58678F69858F1F9B736E9|/

Het interesante gedeelte is het vijfde deel, "2407949", wat de grootte van het bestand is in bytes en het laatste deel, "CC8C3B104AD58678F69858F1F9B736E9", wat de hash is in hexadecimalen, 32 tekens lang.

De bestandsnaam is niet belangrijk bij het identificeren van het bestand.

Waarom verschijnen bij het zoeken sommige bestanden die gelijk zijn als verschillende bestanden in de zoekresultaten, ook al hebben ze zelfs dezelfde naam?

Als u "Wat is een hash" begreep is het makkelijk dit te begrijpen. Als een zoekopdracht begint, vertelt de server de ED2K client de bestandsnaam van de gevonden bestanden en de hash van het complete bestand voor elk bestand wat voldoet aan de zoekopdracht. Als twee bestanden, hoewel ze gelijk zijn, een verschil hebben in hun inhoud, groot of klein maakt niet uit, is de hash verschillend, dus worden ze beschouwd als een veerschillend bestand. Dat is ook de reden dat twee bestanden met verschillende bestandsnamen verschijnen als hetzelfde bestand: op het ED2K netwerk is de bestandsnaam niet belangrijk, de hash is belangrijk.

Wat is Laag ID en Hoog ID?

Elke client krijgt een identificatiegetal, een ID, wat uniek is en hem onderscheidt van elke andere client verbonden met de server. Als dit ID lager is dan 16777216 (16 miljoen) dan heeft u een Laag ID. Als het hoger is, dan heeft u een Hoog ID. Of u een hoog of laag ID krijgt hangt er van af of TCP poort 4662 (of de poort die u heeft opgegeven in Voorkeuren) open is. Als u "Wat is ED2K" begreep, begrijpt u mogelijk dat de kans bestaat dat clients met een Laag ID niet met veel andere clients kunnen verbinden (alle andere clients met een Laag ID), en dus een lagere overdrachtssnelheid hebben. Daarom is het belangrijk dat poort 4662 TCP (of de poort opgegeven in Voorkeuren) open is. Ook weigeren sommige grote servers clients met een Laag ID, omdat clients met een Laag ID data overdragen via de server en zo kunnen de grote server overbelast raken.

Voor clients met een Hoog ID is hun ID het resultaat van een wiskundige operatie op hun IP adres, namelijk A + 256*B + 256*256*C + 256*256*256*D, met het IP adres in de vorm van A.B.C.D. Het doel van het ID is alleen identificatie van de client, verder niks, het maakt dus niets uit hoe hoog het ID is, alleen of het hoger of lager is dan 16777216. Dit wil zeggen dat een clients met een ID van 50000000 niet beter is dan een client met een ID van 49999999.

Er is een uitzondering. Sommige slecht geconfigureerde of erg drukke servers geven een Laag ID aan sommige clients hoewel poort 4662 TCP open is. Dit is een zeldzame uitzondering, maar het kan voorkomen.

Hier kunt u controleren of uw poorten open staan.

Welke poorten moet ik configureren in een firewall of router om aMule te kunnen gebruiken?

U hoeft geen specifieke poorten te openen om aMule te laten werken, maar wel om een Hoog ID te krijgen. Zoals boven genoemd moet poort 4662 TCP (of de poort opgegeven in Voorkeuren) open zijn.

Afgezien van die poort, moet u nog twee poorten open zetten om het ED2K netwerk optimaal te gebruiken. Ten eerste, UDP poort 4672 (ook deze kunt u instellen op elke andere poort in Voorkeuren) en ten tweede, de tweede UDP poort die niet ingesteld kan worden in Voorkeuren. Deze UDP poort is uw TCP poort + 3 (bijv.: TCP=4662 dan UDP=4665).

Waarvoor dient elke poort?

Omdat de meeste poorten ingesteld kunnen worden op elk poortnummer, staan hier de standaardpoorten:

4662 TCP
Client naar client overdrachten.
4672 UDP
Uitgebreid eMule protocol, Plaats in wachtrij, Bestand onieuw opvragen
4661 TCP
Geopend op de server. Staat verbinding met server toe.
4665 UDP
Geopend op de server. Staat het vragen om bronnen toe. Dit is altijd server TCP port + 3.
4711 TCP
Poort van de WebServer.
4712 TCP
Externe Verbindingen poort. Gebruikt om aMule te laten communiceren met ander programma's zoals aMule WebServer of aMuleCMD.

Hoewel de tweede UDP poort officeel server TCP poort + 4 is, gebruiken sommige (de meeste?) clients client TCP + 3. Deze poort wordt meestal niet gebruikt (aMule gebruikt het niet, eMule heeft het niet).

Zijn er beperkingen aan het ED2K netwerk?

Niet veel, maar ja, er zijn beperkingen: twee natuurlijke beperkingen en een "gedwongen" beperking. De twee natuurlijke beperkingen zijn al eerder genoemd. Ten eerste, de beperking van clienst met een Laag ID (die moeten dat via de server overdragen en twee clients met een Laag ID kunnen niet delen met elkaar). De tweede is dat, hoewel ED2K een p2p protocol is, het servers nodig heeft om een p2p verbinding te starten. Deze tweede is opgelost in het Kademlia protocol.

Over de "gedwongen" beperking, het is alleen een grens om er voor te zorgen dat clients delen zodat het ED2K netwerk niet verdwijnt: clients met een upload grens van X kBps, waar X een getal is vanaf 0 tot en met 3,99 kunnen downloaden met een maximum snelheid van X*3 kBps. Clients met een upload grens van Y kBps, waar Y een getal is vanaf 4 tot en met 9,99 kunnen downloaden met een maximum snelheid van Y*4 kBps. Clients met een upload grens van 10kBps of hoger hebben geen download grenzen. Deze beperking is ingesteld in de client, dus het kan omzeild worden door de code te hacken, maar dat resulteert waarschijnlijk in een ban van de servers waar u mee verbonden bent.

Ook moet elke client minimaal drie upload sloten hebben, dus is het niet mogelijk om meer dan upload grens/3 kBps per slot toe te staan.

In het zoek venster, welk filter staat voor welk bestandstype?

Bedenk dat de filters in het zoek venster niet afhangen van het bestandstype, maar van de extensie van de bestandsnamen, op de volgende manier:

  • Archief: .ace .arj .rar .tar.bz2 .tar.gz .zip .Z
  • Geluid: .aac .ape .au .mp2 .mp3 .mp4 .mpc .ogg .wav .wma
  • CDImage: .bin .ccd .cue .img .iso .nrg .sub
  • Plaatje: .bmp .gif .jpeg .jpg .png .tif
  • Programma: .com .exe
  • Video: .avi .divx .mov .mpeg .mpg .ogg .ram .rm .vivo .vob

Dus, een film met als bestandsnaam "Verjaardag.zip" verschijnt in het Archief filter, maar niet in het Video filter.

Wat is een bron?

Een bron is een client die een blok deelt van een bestand in uw download wachtrij die u nog niet compleet heeft. Logischerwijs, hoe meer bronnen u kunt krijgen voor een bestand, hoe groter de kans dat u het bestand kan downloaden en hoe sneller het gedownload wordt. Bedenk dat er een verschil is tussen "bronnen" en "beschikbare bronnen" als u een Laag ID hebt, omdat "bronnen" de clients zijn die een blok of een bestand delen wat u nog niet compleet hebt, terwijl "beschikbare bronnen" de clients zijn die een blok of bestand delen wat u nog niet compleet hebt en van wie u kunt downloaden (dus, een bron met een Hoog ID).


Waar gaat al dat gedoe met credits, waardering en score over?

Alle drie gaan over de manier waarop het ED2K netwerk de upload wachtrij voorkeuren bepaalt.

De score is de belangrijkste waarde: de client met de hoogste score is de volgende client die een slot van u krijgt. De score waarde wordt op de volgende manier berkend: score = waardering x wachttijd_in_seconden / 100 Om dit te begrijpen moeten we dus weten wat waardering is.

Waardering is een objectieve voorkeur. Dat is de voorkeur voor een client waarbij het niet uitmaakt hoe lang hij heeft gewacht. Als een client toegevoegd wordt aan de upload wachtrij krijgt hij een waardering van 100. Deze waarde wordt op deze manier gewijzigd:

Afhankelijk van de hoeveelheid credits wordt de waardering vermenigvuldigd met 1x tot 10x. Afhankelijk van de prioriteit van het bestand wordt het vermenigvuldigd met 0,2x tot 1,8x (Release: 1,8x, Hoog: 0,9x, Normaal: 0,7x, Laag: 0,6x, Heel Laag: 0,2x).

Gebruikers van bepaalde oude clients die teveel netwerk verkeer veroorzaken worden gestraft door hun waardering te vermenigvuldigen met 0,5x.
Gebande clients krijgen geen waardering (hun waardering wordt vermenigvuldigd met 0).

Deze vermenigvuldigers staan bekend als "modifiers". Client met een modifier waarde groter dan 1 worden gemarkeerd met geel in het pictogram.

Dan blijft alleen credits over om uit te leggen. Credits zijn een prijs die u krijgt voor het uploaden van bestanden naar een bepaalde gebruiker. Credits worden uitgewisseld tussen twee specifieke clients, ze zijn niet globaal, dus u kunt uw eigen credits niet bekijken, hoewel u te weten kunt komen hoeveel credits een ander gebruiker heeft bij u (dat zijn de credits die die client tegoed heeft van u). Omdat credits beheert worden door de client die upload, kan het voorkomen dat u upload naar een client zonder ondersteuning voor credits, waarbij u geen credits krijgt bij die gebruiker, terwijl die credits krijgt bij u als hij naar u upload, omdat u wel ondersteuning hebt voor credits. Deze credits worden opgeslagen in het bestand clients.met.

De credits modifier gebruikt door waardering is de laagste waarde van deze twee:
(upload_totaal x 2)/download_totaal of wortel(upload_totaal+2) waarbij zowel upload_totaal als download_totaal gemeten worden in MBs.

Als het resultaat lager is dan 1, wordt het ingesteld op 1 en als het groter is dan 10, wordt het ingesteld op 10. Daarbij, als het ge-uploade totaal minder is dan 1MB, wordt de modifier ingesteld op 1 en als het gedownloade totaal gelijk is aan 0, wordt de modifier ingesteld op 10.

Wat is een slot?

Bij het uploaden van bestanden, wordt uw upload bandbreedte (die kan varieren afhankelijk van de upload grens of de natuurlijke upload grens van het type verbinding) opgedeeld in sloten. Dus, elk slot is een aantal kBps die wordt toegewezen aan elke client die probeert te downloaden van u.