serverless çalışan bir peer2peer dosya transferi protokoli. halihazırda beta olarak emule içinde kullanılmakta. search'lerin node'lar arasında dallanmasına dayanan bir mantığı var. (bkz: dallama)
petar maymounkov and david mazières tarafından (mit'den genç bilim insanları bunlar) tarafından geliştirilen merkezden bağımsız (decentralized) bir peer2peer protokolü.
kademlia protokolünde her bir kullanıcı bir node* olarak adlandırılır. kendi bünyesinde oluşturduğu bir distributed hash table ile verileri tutan bir node, kademlia ağına bağlanacağı zaman öncelikle bootstrap denen bir süreçten geçmek durumundadır. bootstrap işlemi için kademlia ağına halihazırda bağlı bir node'un ip adresi bilinmelidir. ağa katılındıktan sonra ağdan tekrar kopana dek sabit kalacak random bir id her bir node için yaratılır. kademlia ağında az sonra değineceğim süreçlerde bu id'lerin birbirine olan komşulukları çok önemlidir. bu komşuluklar komşuluk sözünden anlaşılabileceği gibi coğrafi bir anlam ifade etmez, yalnızca id'lerin birbirine olan yakınlıklarıdır. herhangi bir kademlia client'inde görülebilecek "id" ve yanında ikilik sistemde yazılı "distance" ibareleri bahsettiğim kavramlara işaret eder.
kademlia ağına bağlı bir node bir dosyayı paylaşmak istediğinde bu dosyaya ait belirleyici bir hash yaratır. hash ve node id'leri aynı uzunlukta olmalıdır. daha sonra bu hash'e olan mesafesi* en kısa olan node'ları tarar ve ip adreslerini saklar. belirlenen bu hash'e sahip bir dosyayı özel linkler vasıtasıyla edinmeye çalışan bir istemci ise aynı şekilde bu hash'e en yakın mesafeli olan node'lara bağlanarak dosyayın asıl konumuna zincirleme şekilde ulaşır.
belli bir keyword ile dosya ismi bazlı yapılan aramalarda da aynı prensipte çalışılır.
kademlia belli bir sunucuya bağlı olmaması ve bağımsız yapısıyla en güvenilir paylaşım protokolüdür. emule mod'u ürettiklerini düşünen hullecilerse hangi bilgi birikimleriyle kademlia ağına bağlanmayı tavsiye etmiyorlar ben şahsen şu an onu düşünüyorum.
son zamanlarda yaşanan sunucu kapatılmaları sorunları ile ne kadar süper bir tasarım olduğunu göstermiş protokoldür.
daha ayrıntılı bilgi için: http://en.wikipedia.org/...
c dili kütüphanesi için: http://kadc.sourceforge.net/