P2P網(wǎng)絡(luò)在沒有服務(wù)器的情況下是怎么發(fā)現(xiàn)其他節(jié)點(diǎn)的?
P2P網(wǎng)絡(luò)的節(jié)點(diǎn)發(fā)現(xiàn)機(jī)制,類似于找老同學(xué)。
剛下載的軟件,一般會(huì)自帶一些常上網(wǎng)的節(jié)點(diǎn)清單,就像手機(jī)通訊錄,包含有比較熟的同學(xué)。軟件聯(lián)網(wǎng)后可以一個(gè)一個(gè)問,有回話的就可以連接上了。
跟隨軟件下載的通訊錄很難維護(hù),所以一個(gè)改進(jìn)做法是隨軟件下載一個(gè)DNS列表,可以通過這個(gè)列表獲得其他節(jié)點(diǎn)的地址。DNS是互聯(lián)網(wǎng)地址解析服務(wù)器,每次用戶訪問一個(gè)網(wǎng)址,DNS負(fù)責(zé)把網(wǎng)址轉(zhuǎn)換成實(shí)際的IP地址。具體解釋就不展開了。
隨軟件下載獲得的初始節(jié)點(diǎn),一般只用于首次或者前幾次聯(lián)網(wǎng),因?yàn)槊看芜B接到一個(gè)節(jié)點(diǎn),都會(huì)從那個(gè)節(jié)點(diǎn)獲得它正在連接的其他節(jié)點(diǎn)清單。就像聯(lián)系到一個(gè)同學(xué),拿到一張新的通訊錄,合并到自己的通訊錄。有些聯(lián)系不上的自動(dòng)剔除。后續(xù)上網(wǎng)只需要按照自己的通訊錄再次掃描即可,順便刷新一下通訊錄以后用。舉個(gè)例子,現(xiàn)在流行的某區(qū)塊鏈網(wǎng)絡(luò),每次會(huì)主動(dòng)嘗試連接最近連接過的2500個(gè)以上其他節(jié)點(diǎn),相互交換通訊錄。
總之,P2P網(wǎng)絡(luò)的互聯(lián)機(jī)制,就是首先隨節(jié)點(diǎn)軟件下載種子節(jié)點(diǎn),上線連網(wǎng)后和其他節(jié)點(diǎn)不斷交換通訊錄,各自保存最近有效的節(jié)點(diǎn)數(shù)據(jù)庫以便下次上線時(shí)聯(lián)網(wǎng)。
在一個(gè)P2P網(wǎng)絡(luò)成形的初期,種子節(jié)點(diǎn)比較重要,扮演著類似服務(wù)器一樣的中心數(shù)據(jù)庫的作用。隨著網(wǎng)絡(luò)節(jié)點(diǎn)規(guī)模擴(kuò)大,種子節(jié)點(diǎn)逐漸失去意義,可以通過隨機(jī)選取活躍節(jié)點(diǎn)代替固定的種子節(jié)點(diǎn),實(shí)現(xiàn)完全的去中心化網(wǎng)絡(luò)。