Dezvoltat de | Petar Maymounkov și David Mazières |
---|---|
Prima versiune | 2002 |
Mediu inconjurator | Independent |
Tip | Masă Hash |
Kademlia (kad) este o rețea de suprapunere distribuită de tip tabel hash pentru rețelele peer-to-peer (P2P). A fost proiectat de Petar Maymounkov și David Mazières în 2002.
Protocolul specifică structura rețelei Kademlia, comunicațiile dintre noduri și schimbul de informații. Nodurile comunică utilizând UDP (vezi modelul OSI ).
În cadrul unei rețele existente ( Internet ), Kademlia creează o rețea nouă, în interiorul căreia fiecare nod este identificat printr-un număr de identificare, un ID (număr binar de 160 de biți ).
După o fază de amorsare constând în contactarea unui nod al rețelei apoi în obținerea unui ID, un operator matematic calculează „distanța” dintre două noduri și interogează mai multe noduri în funcție de această „distanță” pentru a găsi informațiile căutate. Acest operator, care este exclusiv OR , numit și XOR, face posibilă utilizarea unei noțiuni de distanță între două noduri care oferă un rezultat sub forma unui număr întreg : „distanța”. Acesta din urmă nu are nicio legătură cu locația geografică a participanților, ci modelează distanța în cadrul lanțului de ID-uri. Prin urmare, se poate întâmpla ca un nod în Germania și un nod în Australia să fie „vecini”.
Informațiile din Kademlia sunt stocate în „valori”, fiecare valoare fiind atașată unei „chei”. Spunem despre Kademlia că este o rețea <valoare, cheie>.
Setul de chei gestionate de un nod este legat de adresa acestui nod; astfel, cunoscând o cheie, algoritmul poate determina distanța aproximativă care îl separă de nodul având valoarea asociată cu această cheie. Pentru a găsi o cheie situată pe un nod N, un nod A va căuta un vecin B cu Distanță (B, N) <Distanță (A, N) și îi va cere informații; dacă acesta din urmă nu o are, va contacta un vecin mai aproape de cheie și așa mai departe până la obținerea valorii cheii (sau până când suntem siguri că această cheie nu există). Dimensiunea rețelei nu influențează foarte mult numărul de noduri contactate în timpul căutării; dacă numărul de participanți la rețea se dublează, atunci nodul utilizatorului trebuie să solicite informațiile doar de la un singur nod.
Alte avantaje sunt inerente unei structuri descentralizate, de exemplu creșterea rezistenței la un atac de negare a serviciului. Chiar dacă un rând întreg de noduri este scufundat, acesta va avea doar efecte limitate asupra disponibilității rețelei, ceea ce va „îmbina” rețeaua în jurul acelor găuri.
Protocolul Kademlia este utilizat de mai mulți clienți peer-to-peer (rețelele sunt incompatibile între ele):
Unele programe utilizează izolat un protocol Kademlia: