https://mp.weixin.qq.com/s/jwfjxe31v-ke-kksghjxka
之前聊過熱門專案filecoin,詳見《投資filecoin前的一盆冷水》。filecoin專案是基於ipfs協議開發出來的應用,ipfs協議能否成功推廣將會很大程度地影響filecoin專案的價值。因此,這次我們來深入瞭解一下ipfs是什麼、做了些什麼,以及是否有推廣前景。
位於應用層的ipfs
ipfs全稱interplanetaryfile system,又叫星際檔案系統,是一種建立分散式儲存和共享檔案的網際網路應用層協議。
當我們的pc(客戶端)發起一個請求時,會從第5層依次向下打包資訊,最後從第1層的網線輸出出去。反之當收到一個資訊時,也是從第1層開始向上層層解析,最終到第5層供使用者操作。簡而言之越下面的層越靠近硬體,越上面的層越靠近使用者的使用。網際網路的分層設計有一個好處:上層的變動對下層結構沒有任何影響,即無需下層結構發生改變。這降低了對硬體或系統的更新要求。
而ipfs屬於第5層應用層的協議,它的願景是補充甚至取代http協議,以打造一個更安全、更開放的網際網路環境。
ipfs與http的比較
下面我們透過分析“開啟網頁”這個動作,來了解一下這兩個協議有什麼不同。
開啟一個http網頁
開啟一個ipfs網頁
從流程上看,http是已知存在一個地址,向網路尋求這一地址所儲存的檔案,正因如此http下提供檔案的地址應當是唯一的,而在這地址中儲存的檔案可以替換的。而ipfs是已知存在一個檔案,向網路尋求持有這一檔案的1個或多個地址,進而向這些地址索要檔案,因此ipfs下提供檔案的地址可以不唯一,但最終不同地址提供的必定是同一個檔案。
所以和http相比,ipfs最大的特點是可以有多個提供website.com網頁檔案的地址,這意味著無需一臺中心化的伺服器(用以提供固定的地址)來返回website.com網頁檔案。當一臺電腦在ipfs網路向全網廣播“我有這個檔案”時,其ip地址和檔案cid會被加入dht中。那麼當很多裝置都宣告擁有相同的檔案時,這個檔案便可以從不同的裝置下載。只需一臺裝置線上就能保證這個檔案能被瀏覽到。而更多的資料來源,也可以讓獲取方選擇網路速度更快的地址來獲取該檔案。因此與http只能從一臺伺服器下載相比,使用ipfs網路將使檔案獲取速度和可靠性都得到巨大的提升。
ipfs的域名管理
細心的朋友會發現,既然一點點內容上的改動就會導致cid的變化,那麼當一個檔案更新後,它的“地址”(即在開啟網頁時所需輸入的檔案cid)就會變化,如果我們想訪問這個檔案最新的版本,我們就需要在每次更新後用新的“地址”開啟。另外,cid是一長串雜湊值,非常不便於閱讀和記憶(如圖4)。為此,ipfs需要透過引入域名系統來使訪問更加便捷,這催生出了ipns域名和dsnlink域名系統。
圖片4 記不住的cid雜湊值會隨著檔案的更新而變化
ipns域名系統
dnslink域名系統
ipfs究竟顛覆了什麼
·技術並非顛覆
ipfs並未在技術上有顛覆性的創新,而是一系列現有協議的有機合集。其中最重要的兩個協議分別是:bittorrent的點對點共享檔案系統和git版本控制系統。從ipfs網頁的開啟流程可以看出,點對點分享檔案內容的形式承襲自bittorrent,也就是熟知的bt下載,而ipfs利用dht後,每個客戶端(伺服器)只儲存dht表格的一部分,提高了去中心化水平。ipfs的另一個重要特性內容定址則承襲於git的版本控制系統,透過利用雜湊加密檔案的內容使其產生全域性唯一的識別符號,從而讓內容變得可以定址。ipfs透過充分利用已有的協議與技術努力打造出一個與http不同的網際網路應用協議。
· 看不見的改變
ipfs作為一個內容定址的協議,改變了我們在網際網路中搜尋檔案的方式。但它本質並沒有改變我們訪問網頁的方法,我們還是需要找到儲存檔案的裝置的ip,透過訪問這個裝置來獲取檔案。ipfs作為第5層應用層的協議是不會改變第3層網路層的ip協議的,改變的是獲得ip地址的方法,從http的地址定址變成了內容定址。尋的還是“址”(ip地址),只是“尋”的方式不同了而已。需要強調一點,ipfs並不等同於區塊鏈。協議本身不是非要搭載在區塊鏈上才能執行,只是整個協議去中心化的特質非常適合應用區塊鏈來實現。
·未來還未到來
ipfs要多久才能大規模應用於網際網路呢?答案是:很久。網際網路本身的慣性太強,即使ipv6的需求這麼旺盛,多年來也沒有做到全網推廣,更何況ipfs還遠不夠安全,高效。分散式共享和儲存檔案要還面臨盜版和非法檔案的監管的問題。在非常漫長的時間內,網際網路的主角依然是http,ipfs就像bt下載一樣,會有一眾忠實的使用者但尚不會成為主流。
參考資料:
[1] ipfs——它能取代http協議?,https://www.jianshu.com/p/ddccae89a49a
[2] 淺入淺出bittorrent協議 | azard的部落格,http://www.360doc.com/content/17/0617/14/19227797_663927782.shtml
[3] ipfs docs--dnslink, https://docs.ipfs.io/concepts/dnslink/
[4] detailed tcp/ipcommunication example,https://microchipdeveloper.com/tcpip:detailed-tcpip-communication
[5] tcp/ip five-layer softwaremodel overview, https://microchipdeveloper.com/tcpip:tcp-ip-five-layer-model
[6] 戴嘉樂:詳解ipfs的本質、技術架構以及應用,https://blog.csdn.net/u012357002/article/details/80161042?utm_medium=distribute.pc_relevant_download.none-task-blog-blogcommendfrombaidu-6.nonecase&depth_1-utm_source=distribute.pc_relevant_download.none-task-blog-blogcommendfrombaidu-6.nonecas
[7] ipfs gateway,https://developers.cloudflare.com/distributed-web/ipfs-gateway
[8] how does resolution androuting work with ipfs?, https://github.com/ipfs-inactive/faq/issues/48
[9] http is obsolete. it'stime for the distributed web, https://blog.neocities.org/blog/2015/09/08/its-time-for-the-distributed-web.html
[10] address ipfs on the web,https://docs.ipfs.io/how-to/address-ipfs-on-web/#dweb-addressing-in-brief
[11] understanding ipfs indepth(3/6): what is interplanetary naming system(ipns)?,https://medium.com/hackernoon/understanding-ipfs-in-depth-3-6-what-is-interplanetary-naming-system-ipns-9aca71e4c13b
[12] ipfs docs--interplanetaryname system (ipns), https://docs.ipfs.io/concepts/ipns/#example-ipns-setup
[13] ipfs之技術背景git版本控制系統, https://www.liankexing.com/q/7835
[14] ten terrible attempts tomake the inter planetary file system human-friendly,https://hackernoon.com/ten-terrible-attempts-to-make-the-inter-planetary-file-system-human-friendly-e4e95df0c6fa
[15] bittorrent--百度百科,https://baike.baidu.com/item/bittorrent/142795?fr=aladdin
[16] 阮一峰的網路日誌--網際網路協議入門(一),http://www.ruanyifeng.com/blog/2012/05/internet_protocol_suite_part_i.html
[17] 阮一峰的網路日誌--網際網路協議入門(二),http://www.ruanyifeng.com/blog/2012/06/internet_protocol_suite_part_ii.html
[18] 構成ipfs的兩個重要協議,你是否瞭解呢?
https://mp.weixin.qq.com/s/0d9qdud5y0hox5j21edyow
[19] quick explanation of dnslink in ipfs,https://www.youtube.com/watch?v=yxkzfedvcbs
———— e n d ————