取代HTTP協(xié)議,IPFS可不是說(shuō)大話,它絕對(duì)有顛覆宇宙的實(shí)力
前面我們談到IPFS的目標(biāo)是取代HTTP協(xié)議,那么HTTP協(xié)議存在哪些問(wèn)題?IPFS如何解決這些問(wèn)?
2015年有一篇文章《IPFS:替代HTTP的分布式網(wǎng)絡(luò)協(xié)議》對(duì)上述問(wèn)題做出了一定分析說(shuō)明,文章的大意是:
其實(shí)除了文中所提的幾個(gè)問(wèn)題外,IPFS對(duì)比HTTP的取代還有幾個(gè)因素值得考慮:
1、依賴服務(wù)器的HTTP網(wǎng)絡(luò)還非常容易產(chǎn)生內(nèi)容丟失的問(wèn)題。而IPFS的分布式存儲(chǔ),可以讓內(nèi)容永久保存,除非同時(shí)對(duì)所有節(jié)點(diǎn)進(jìn)行攻擊。
2、HTTP協(xié)議基于文本的明文傳輸,沒(méi)有數(shù)據(jù)隱私可言,而作為升級(jí)版的HTTPS引入了SSL(Secure Sockets Layer)機(jī)制對(duì)數(shù)據(jù)進(jìn)行加密,但HTTPS需要中心節(jié)點(diǎn)部署證書,去中心化,而去中心化存儲(chǔ)的IPFS本身則無(wú)法做到這一點(diǎn),必須考慮采用其他的保密措施。
以下是《IPFS:替代HTTP的分布式網(wǎng)絡(luò)協(xié)議》的全文:
IPFS:替代HTTP的分布式網(wǎng)絡(luò)協(xié)議
轉(zhuǎn)載自InfoQ,作者:張?zhí)炖祝l(fā)布時(shí)間:2015年10月。
今年年初,Internet Archive開始倡導(dǎo)分布式網(wǎng)絡(luò)?,F(xiàn)在關(guān)于它的聲音已經(jīng)變得越來(lái)越清晰而又響亮。而IPFS就是在這種環(huán)境下出現(xiàn)的一個(gè)典型的開源代表。IPFS是點(diǎn)對(duì)點(diǎn)協(xié)議InterPlanetary File System的簡(jiǎn)稱,它是一個(gè)面向全球的、點(diǎn)對(duì)點(diǎn)的分布式版本文件系統(tǒng),試圖將所有具有相同文件系統(tǒng)的計(jì)算設(shè)備連接在一起。
近日,IFPS宣布了一個(gè)未來(lái)web發(fā)展計(jì)劃,它用基于內(nèi)容的地址替代基于域名的地址,也就是用戶尋找的不是某個(gè)地址而是儲(chǔ)存在某個(gè)地方的內(nèi)容,不需要驗(yàn)證發(fā)送者的身份,而只需要驗(yàn)證內(nèi)容的哈希,通過(guò)這樣可以讓網(wǎng)頁(yè)的速度更快、更安全、更健壯、更持久。IPFS表示,IPFS未來(lái)將替代HTTP(以及其他的許多東西)。
一、HTTP存在很多問(wèn)題
HTTP鼓勵(lì)高度集中化
Web的本意是去中心化,但它卻變得越來(lái)越中心化,今天越來(lái)越多的人依靠的是少數(shù)網(wǎng)站的服務(wù)。HTTP變成了一個(gè)脆弱的、高度集中的、無(wú)效的、過(guò)度依賴于骨干網(wǎng)的協(xié)議。像美國(guó)國(guó)家安全局這樣的組織,現(xiàn)在只需要在幾個(gè)點(diǎn)上攔截通信來(lái)進(jìn)行監(jiān)視。對(duì)政府來(lái)說(shuō),阻止網(wǎng)站訪問(wèn)這些高度集中化的資源變得容易。這也使通信容易遭受DDoS攻擊而面臨巨大的風(fēng)險(xiǎn)。
將web進(jìn)行去中性化,可以降低極少數(shù)強(qiáng)大組織的延展性,并提高所有站點(diǎn)的自由度和獨(dú)立性,同時(shí)也降低了由于服務(wù)器中斷造成數(shù)據(jù)丟失的風(fēng)險(xiǎn)。
HTTP是低效的
如果不是成規(guī)模的處理數(shù)據(jù),將這些數(shù)據(jù)從中央數(shù)據(jù)中心分發(fā)仍然是非常昂貴的。IPFS可代替總是從數(shù)據(jù)中心獲取內(nèi)容的HTTP,如果將一個(gè)ISP網(wǎng)絡(luò)上的每一臺(tái)計(jì)算機(jī)變成流媒體CDN,這時(shí)會(huì)怎么樣?例如,獲取江南Style視頻,就可以完全在ISP網(wǎng)絡(luò)上下載,而不需要在Internet骨干網(wǎng)上經(jīng)過(guò)大量的傳輸,從而大大減少數(shù)據(jù)傳輸?shù)馁M(fèi)用。
HTTP過(guò)度依賴于Internet主干網(wǎng)
當(dāng)內(nèi)容過(guò)度集中化之后,這讓數(shù)據(jù)中心高度依賴于Internet骨干網(wǎng)。這樣除了有利于政府對(duì)內(nèi)容進(jìn)行封鎖和審查,事實(shí)上存在很多可靠性問(wèn)題。即使允許冗余,主要的骨干有時(shí)還是會(huì)被損壞,或者出現(xiàn)路由表失控,其后果可能是非常嚴(yán)重。Internet骨干網(wǎng)并不健全,其很容易被攻擊,同時(shí)一些重要的光纖線路被切斷時(shí)服務(wù)很容易遭受影響。
二、IPFS如何解決了這些問(wèn)題
IPFS從根本上改變了用戶搜索的方式。通過(guò)IPFS,用戶搜索的是內(nèi)容。通過(guò)HTTP瀏覽器搜索文件的時(shí)候,首先找到服務(wù)器的位置(IP地址),然后使用路徑名稱在服務(wù)器上查找文件。按照這個(gè)設(shè)計(jì),只有文件所有者可以判斷這是否是用戶要找的文件。此時(shí),必須保證托管者不會(huì)通過(guò)移除文件或者關(guān)閉服務(wù)器而對(duì)文件做任何更改。
當(dāng)文件被添加到IPFS節(jié)點(diǎn)上,它得到一個(gè)新的名字。這個(gè)名字實(shí)際上是一個(gè)加密哈希,它是從文件內(nèi)容中被計(jì)算出來(lái)。通過(guò)加密保證該哈希始終只表示該文件的內(nèi)容。哪怕只在文件中修改一個(gè)比特的數(shù)據(jù),哈希都會(huì)完全不同。
當(dāng)下一步向IPFS分布式網(wǎng)絡(luò)詢問(wèn)哈希的時(shí)候,它通過(guò)使用一個(gè)分布式哈希表,可以快速(在一個(gè)擁有10,000,000個(gè)節(jié)點(diǎn)的網(wǎng)絡(luò)中只需要20跳)地找到擁有數(shù)據(jù)的節(jié)點(diǎn),從而檢索該數(shù)據(jù),并使用哈希驗(yàn)證這是否是正確的數(shù)據(jù)。
IPFS是通用的,并且存儲(chǔ)限制很少。它服務(wù)的文件可大可小,對(duì)于一些大的文件,它會(huì)自動(dòng)將其切割為一些小塊,使IPFS節(jié)點(diǎn)不僅僅可以像HTTP一樣從一臺(tái)服務(wù)器上下載文件,而且可以從數(shù)百臺(tái)服務(wù)器上進(jìn)行同步下載。IPFS網(wǎng)絡(luò)是一個(gè)細(xì)粒度的、不可靠的、分布式的、易聯(lián)合的內(nèi)容分發(fā)網(wǎng)絡(luò)(Content Delivery Network , CDN)。對(duì)于所有數(shù)據(jù)類型都是很有用的,包括圖像、視頻流、分布式數(shù)據(jù)庫(kù)、操作系統(tǒng)、blockchains等,而對(duì)于IPFS來(lái)說(shuō),最重要的是靜態(tài)web網(wǎng)站。
IPFS文件也可以是特殊的IPFS目錄對(duì)象,它允許用戶使用人類可讀的文件名,透明地鏈接到其他IPFS哈希。用戶可以通過(guò)默認(rèn)方式加載目錄中的index.html,這也是標(biāo)準(zhǔn)的HTTP服務(wù)器采用的方式。使用目錄對(duì)象,IPFS可允許用戶采用完全相同的方式生成靜態(tài)網(wǎng)站。將web網(wǎng)站添加到IPFS節(jié)點(diǎn)中只需要一個(gè)簡(jiǎn)單的命令:
ipfs add -r yoursitedirectory。
在此之后,用戶可以從任何IPFS節(jié)點(diǎn)訪問(wèn),而不需要鏈接到HTML上的任何哈希。
與IPFS建立聯(lián)盟的數(shù)據(jù)
IPFS不需要每個(gè)節(jié)點(diǎn)存儲(chǔ)所有發(fā)布到IPFS上的內(nèi)容。相反,每個(gè)節(jié)點(diǎn)只存儲(chǔ)自己想要的數(shù)據(jù)。如果每個(gè)節(jié)點(diǎn)托管一點(diǎn)數(shù)據(jù),所有數(shù)據(jù)通過(guò)累積就提供了比任何集中式HTTP更多的空間、帶寬和可用性。分布式網(wǎng)絡(luò)將很快成為世界上最快、最可用、以及最大的數(shù)據(jù)存儲(chǔ)。沒(méi)有人有能力關(guān)閉所有的節(jié)點(diǎn),所以數(shù)據(jù)永遠(yuǎn)不會(huì)丟失。
從其他IPFS節(jié)點(diǎn)復(fù)制、存儲(chǔ)web網(wǎng)站很容易。它只需要一條命令以及網(wǎng)站的哈希值:
ipfspin add -r QmcKi2ae3uGb1kBg1yBpsuwoVqfmcByNdMiZ2pukxyLWD8。
IPFS負(fù)責(zé)剩下的所有工作。
IPFS
IPFS哈希代表不可變的數(shù)據(jù),這意味著它們是不能被更改的,否則會(huì)導(dǎo)致哈希值的變更。這是一件好事,因?yàn)樗膭?lì)數(shù)據(jù)的持久性,但我們?nèi)匀恍枰环N方法來(lái)找到最新的IPFS哈希以表示你的網(wǎng)站。IPFS通過(guò)一種特殊的功能來(lái)實(shí)現(xiàn),即IPNS。
IPNS允許用戶使用一個(gè)私有密鑰來(lái)對(duì)IPFS哈希附加一個(gè)引用,使用一個(gè)公共密鑰哈希(簡(jiǎn)稱pubkeyhash)表示你的網(wǎng)站的最新版本。如果用戶使用過(guò)比特幣,可能會(huì)對(duì)此比較熟悉,一個(gè)比特幣地址也是一個(gè)pubkeyhash。
如果該鏈接不起作用,不用擔(dān)心。能夠通過(guò)更改pubkeyhash所指向的內(nèi)容,而pubkeyhash卻永遠(yuǎn)保持不變。這樣,網(wǎng)站的更新問(wèn)題就得到了解決。
接下來(lái),只需要保證這些網(wǎng)站的位置是人類可讀的,所有問(wèn)題就解決了。
人類可讀的可變地址
IPFS/ IPNS哈希是一些很大的、難看的字符串,而且不容易記住。所以IPFS允許用戶使用現(xiàn)有的域名系統(tǒng)(Domain Name System, DNS)來(lái)為IPFS/IPNS內(nèi)容提供人類可讀的鏈接。它允許用戶通過(guò)在域名服務(wù)器上將哈希插入TXT記錄來(lái)實(shí)現(xiàn)這一點(diǎn)(如果你方便使用一個(gè)命令行,運(yùn)行如下命令:dig TXT ipfs.git.sexy)。具體可以參考這里?網(wǎng)頁(yè)鏈接。
未來(lái),IPFS已計(jì)劃支持Namecoin,它理論上可以用來(lái)創(chuàng)建一個(gè)完全去中心化的、分布式的web,整個(gè)環(huán)境中不需要一個(gè)中心控制。沒(méi)有ICANN,沒(méi)有中央服務(wù)器,沒(méi)有“權(quán)威”證書,也沒(méi)有瓶頸。這聽起來(lái)很瘋狂。可現(xiàn)實(shí)的確瘋狂。因?yàn)槭褂媒裉斓募夹g(shù)這是完全可以實(shí)現(xiàn)的!
IPFS HTTP網(wǎng)關(guān):新舊網(wǎng)絡(luò)之間的橋梁
通過(guò)一個(gè)HTTP網(wǎng)關(guān),IPFS可以實(shí)現(xiàn)從HTTP到IPFS的過(guò)度,瀏覽器可以完全實(shí)現(xiàn)IPFS之前,現(xiàn)在已經(jīng)允許當(dāng)前的web瀏覽器訪問(wèn)IPFS。用戶很快就可以切換到IPFS,完成web網(wǎng)站的存儲(chǔ)、分發(fā)和服務(wù)。
到目前為止,IPFS還處于實(shí)驗(yàn)階段。當(dāng)網(wǎng)站更新的時(shí)候,Neocities將每天發(fā)布一個(gè)哈希IPFS。這個(gè)哈希將指向該網(wǎng)站的最新版本,并通過(guò)IPFS HTTP網(wǎng)關(guān)可以訪問(wèn)。因?yàn)槊看胃翴PFS哈希都會(huì)變更,這也能夠?yàn)樗芯W(wǎng)站提供一個(gè)存檔歷史記錄。
從長(zhǎng)期來(lái)看,如果一切順利的話,Neocities希望使用IPFS存儲(chǔ)所有的網(wǎng)站,并為每個(gè)網(wǎng)站發(fā)布IPNS鍵。這將讓用戶可以不依賴于Neocities而進(jìn)行內(nèi)容發(fā)布。如果構(gòu)建得當(dāng),即使Neocities不存在了,用戶仍然可以更新自己的網(wǎng)站。通過(guò)有效地去除網(wǎng)站對(duì)Neocities中央服務(wù)器的依賴,這種集中控制環(huán)境將被永久性打破。
IPFS真正能夠替代HTTP可能還需要一段時(shí)間,而且也有很多工作要做。
通過(guò)與協(xié)議實(shí)驗(yàn)室(Protocol Labs)合作,Neocities已經(jīng)成為產(chǎn)業(yè)界實(shí)施IPFS第一大網(wǎng)站。從9月8日開始,所有Neocities站點(diǎn)可以為世界上任何IPFS節(jié)點(diǎn)提供查看、存檔和托管功能。當(dāng)一個(gè)IPFS節(jié)點(diǎn)選擇從Neocities上托管一個(gè)網(wǎng)站的時(shí)候,即使Neocities關(guān)閉了或停止對(duì)它托管,網(wǎng)站的原始版本仍繼續(xù)可用。使用Neocities網(wǎng)站的IPFS節(jié)點(diǎn)越多,Neocities網(wǎng)站越容易訪問(wèn)。
目前,IPFS仍處于alpha開發(fā)階段。它還沒(méi)有取代現(xiàn)有的網(wǎng)站存儲(chǔ)系統(tǒng)。如同任何復(fù)雜的新技術(shù),它還存在很多需要的改進(jìn)地方。但I(xiàn)PFS不是霧件,現(xiàn)在已經(jīng)可以開始工作,感興趣的用戶可以下載軟件安裝到電腦上。
《IPFS:替代HTTP的分布式網(wǎng)絡(luò)協(xié)議》全文完
當(dāng)然,關(guān)于IPFS對(duì)HTTP的取代,還有許多值得探討的,這涉及兩個(gè)協(xié)議的具體內(nèi)容,后續(xù)我們會(huì)再進(jìn)一步進(jìn)行分析。