通俗講解 Kademlia 原理

2021-08-11 21:05:55 字數 1534 閱讀 4586

我這好久沒有學術性的文章出現了。。翻看了下日誌,最早的是07年發表的做pcb電路板的日誌,之後是08年php網頁製作,之後是09年c# 的gps定位軟體(雖然自己都沒怎麼用過。。。)

今天就通俗介紹一下乙個最常用,最簡潔,最實用p2p的索引演算法---kademlia協議(簡稱 kad)。 使用bt 的同學經常會發現dht這個縮寫,使用電驢的同學就會發現kad縮寫。 dht的全稱叫雜湊表(distributed hash table),kad就是kademlia的縮寫。 kademlia是dht的一種,其實bt和電驢都是使用kademlia 協議,只是電驢中加密方式不同。

好了,前面只是簡單引入一下基本問題。 下面我將非常非常非常非常通俗俗俗俗的給大家介紹kademlia協議的知識。目的只是在於讓使用p2p軟體的非專業同學對此協議有乙個了解,主要針對對p2p好奇的同學。因為網上關於kademlia的資源不是很多,而且都是給專業人準備的,很抽象籠統。 所以一般同學理解會有困難。 專業同學直接按(連線參考kademlia 協議原文。

在進入正題之前,先請看下面的一張。(我不是很懂的,感謝張junyuan同學提供精彩,這裡只用來作為講解工具,沒有其他意思)熟悉的同學可能很容易看出這張是某國比較出名的影星集合照。 讓我們的思緒回到純真的高中或大學年代。。。。

首先,什麼是p2p(peer to peer,點對點)? 簡而言之,班上某個同學(假設班長)有上面某位明星影視作品一部。 你知道了,你找到該班長,複製乙份。。。這就是p2p。

最早的p2p是使用索引伺服器的。 什麼是索引伺服器? -- 班級很多同學有不同影視作品n部。但是你想找到某人的某部,這麼多同學你怎麼去找了拷貝呢? 這時候班上有個同學站起來了(還假設班長,班長嘛!),我來給大家登記資訊。於是班長開啟excel,同學們過來,大家資源到我這登記一下,要找資源的同學可以直接來我這邊來索引。這時候,班長所作的工作就是索引伺服器。 由班長的好處是什麼呢? 簡單,方便,查詢次數是o(1),也就是你唯一查詢就可以找到目標。 但是壞處也是顯而易見的,首先,班長很忙,其次,班長很脆弱,萬一班長為班級出頭被人家k了。。。不過最受不了的是,班主任發現班長的電腦裡面檔案,然後給delete了(04年電騾最大伺服器razorback2 由於侵權被關閉)。

所以需要乙個更好的解決方案來處理。這時候就是kademlia協議出現了(還有can,chord等),其實他不能算乙個協議,就是乙個查詢方法吧。 班長不幫你查了,你總要自己找資源吧!

首先,班上每個同學有學號,這是入學的時候就給你唯一的id。其次,對資源用key代替學號和key都是數值,在上面的途中就可以看出,個人的資源所代的key(emule用160bits,號碼多好記,又安全,你在班上問8號在哪不會有人管你,你要是問松島楓在哪。。。嘿嘿,等著進辦公室吧)。 我們假設班級有100個人。那每個人都有號碼,我們就從1-100編號。這樣的話學號和資源號是重複的。 kademlia的思想就是把某乙個資源的資訊,給和資源key相同id的人保管。 舉個例子,比如上面8號(石川xx), 有8號資源的人不知乙個,比如班上1號,2號,10號等等。 但是8號石川(key)的號碼,和班級8號同學(假設文藝委員)的號碼是一樣的,於是文藝委員就記下了所有有8號資源的人的資訊(座位ip,資源在哪個盤port,學號id)。 如果你想要找8號資源的時候就去找

svm通俗講解 SVM通俗講解

svm support vector machine 支援向量機相關理論介紹 基於資料的機器學習是現代智慧型技術中的重要方面,研究從觀測資料 樣本 出發尋找規律,利用這些規律對未來資料或無法觀測的資料進行 迄今為止,關於機器學習還沒有一種被共同接受的理論框架,關於其實現方法 大致可以分為 三種 3 ...

通俗易懂講解迴圈佇列原理

迴圈佇列 環形佇列 顧名思義,為了能夠重複利用佇列,將佇列看作環形,迴圈使用,為什麼判斷隊滿的時候是 rear 1 maxsize呢?我們來簡單理解一下。1,隊空的時候 rear代表能寫入的位置,front代表能讀的位置 當rear front的時候隊列為空 想象當隊列為空的時候,能寫入是第乙個位置...

epoll通俗講解

首先我們來定義流的概念,乙個流可以是檔案,socket,pipe等等可以進行i o操作的核心物件。不管是檔案,還是套接字,還是管道,我們都可以把他們看作流。之後我們來討論i o的操作,通過read,我們可以從流中讀入資料 通過write,我們可以往流寫入資料。現在假定乙個情形,我們需要從流中讀資料,...