1、什么是DHT協(xié)議
我們下載東西。通??梢哉蠊饷鞯闹苯尤ツ硞€(gè)網(wǎng)站的服務(wù)器上下載。但我們知道并不是每個(gè)資源都能用這種方法下載。對(duì)于不能直接下載的資源,我們習(xí)慣于找種子。用種子下載的方法,我們稱(chēng)為p2p下載。
即,讓有此資源的網(wǎng)民直接給你傳。
存在于服務(wù)器上的資源很容易被禁,但是存在于億萬(wàn)網(wǎng)絡(luò)用戶(hù)磁盤(pán)中的資源卻是禁止不了的。
我們需要某個(gè)資源的時(shí)候,不可能向每一個(gè)網(wǎng)絡(luò)用戶(hù)發(fā)一個(gè)請(qǐng)求讓他給你資源,因?yàn)榫W(wǎng)民太多,而他剛好下了你的資源的可能性很小。所以我們需要一種方式來(lái)精確的定位我們需要的資源在哪個(gè)人手上。同時(shí),這必須是一種不依賴(lài)于服務(wù)器的方式。因?yàn)橐蕾?lài)于服務(wù)器就可能被禁。
于是,DHT協(xié)議。不需要服務(wù)器,同時(shí)能定位資源。
2、DHT如何能找到一臺(tái)特定的pc
要找到一臺(tái)電腦上的資源,必先找到這臺(tái)電腦。但是這是不容易的。傳統(tǒng)的網(wǎng)絡(luò)協(xié)議(tcp/ip)中IP地址是電腦在網(wǎng)絡(luò)中的唯一標(biāo)識(shí),也是在網(wǎng)絡(luò)中找到一臺(tái)電腦的唯一方法。但是用IP地址來(lái)找一個(gè)普通人的電腦是不可行的。因?yàn)閷?duì)于一個(gè)普通網(wǎng)民,他的IP是動(dòng)態(tài)的。可能今天這個(gè)IP地址是他,明天這個(gè)IP地址就不是他了。
那么,DHT是如何找一臺(tái)電腦的呢,實(shí)現(xiàn)方法很呆萌。首先我們定義如下規(guī)則
(1)每臺(tái)電腦在加入資源分享的隊(duì)伍之前,先給自己取個(gè)名字。這個(gè)名字是隨機(jī)的,為一個(gè)160位的二進(jìn)制隨機(jī)數(shù)。
(2)每臺(tái)電腦要努力通過(guò)其他電腦,結(jié)識(shí)更多的、加入資源分享的、使用DHT協(xié)議的電腦,特別是那些名字與自己名字相近的電腦。
(參考如下過(guò)程:
一臺(tái)給自己取名叫小明的電腦取得了一個(gè)bt種子。
種子里面寫(xiě)著它代表的資源,同時(shí)里面還寫(xiě)著很多類(lèi)似于XX市XX區(qū)XX街幾號(hào)幾零幾的地址(即IP地址啦)
小明挨個(gè)去訪(fǎng)問(wèn)這些地址,他們中的很多已經(jīng)搬家了(因?yàn)镮P是動(dòng)態(tài)的)
終于他敲響了小紅家的門(mén)
小明:你使用DHT協(xié)議嗎?
小紅:是的。
小明:請(qǐng)求——ping~我叫小明
小紅:答復(fù)——ping~我叫小紅
小明:請(qǐng)問(wèn)你認(rèn)識(shí)名字類(lèi)似于小明的人嗎?
小紅:我認(rèn)識(shí) 小陰,IP:xx,xx,xx,xx:xxxx、小眀,IP:xx,xx,xx,xx:xxxx ...........
小明挨個(gè)拜訪(fǎng)這些人,并和他們結(jié)成了好朋友,小明和他們約定,搬家了一定要告訴他,這樣他們就能永遠(yuǎn)找得到彼此了。
小明沒(méi)事時(shí),就和自己的朋友聊聊看還有哪些名字和他相似而他卻不認(rèn)識(shí)的人。然后他再去挨個(gè)認(rèn)識(shí)。
小明結(jié)交的人越來(lái)越多,以至于為了結(jié)交和自己名字更像的人,他不得不拋棄一些和自己名字不像的人(當(dāng)然,小明不會(huì)拋棄小眀的,因?yàn)樗钕矚g小眀了)。
有些人名字雖然和自己很不像,但是小明也會(huì)挑幾個(gè)人保留,因?yàn)樗胱屪约喝ψ訌V一點(diǎn),往后看你會(huì)知道為什么。
這個(gè)協(xié)議中的每個(gè)人都努力尋找和自己名字相似的人,并和他們保持聯(lián)系
END)
機(jī)智的讀者此時(shí)可以停下來(lái)思考一下,有一天,小明突然想找和自己名字一點(diǎn)都不像的田莉莉該怎么辦呢?
辦法如下:
小明先去問(wèn)自己列表里和田莉莉名字最像的小口,因?yàn)樗钣锌赡苷J(rèn)識(shí)田莉莉。
小口說(shuō),我不認(rèn)識(shí)田莉莉,但是我知道小田,他在IP:xxxx
于是小明找到小田,問(wèn)他同樣的問(wèn)題,小田聲稱(chēng)自己列表里和田莉莉名字最像的叫田利,IP:xxxxx。
小明去訪(fǎng)問(wèn)田利........
................
可以看到“名字”收斂的很快。如此往復(fù)下去,小明很快就找到了認(rèn)識(shí)田莉莉的人。
能在茫茫人海中口口相傳來(lái)找到任何一個(gè)人的方法,有沒(méi)有很厲害。
現(xiàn)在,我們知道了,DHT的基礎(chǔ)是一張“人脈網(wǎng)絡(luò)”呢。
就先講到這里,覺(jué)得不錯(cuò)請(qǐng)收藏點(diǎn)贊,投硬幣!
標(biāo)簽: