從4個方面分析:節(jié)點(diǎn)與節(jié)點(diǎn)之間是如何建立連接的?
在分布式系統(tǒng)中每個終端節(jié)點(diǎn)都是平等的,不存在任何中心化節(jié)點(diǎn)幫助它們互相連接,那當(dāng)一個新的節(jié)點(diǎn)要加入網(wǎng)絡(luò)中來時,它該如何找到自己的小伙伴的呢?
我們知道比特幣網(wǎng)絡(luò)采用了基于互聯(lián)網(wǎng)的點(diǎn)對點(diǎn)(P2P:peer-to-peer)分布式網(wǎng)絡(luò),但是你知道節(jié)點(diǎn)與節(jié)點(diǎn)之間是如何建立連接的嗎?
本期將會對區(qū)塊鏈的分布式網(wǎng)絡(luò)中,節(jié)點(diǎn)與節(jié)點(diǎn)之間如何建立連接進(jìn)行介紹,希望對你有幫助。
一、分布式網(wǎng)絡(luò)基本概念
在介紹分布式網(wǎng)絡(luò)之前我們先明確它的基本概念,分布式網(wǎng)絡(luò)是什么?
分布式網(wǎng)絡(luò)也叫網(wǎng)狀網(wǎng)絡(luò),它和中心化網(wǎng)絡(luò)(中央控制式網(wǎng)絡(luò))相對應(yīng),是一套全新的網(wǎng)絡(luò)結(jié)構(gòu)。分布式網(wǎng)絡(luò)是由分布在不同地點(diǎn)的多個終端節(jié)點(diǎn)互相連接而成,形成縱橫交錯的網(wǎng)狀結(jié)構(gòu),在這種網(wǎng)狀結(jié)構(gòu)中無中心節(jié)點(diǎn)。
上面是中心化網(wǎng)絡(luò)和分布式網(wǎng)絡(luò)對比圖,中心化網(wǎng)絡(luò)中終端與終端之間連接通訊,需要經(jīng)過中央處理器統(tǒng)一處理,分布式網(wǎng)絡(luò)中終端節(jié)點(diǎn)之間可以直接建立連接。
分布式網(wǎng)絡(luò)相較于中心化網(wǎng)絡(luò)的優(yōu)點(diǎn)在于:它沒有中心化控制中心,不會因?yàn)橹行姆?wù)器遭到破壞而造成整體崩潰。當(dāng)分布式網(wǎng)絡(luò)中的某個節(jié)點(diǎn)損壞時,通信信息可通過其他的節(jié)點(diǎn)進(jìn)行傳輸,具有較高的可靠性和傳輸速度。
二、一個終端如何加入?yún)^(qū)塊鏈網(wǎng)絡(luò)?
在分布式系統(tǒng)中每個終端節(jié)點(diǎn)都是平等的,不存在任何中心化節(jié)點(diǎn)幫助它們互相連接,那當(dāng)一個新的節(jié)點(diǎn)要加入網(wǎng)絡(luò)中來時,它該如何找到自己的小伙伴的呢?
以比特幣網(wǎng)絡(luò)為例:安裝了比特幣客戶端的終端,可認(rèn)為是一個網(wǎng)絡(luò)節(jié)點(diǎn)。
舉個例子:來看一個新節(jié)點(diǎn)A是如何加入比特幣網(wǎng)絡(luò)的,這個節(jié)點(diǎn)在啟動之后會做如下的幾件事。
1. 告訴伙伴它在哪?
如果節(jié)點(diǎn)A是第一次連入比特幣網(wǎng)絡(luò),那它首先會通過一種算法找到距離它最近的一個網(wǎng)絡(luò)節(jié)點(diǎn)。
節(jié)點(diǎn)將一條包含自身IP地址的消息發(fā)送給相鄰節(jié)點(diǎn),相鄰的節(jié)點(diǎn)再將這條消息向與自己連接的節(jié)點(diǎn)進(jìn)行分發(fā)廣播,以此類推,最終導(dǎo)致新節(jié)點(diǎn)的IP地址在全網(wǎng)進(jìn)行分發(fā),每個網(wǎng)絡(luò)節(jié)點(diǎn)都知道節(jié)點(diǎn)A的地址,可以與之建立直接連接。
2. 找到伙伴在哪
節(jié)點(diǎn)A在找到相鄰最近的節(jié)點(diǎn)之后,還會向與它相鄰的節(jié)點(diǎn)索要它們已知節(jié)點(diǎn)的IP地址列表,拿到這些節(jié)點(diǎn)的IP地址列表之后,節(jié)點(diǎn)A便可以主動與這些節(jié)點(diǎn)建立直接的連接。
3. 更快的找到伙伴
當(dāng)節(jié)點(diǎn)A加入到網(wǎng)絡(luò)中之后,一般會與正活躍的節(jié)點(diǎn)連接。如果難以找到這樣的節(jié)點(diǎn),節(jié)點(diǎn)A會根據(jù)自己得到的IP地址列表,來找到那些長期穩(wěn)定運(yùn)行的節(jié)點(diǎn),這種節(jié)點(diǎn)就是種子節(jié)點(diǎn),通過種子節(jié)點(diǎn)能夠幫助節(jié)點(diǎn)A更快速的發(fā)現(xiàn)網(wǎng)絡(luò)中的其他節(jié)點(diǎn)。
三、比特幣網(wǎng)絡(luò)中不同節(jié)點(diǎn)的數(shù)據(jù)如何同步
比特幣網(wǎng)絡(luò)中的節(jié)點(diǎn)在連接到相鄰的節(jié)點(diǎn)之后,首先會和相鄰的節(jié)點(diǎn)同步數(shù)據(jù),然后再去和更多的節(jié)點(diǎn)進(jìn)行數(shù)據(jù)交換和同步。
在節(jié)點(diǎn)與節(jié)點(diǎn)之間進(jìn)行數(shù)據(jù)同步的過程中會根據(jù)一個哈希值(可以暫時理解為一種獨(dú)一無二的數(shù)據(jù)標(biāo)記,后面期刊中會詳細(xì)介紹)來判斷誰的數(shù)據(jù)為最新的數(shù)據(jù)。
如果節(jié)點(diǎn)發(fā)現(xiàn)本身的數(shù)據(jù)不是最新的,就會尋找擁有最新數(shù)據(jù)的節(jié)點(diǎn)進(jìn)行下載。如果發(fā)現(xiàn)自己的數(shù)據(jù)為最新數(shù)據(jù),則會告訴其他節(jié)點(diǎn)需要從它這里補(bǔ)充數(shù)據(jù)。其他的節(jié)點(diǎn)下載數(shù)據(jù)并驗(yàn)證通過之后,將會更新到自己的本地數(shù)據(jù)中。
通過這種方式能保證網(wǎng)絡(luò)中的所有節(jié)點(diǎn)都能及時得到最新數(shù)據(jù)。
四、總結(jié)
分布式是區(qū)塊鏈的核心,我們通過了解節(jié)點(diǎn)之間如何建立連接,應(yīng)該體會到分布式它不僅僅是一種網(wǎng)路架構(gòu),更是一種先進(jìn)的思想!
點(diǎn)對點(diǎn)之間的影響通過網(wǎng)絡(luò)形成了非線性的因果關(guān)系,整個網(wǎng)絡(luò)形成了去中心,自組織的形態(tài),這是事物發(fā)展的必然過程。更加高效、更加平等、更加低成本是新制度進(jìn)化的必然方向。
分布式思想可能給我們帶來的不僅僅是科技上的革命,更可能會帶來整個人類社會結(jié)構(gòu)的改變。
讓我們拭目以待!
作者:liheng,區(qū)塊鏈探索者、互聯(lián)網(wǎng)產(chǎn)品經(jīng)理,超級個體修煉中,只創(chuàng)作對用戶有價值的內(nèi)容
本文由 @liheng 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載
題圖來自Unsplash,基于CC0協(xié)議
666