IPFS:替代 HTTP 的分佈式網路協議

IPFS:替代 HTTP 的分佈式網路協議

今年年初,Internet Archive 開始提倡分佈式網路儲存。現在關於它的聲音已經變得越來越清晰而又響亮。而IPFS就是在這種環境下出現一個典型的開源代表。 IPFS 是點對點協議 InterPlanetary File System 的縮寫,它是一個面向全球點對點的分佈式版本文件系統,試圖將所有具有相同文件系統的伺服器設備連接在一起。

近日,IFPS宣布了一個未來web 發展計劃,它用基於內容的地址替代基於網址的地址,也就是用戶尋找的不是某個地址而是儲存在某個地方的內容,不需要驗證發送者的身份,而只需要驗證內容的Hash,通過這樣可以讓網頁的速度更快、更安全、更健全、更持久。 IPFS 表示,IPFS 未來將替代 HTTP(以及其他的許多東西)。

一、HTTP 存在很多問題

HTTP 鼓勵高度集中化

Web 的本意是去中心化,但它卻變得越來越中心化,今天越來越多的人依靠的是少數網站的服務。 HTTP 變成了一個脆弱的、高度集中的、無效的、過度依賴於骨幹網的協議。像美國國家安全局這樣的組織,現在只需要在幾個點上攔截通信來進行監視。對政府來說,阻止網站訪問這些高度集中化的資源變得容易。這也使網路容易遭受DDoS 攻擊而面臨巨大的風險。

將 web 進行去中心化,可以降低極少數強大組織的延展性,並提高所有站點的自由度和獨立性,同時也降低了由於伺服器中斷造成資料遺失的風險。

HTTP 是低效的

如果不是大規模的處理資料,將這些資料從中央資料中心分發仍然是非常昂貴的。 IPFS 可代替總是從資料中心獲取內容的 HTTP,如果將一個 ISP 網路上的每一台計算機變成流媒體 CDN,這時會怎麼樣?例如,獲取江南 Style 視頻,就可以完全在 ISP 網絡上下載,而不需要在 Internet 骨幹網路上經過大量的傳輸,從而大大減少資料傳輸的費用。

HTTP 過度依賴於 Internet 主幹網路

當內容過度集中化之後,這讓資料中心高度依賴於 Internet 骨幹網路。這樣除了有利於政府對內容進行封鎖和審查,事實上存在很多可靠性問題。即使允許冗餘,主要的骨幹有時還是會被損壞,或者出現路由表失控,其後果可能是非常嚴重。 Internet 骨幹網路並不健全,其很容易被攻擊,同時一些重要的光纖線路被切斷時服務很容易遭受影響。

二、IPFS 如何解決了這些問題

IPFS 改變了用戶搜尋的方式。通過 IPFS,用戶搜尋的是內容。通過 HTTP 瀏覽器搜尋文件的時候,首先找到伺服器的位置(IP 地址),然後使用路徑名稱在伺服器上查找文件。按照這個設計,只有文件所有者可以判斷這是否是用戶要找的文件。此時,必須保證託管者不會通過移除文件或者關閉伺服器而對文件做任何更改。

當文件被添加到 IPFS 節點上,它得到一個新的名字。這個名字實際上是一個加密Hash,它是從文件內容中被計算出來。通過加密保證該Hash始終只表示該文件的內容。哪怕只在文件中修改一個Bit的數據,Hash都會完全不同。

當下一步向IPFS 分佈式網路詢問Hash的時候,它通過使用一個分佈式Hash表,可以快速(在一個擁有10,000,000 個節點的網路中只需要20 M)地找到擁有數據的節點,從而檢索該數據,並使用Hash驗證這是否是正確的數據。

IPFS 是通用的,並且存儲限制很少。它服務的文件可大可小,對於一些大的文件,它會自動將其切割為一些小塊,使IPFS 節點不僅僅可以像HTTP 一樣從一台服務器上下載文件,而且可以從數百台服務器上進行同步下載。 IPFS 網絡是一個細粒度的、不可靠的、分佈式的、易聯合的內容分發網路(Content Delivery Network , CDN)。對於所有數據類型都是很有用的,包括圖像、視頻流、分佈式數據庫、操作系統、blockchains 等,而對於 IPFS 來說,最重要的是靜態 web 網站。

IPFS 文件也可以是特殊的 IPFS 目錄對象,它允許用戶使用人類可讀的文件名,透明地鏈接到其他 IPFS Hash。用戶可以通過默認方式加載目錄中的 index.html,這也是標準的 HTTP 伺服器採用的方式。使用目錄對象,IPFS 可允許用戶採用完全相同的方式生成靜態網站。將 web 網站添加到 IPFS 節點中只需要一個簡單的命令:ipfs add -r yoursitedirectory。在此之後,用戶可以從任何 IPFS 節點訪問,而不需要鏈接到 HTML 上的任何Hash。

