今年年初Internet Archive發(fā)布了對分布式Web方案的征集,新的Web將會變得速度更快,安全性更高,更可靠,并且更加持久。對此我們感到興奮不已,同時也將立刻踏上探索Web未來的旅途。
通過和Protocol Labs合作,Neocities成為了在生產中使用IPFS的主要力量。目前Neocities的所有網站都可以通過世界上任意一個IPFS結點瀏覽和歸檔,即使Neocities關閉或撤下了某個站點,該站點也仍然可以被有效訪問。支撐Neocities網站的IPFS結點越多,這些網站的可靠性越強(冗余度越高),對我們的集中依賴也就越少。
那么什么是IPFS呢?讓我們來看一下它的README的內容:
IPFS(The InterPlanetary File System)是一種點到點的分布式文件系統(tǒng),它連接的計算設備都擁有相同的文件管理模式。從某種意義上來說這個概念跟Web的初理念很類似,但是實際上IPFS更像是互相轉發(fā)Git目標的單個Bittorrent用戶群。IPFS具備成為internet子系統(tǒng)的素質,通過合理配置可以完備甚至替代HTTP。這聽起來已經有些不可思議,但其實它可以做到更多。
IPFS的開發(fā)目前處于alpha試驗階段,還沒能替代現(xiàn)存的網站存儲系統(tǒng)。就像其它復雜的新技術一樣,我們有很多改進要做。但IPFS不是空想,它一直在實際運行著,你可以試著在自己的電腦上配置IPFS,為Neocities網站的訪問用戶提供服務,你的加入或許會延續(xù)某個網站的壽命。
盡管IPFS的開發(fā)還不十分成熟,但我仍然要表達一個大膽的觀點:IPFS會取代HTTP(和其他一些組件一起)。雖然取代HTTP聽起來很荒謬,但是我們應當看到HTTP已經很破舊了,繼續(xù)長期甚至永遠地使用HTTP才是更荒謬的事。所以我們應當應用當今計算機技術,著力解決分布式帶來的諸多問題,為Web服務設計更好的協(xié)議。
1、HTTP的缺陷
HTTP(超文本傳輸協(xié)議)是全世界統(tǒng)一的全局信息格式協(xié)議,它的制定為分發(fā)和顯示信息提供了規(guī)范。HTTP將發(fā)布信息的成本降到了低,擾亂了經濟、政治、文化管理機構對信息(音樂、思想、視頻、新聞、游戲等等)傳播的控制。然而通過使獲取信息的渠道更加平等、過程更為容易,HTTP實際上使我們的文化產業(yè)更加蓬勃有生機,很難想象沒有了它生活將會變得怎樣。
HTTP堪稱史上偉大的發(fā)明之一,我永遠愛它。但是由于在可分布性和可持久性方面的缺失,它多次在我們面前崩潰,因此難以成為人類知識總和的永久載體。HTTP分發(fā)內容的方式在根本上是有缺陷的,盡管經歷了性能調優(yōu)、CA證書SSL以及其它一些手段,也都沒能改善。HTTP/2的改進在一定程度上緩解了缺陷,但是保守的升級并不能根本地解決問題,反而突顯了HTTP的老舊。因此我們要采用一種新的基礎協(xié)議代替HTTP來治理網絡環(huán)境,提供更好的Web服務。我非常希望IPFS能成為那個替代者。
HTTP是脆弱的
上圖是Tim Berners-Lee在CERN的NeXT電腦,是世界上臺HTTP協(xié)議的Web服務器。主機箱上貼著一張醒目的紙條,上面寫著“這是一臺服務器,不要關機!”不能關機是因為其他幾臺Web服務器正和它保持著連接,依賴于它運轉。一旦這臺電腦關機或無響應,連接就會中斷,站點間的聯(lián)系會被打破,訪問的內容也隨之消失不見。這就是HTTP大的問題所在,它的腐蝕性。Tim的NeXT電腦現(xiàn)存于一家博物館,是早被淘汰的Web服務器之一。
下圖是使用Web時常見的場景:
即使沒有讀過HTTP協(xié)議的具體內容,大多數(shù)人也都了解404錯誤意味著什么。它是HTTP協(xié)議的錯誤碼,表明網頁不在服務器的指定位置。能夠見到404錯誤說明你還有一定的運氣,因為有些時候服務器連這樣的信息也不會顯示。更可怕的是除非Internet Archive做了備份,否則要訪問的網頁可能永遠也找不到,就這樣丟失了。通常一個網頁誕生的時間越早,回應404錯誤的可能就越大。就像一個冷血的數(shù)字墓碑,埋葬了當時的認知、美感或者愚昧。
90年代以后建立的網站中,我喜歡的是Mosh to Yanni,不過今天的它只能作為一個反面的例子出現(xiàn),告訴我們HTTP在維持網站間的連接方面是有多么的不足。Mosh to Yanni主頁的靜態(tài)內容仍然可以加載,瀏覽器的渲染也運行得很正常,但是站外的和動態(tài)服務的內容已經全都不可訪問。
出現(xiàn)這種狀況的原因其實非常簡單,就是集中管理的Web服務器不可避免的會關機。而關機的原因則有很多,或是域名的所有者變更,或是計算機崩潰卻沒有備份。若是取消集中管理,讓網站的擁有者自己搭建HTTP服務器,情況也不會好轉,甚至可能更糟。
與Mosh to Yanni相似的例子多得數(shù)不清,許多有用的信息就這樣從人間蒸發(fā)。即使丟失的內容是荒謬的廢話或是過時的言論,那也是我們人類經歷過的歷史,不該這么輕易的丟掉。
HTTP趨于超中心化
為了避免數(shù)據(jù)被不斷侵蝕的狀況,人們開始依賴于使用管理更完善的大型中心服務器,通過制作大量冗余備份來獲得可靠性。這一方案在短期內是十分有效的,然而卻在長期運轉中滋生了新的一系列問題。
90年代易拉愛,在John Perry Barlow的網絡空間獨立宣言倡導下,線上國度不斷繁榮,用信息的手段影響并推動世界。然而與此同時,政府和公司等組織也開始通過HTTP的漏洞進行滲透,窺探和監(jiān)控網民的生活,阻礙他們獲取對自身不利的信息。
當初人們想要建立的是非中心化的Web,可是如今使用的Web卻越來越集中于少數(shù)一些服務器中心。造成的后果是,類似美國國家安全局這樣的機構只要截取這些服務器中心的通信信息,就可以得到大部分用戶的數(shù)據(jù)。對于政府來說,只要在邊境路由上設置內容審查,就可以阻斷訪問中心服務器的連接。同時網絡通信遭遇DDoS攻擊的風險也大大增加。
相反分布式的Web可以減少管理部門的干涉,恢復人們的網絡自由,同時也會減少單點故障帶來的風險。
HTTP的效率不高
截止到我寫這句話的是時間為止,江南style的視頻已經有超過2,344,327,696次觀看,姑且認為視頻的大小都是117MB,那么僅視頻文件就產生了274.3PB的網絡流量。假設每1GB的成本(包括網絡帶寬和服務器存儲)是1美分,則總共的花費將是2,742,860美元。
實際情況下花費可能還要高,因為網絡帶寬的價格是0.12美元起,亞洲用戶則是0.2美元左右。對于谷歌這樣的大公司來說錢可能不是太大的問題,不過對于一些中小小公司這就是個天文數(shù)字。我在Neocities做的工作有相當一部分是針對昂貴的帶寬,通過一些技術手段減少基礎設施運作的成本。
雖然HTTP降低了發(fā)布信息的成本,但它仍然需要大量金錢來運轉,而且花費越來越多。在沒有達到一定規(guī)模的情況下,集中由數(shù)據(jù)中心向外傳播信息是非常昂貴的。若是我們能把同一ISP網絡下的個人電腦都變成CDN內容提供者,從而取代數(shù)據(jù)中心,像江南style這樣很火的視頻就可以在ISP網絡內部傳播,就不需要接入到internet主干網,從而可以降低大量成本。IPFS就具備這樣的功能,后面還會說到。
HTTP造成了Internet主干網被過度依賴
由于Web內容是超中心化的,數(shù)據(jù)中心的運作十分依賴Internet主干網絡。除了會受到政府的審查和屏蔽之外,可靠性問題也大量存在。盡管已經采用了冗余備份的手段,可是一旦主干網崩潰,或是路由表錯亂,依然會造成嚴重的后果。
幾個月我就有過一次親身體驗,一輛小汽車撞壞了我們使用的上行光纖,整個Neocities的網絡都瞬間變慢了。此外我還聽說過一些類似的事情,比如有獵人射穿了東俄勒岡數(shù)據(jù)中心的光纖,搶修的工程師不得不坐著履帶雪地車踩著滑雪板前去維修。就在我寫這篇文章的時候,舊金山灣剛剛發(fā)生了一起復雜的網絡攻擊。
我想說的是Internet主干網是不完全可靠的,一方面它很容易遭受攻擊,另一方面一旦重要的線路癱瘓,大量的網絡服務都會受到影響。
2、IPFS的解決方案
上面我們主要討論了HTTP存在的問題(超中心化),下面我們說說IPFS如何解決這些問題。IPFS從根本上改變了查找的方式,這是它重要的特征。使用HTTP我們查找的是位置,而使用IPFS我們查找的是內容。
舉個例子:服務器上運行著一個文件https://neocities.org/img/neocitieslogo.svg,遵照HTTP協(xié)議瀏覽器首先會查找服務器的位置(IP地址),隨后向服務器索要文件的路徑。這種體系下文件的位置取決于服務器管理者,而用戶只能寄希望于文件沒有被移動,并且服務器沒有關閉。
IPFS的做法則是不再關心中心服務器的位置,也不考慮文件的名字和路徑,只關注文件中可能出現(xiàn)的內容。我把剛才的文件neocitieslogo.svg放到IPFS節(jié)點,它會得到一個新名字QmXGTaGWTT1uUtfSb2sBAvArMEVLK4rQEcQg5bv7wwdzwU,是一個由文件內容計算出的加密哈希值。哈希值直接反映文件的內容,哪怕只修改1比特,哈希值也會完全不同。
當IPFS被請求一個文件哈希時,它會使用一個分布式哈希表找到文件所在的節(jié)點,取回文件并驗證文件數(shù)據(jù)。雖然早期的分布式哈希表曾遭受過女巫攻擊,但是已經有一些新的方案來實現(xiàn),我相信這個問題可以解決。
IPFS是通用目的的基礎架構,基本沒有存儲上的限制。大文件會被切分成小的分塊,下載的時候可以從多個服務器同時獲取。IPFS的網絡是不固定的、細粒度的、分布式的網絡,可以很好的適應內容分發(fā)網絡(CDM)的要求。這樣的設計可以很好的共享各類數(shù)據(jù),包括圖像、視頻流、分布式數(shù)據(jù)庫、整個操作系統(tǒng)、模塊鏈、8英寸軟盤的備份,還有重要的——靜態(tài)網站。
IPFS文件還可以抽象成特殊的IPFS目錄,從而標注一個可讀的文件名(透明的映射到IPFS哈希),在訪問的時候會像HTTP一樣獲取一個目錄索引。在IPFS上建立網站的流程和過去一樣,而且把網站加入到IPFS節(jié)點的指令只需要一條指令:ipfs add -r yoursitedirectory。網頁間的連接不再需要人去維護,IPFS自帶的查找可以解決。
關聯(lián)數(shù)據(jù)到IPFS
IPFS不會要求每一個節(jié)點都存儲所有的內容,節(jié)點的所有者可以自由選擇想要維持的數(shù)據(jù)。這就像是書簽一樣,在備份了自己的網站之外,自愿的為其他的關注的內容提供服務,不同的是這個書簽不會像以前一樣終變得失效。
IPFS節(jié)點間的拷貝、存儲和網站支援都很容易,只需要使用一條指令以及網站的哈希,例如:ipfs pin add -r QmcKi2ae3uGb1kBg1yBpsuwoVqfmcByNdMiZ2pukxyLWD8,剩下的IPFS會搞定。
如果IPFS得以普及,節(jié)點數(shù)達到一定規(guī)模,即使每個節(jié)點只存放一點點內容,所累計的空間、帶寬和可靠性也遠超HTTP能提供的。隨之而來,分布式Web會變成地球上快、可靠、大的數(shù)據(jù)倉庫,人類知識也就再也不會湮滅,亞歷山大圖書館永遠不會倒塌。
IPNS
IPFS哈希只能用來表示不可變數(shù)據(jù),因為一旦數(shù)據(jù)改變,哈希值也會改變。從某種意義上來說,這是保持數(shù)據(jù)持續(xù)性的好的設計。但是我們也需要一種方法來標記新更新網站的哈希,這個方法我們稱作IPNS。
IPFS哈希是網站通過哈希公鑰生成的,相對的IPNS使用私鑰來標記IPFS哈希的引用。如果以前用過比特幣你應該很熟悉這種模式,比特幣地址就是一種公鑰哈希。在Neocities的IPFS節(jié)點上,我標記了Penelope(我們網站的吉祥物)的鏡像,可以使用IPNS公鑰來加載:QmTodvhq9CUS9hH8rirt4YmihxJKZ5tYez8PtDmpWrVMKP。
由于IPNS功能還沒有完成,如果上面的鏈接不能工作也請不要灰心。IPNS公鑰指向的位置是可變的,公鑰的值則是保持不變的。隨著IPNS的引入,網站升級的問題可以順利解決。
可讀可變尋址
由于IPFS/IPNS的哈希值都是很長和難記的字符串,所以IPFS兼容了現(xiàn)存的域名系統(tǒng)(DNS),可以通過可讀的鏈接訪問IPFS/IPNS內容。使用方法是在nameserver上創(chuàng)建一個文本記錄,插入網站的哈希值(如果手上有一個命令行終端,試一下這個:dig TXT ipfs.git.sexy)。訪問http://ipfs.io/ipns/ipfs.git.sexy/可以觀察到效果。
接下來IPFS還打算支持Namecoin。Namecoin從理論上完全實現(xiàn)了分布式Web的去中心化,整體的運行中不再需要中心化的授權。支持了Namecoin的IPFS不再需要ICANN、中心服務器,不受政治干涉,也無需授權證書。這聽起來難以置信,但卻是今天可以實現(xiàn)的技術。
IPFS-HTTP網關:新舊Web之間的橋梁
IPFS在實現(xiàn)上加裝了HTTP網關,使得現(xiàn)有的瀏覽器也可以訪問IPFS,我在上文中舉過例子。所以無需等待,現(xiàn)在就可以開始使用IPFS作為存儲、分布和搭建網站的設施。
如何使用IPFS
現(xiàn)有的IPFS實現(xiàn)是實驗性的,Neocities會在網站更新的時候發(fā)布新的IPFS哈希,新的哈希會指向新版本的網站,通過IPFS-HTTP網關可以直接訪問。由于IPFS哈希是隨著更新改變的,我們可以自動的獲得舊版本網站的歷史檔案,這些內容也會被提供出來。
IPNS加入后如何使用
如果項目長期地進展順利,我們會用IPFS支撐所有的網站,并且為每個站點制作IPNS哈希,用戶可以獨立的發(fā)布內容,不再需要聯(lián)系我們。假如我們做到了設想的情景,即使Neocities不存在了,用戶還是可以正常更新他們的網站,意味著用戶對中心服務器的依賴永遠解除,把世界上網站都籠絡到旗下的計劃完全打破。這聽起來太棒了!真是太棒了!
不過現(xiàn)在說這些有點為時過早也毫無意義,在IPFS能取代HTTP之前還有很多的實際工作要做。目前緊迫的任務不是暢想未來,而是要腳踏實地接受Internet Archive的挑戰(zhàn)——實現(xiàn)分布式Web。
本站文章版權歸原作者及原出處所有 。內容為作者個人觀點, 并不代表本站贊同其觀點和對其真實性負責,本站只提供參考并不構成任何投資及應用建議。本站是一個個人學習交流的平臺,網站上部分文章為轉載,并不用于任何商業(yè)目的,我們已經盡可能的對作者和來源進行了通告,但是能力有限或疏忽,造成漏登,請及時聯(lián)系我們,我們將根據(jù)著作權人的要求,立即更正或者刪除有關內容。本站擁有對此聲明的最終解釋權。