Kademlia er en distribueret hash -tabelimplementering til peer-to-peer computernetværk udviklet af Piotr Maimunkov og David Mazières. Kademlia-protokollen definerer strukturen af netværket, der regulerer kommunikationen mellem noder, og måden information udveksles i det. Netværksknuder, der bruger Kademlia-protokollen, kommunikerer med hinanden ved hjælp af UDP -transportlagprotokollen . Kademlia-noder gemmer data ved hjælp af distribuerede hash-tabeller (DHT). Som et resultat oprettes et nyt virtuelt eller overlejret netværk over det eksisterende LAN / WAN (som internettet ) , hvor hver node er udpeget med et særligt nummer ("Node ID"). Dette nummer udfører også andre funktioner.
En node, der ønsker at tilslutte sig netværket, skal gennemgå bootstrap-processen. På dette tidspunkt skal noden kende adressen på en anden node (modtaget fra brugeren eller taget fra listen), der allerede er en del af overlejringsnetværket. Hvis den tilsluttede node endnu ikke er kommet ind i dette netværk, beregnes en tilfældig ID-værdi, som endnu ikke tilhører nogen node. ID'et bruges, indtil du forlader netværket.
Kademlia-algoritmen er baseret på at beregne "afstanden" mellem noder ved at XORinge node -id'erne.
Denne "afstand" har intet at gøre med geografisk placering. For eksempel kan noder fra Tyskland og Australien være "naboer" i overlejringsnetværket.
Oplysninger i Kademlia opbevares i såkaldte "værdier" (værdier). Hver "værdi" er knyttet til en " nøgle " (nøgle).
Når man leder efter en værdi, der matcher nøglen, udforsker algoritmen netværket i flere trin. Hvert trin bringer os tættere på den ønskede node, indtil "værdien" er fuldstændig fundet, eller indtil der ikke er sådanne noder. Antallet af kontaktede noder afhænger af netværkets størrelse logaritmisk : hvis antallet af deltagere fordobles, vil antallet af anmodninger kun stige med én.
Opgaven med at gemme filindekser i Kad-netværket er opdelt i alle netværksmedlemmer. Hvis en node ønsker at " dele " en fil, behandler den den ved at få en hash , der identificerer den fil på netværket. Derefter leder noden efter flere noder, hvis ID'er er tæt på hashen (størrelserne på hashes og node ID'er skal matche), mens disse noder får information om adressen på denne node. Når klienten søger, leder den efter ID'et for den node, der har den mindste afstand til filens hash og udtrækker adresserne på de noder, der har denne fil, fra den. Kontakterne, der er gemt på netværket, er altid i konstant forandring, da noder konstant er forbundet og afbrudt. For fejltolerance replikeres disse kontakter på tværs af flere noder.
I Kad-netværket udføres søgning efter nøgleord . Filnavnet er opdelt i dets komponentdele. Hvert nøgleord hash og gemt på netværket som en fil-hash sammen med den tilsvarende fil- og fil-hash. Søgeknuden vælger et af nøgleordene, opretter forbindelse til den node, hvis ID er tættest på nøglens hash, og beder den om en liste over filer for denne nøgle. Da hver fil på listen har sin egen hash, er filnavnet nemt at beregne.