與 IPFS 建立聯盟資料

IPFS 不需要每個節點存儲所有發佈到 IPFS 上的內容。相反,每個節點只存儲自己想要的資料。如果每個節點託管一點資料,所有資料通過累積就提供了比任何集中式 HTTP 更多的空間、頻寬和可用性。分佈式網路將很快成為世界上最快、最可用、以及最大的資料存儲。沒有人有能力關閉所有的節點,所以資料永遠不會丟失。

從其他 IPFS 節點複製、存儲 web 網站很容易。它只需要一條命令以及網站的Hash值:ipfs pin add -r QmcKi2ae3uGb1kBg1yBpsuwoVqfmcByNdMiZ2pukxyLWD8。 IPFS 負責剩下的所有工作。

IPFS

IPFS Hash代表不可變的數據,這意味著它們是不能被更改的,否則會導致Hash值的變更。這是一件好事,因為它鼓勵數據的持久性,但我們仍然需要一種方法來找到最新的 IPFS Hash以表示你的網站。 IPFS 通過一種特殊的功能來達成,即 IPNS。

IPNS 允許用戶使用一個私有密鑰來對 IPFS Hash附加一個引用,使用一個公共密鑰Hash(簡稱 pubkeyhash)表示你的網站的最新版本。如果用戶使用過比特幣,可能會對此比較熟悉,一個比特幣地址也是一個 pubkeyhash。

如果該鏈接不起作用,不用擔心。能夠通過更改 pubkeyhash 所指向的內容,而 pubkeyhash 卻永遠保持不變。這樣,網站的更新問題就得到了解決。

接下來,只需要保證這些網站的位置是人類可讀的,所有問題就解決了。

人類可讀的可變地址

IPFS/ IPNS Hash是一些很大的、難看的字符串,而且不容易記住。所以 IPFS 允許用戶使用現有的域名系統(Domain Name System, DNS)來為 IPFS/IPNS 內容提供人類可讀的連結。它允許用戶通過在域名服務器上將Hash插入 TXT 記錄來達成這一點(如果你方便使用一個命令行,運行如下命令:dig TXT ipfs.git.sexy)。詳細內容可以參考這裡

未來,IPFS 已計劃支持Namecoin,它理論上可以用來建立一個完全去中心化的、分佈式的 web,整個環境中不需要一個中心控制。沒有 ICANN,沒有中央伺服器,沒有“權威”證書,也沒有瓶頸。這聽起來很瘋狂。可是的確瘋狂。因為使用今天的技術這是完全可以實現的!

IPFS HTTP 網關:新舊網絡之間的橋樑

通過一個 HTTP 網關,IPFS 可以實現從 HTTP 到 IPFS 的過度,瀏覽器可以完全實現 IPFS 之前,現在已經允許當前的 web 瀏覽器訪問 IPFS。用戶很快就可以切換到 IPFS,完成 web 網站的存儲、分發和服務。

到目前為止,IPFS 還處於實驗階段。當網站更新的時候,Neocities 將每天發布一個哈希 IPFS。這個哈希將指向該網站的最新版本,並通過 IPFS HTTP 網關可以訪問。因為每次更新 IPFS Hash都會變更,這也能夠為所有網站提供一個存檔歷史記錄。

從長期來看,如果一切順利的話,Neocities 希望使用 IPFS 存儲所有的網站,並為每個網站發布 IPNS 。這將讓用戶可以不依賴於 Neocities 而進行內容髮布。如果構建得當,即使 Neocities 不存在了,用戶仍然可以更新自己的網站。通過有效地去除網站對 Neocities 中央伺服器的依賴,這種集中控制環境將被永久性打破。

IPFS 真正能夠替代 HTTP 可能還需要一段時間,而且也有很多工作要做。

通過與協議實驗室(Protocol Labs)合作,Neocities已經成為產業界實施 IPFS 第一大網站。從 9 月 8 日開始,所有 Neocities 站點可以為世界上任何 IPFS 節點提供查看、存檔和託管功能。當一個 IPFS 節點選擇從 Neocities 上託管一個網站的時候,即使 Neocities 關閉了或停止對它託管,網站的原始版本仍繼續可用。使用 Neocities 網站的 IPFS 節點越多,Neocities 網站越容易訪問。

目前,IPFS 仍處於 alpha 開發階段。它還沒有取代現有的網站存儲系統。如同任何復雜的新技術,它還存在很多需要的改進地方。

 

About the Author

Leave a Reply