IPFS解决了HTTP的什么问题?

前言

IPFS(Interplanetary file system)的发明人Juan Benet曾说过:“IPFS能接通所有不同的区块链“,就像是现在的Internet可以把所有网站(website)连接在一起一样。

IPFS的开发目的,主要是为了替代目前的HTTP协议,它也是一种连接计算机和计算机的方式,与HTTP最大的差异在于,IPFS从根本上改变了我们寻找东西的方式。使用HTTP时,搜索的是位置,而IFPS搜索的是内容

在区块链技术之前,HTTP运行良好,用其他协议取代的需求也不高,IPFS之所以会被发明,是因为区块链的数据存储和运作极为低效,胃纳量不大,如果有用terminal更新过区块的人应该都会深有同感。

IPFS能够把内容层面的东西(不管是网页内容或是PDF文件)移到另一个运算层。这种美好的假想是现有的区块链上只要存储少量的数据就好,其他的浏览访问功能,全部都交给IPFS去处理,如果成功,可以大大提升区块链运行的效率。

要了解什么是IPFS,以及IPFS如何实现这些功能,我们要先了解现行HTTP的运作方式。

TCP/IP

互联网的一切都必须包含客户端(Client)和伺服器端(Server)。

客户端简单来说,就是你的计算机(你手上的PC、笔电)。单独的计算机是不会自己连网的,需要透过各种请求来完成。

计算机对伺服器的请求,必须要有共通的语言作为沟通桥梁,一般最常见的语言就是TCP/IP协定。

TCP/IP协定中,包含四个层面,每个层面都有相关协定,其中又有两个最核心的协定,分别为:TCP(Transmission Control Protocol)与IP(Internet Protocol)。

《IPFS解决了HTTP的什么问题?》 图片发自简书App

  • TCP负责客户端和伺服器之间的连接,连接时要透过三次握手来连接,切断时要透过四次握手来关闭连接。
  • IP负责计算机之间的通信。TCP负责将数据分割并装入IP包,IP负责将封包从来源端发送给接收者。

HTTP

HTTP是TCP/IP架构下,属于应用层面的协议,用于网页传输。举例来说,我现在在网页上搜索一个内容,浏览器首先找到IP位址(每一台计算机都有独一无二的IP位置),然后请求对方让我使用路径名。在这种设计之下,只有网站的拥有者能够确定这就是被寻找的文件

一般用户很难记住数字形式的IP位址,而因为名字比数字容易记忆,所以Internet后来提供了域名系统(DNS, Domain Name System)的服务,利用了URL(UniformResourceLocator, 统一资源定位符)作为互联网上用来标识某一处资源的地址。

以下面的网址为例,URL最主要的组成部分有:

https://dev.mysql.com/doc/refman/5.7/en/verifying-package-integrity.html

  1. 协议:HTTP就是一种应用层面的协议。(HTTPS则是HTTP + SSL / TLS,是在HTTP之上加了一层处理加密讯息的模块。)

  2. 域名:dev.mysql.com 就是域名,这个部分也可以使用IP位址。

  3. 文件名:verifying-package-integrity.html 就是文件名。

在HTTP协议里面,一般人要怎么查找一个资源?

HTTP共有8种请求类型,分别为:options、head、get、post、put、delete、trace、connect,而最常用的是get和post。

get 是请求资源、post是提交数据(像是注册、登录、提交表单…)

我是向谁请求我需要的资源?

请求是由我的浏览器发出,由一个承载我要查询的网站的伺服器(server)回应我的请求。对方的伺服器会发出一个回应(response),然后由我的浏览器处理加工这个回应后,用带有颜色、图片和样式、更加user friendly的样貌呈现在我眼前。

比如说,我在IE网址列输入www.facebook.com,就是在使用”get”请求,让我的浏览器去读取facebook网站上的资源。

HTTP有什么缺点?

  1. 首先,HTTP协议一次只能从一台计算机下载一个文件,而不能同时向多台计算机中获取文件。

  2. 历史文件无法被长期保存:受限于存储空间,一般网页的寿命平均为100天,太久远的资料可能无法被访问。

  3. 如果没有使用SSL/TLS这样的传输层安全的协定,直接以明文(plain text)传输的金钥和口令很容易被拦截,很多误入钓鱼网站的悲剧就是这样产生的。

IPFS

IPFS用内容代替域名,所有IPFS节点上的文件,都会根据内容产生出一个加密哈希值(hash),示意图如下,原文内容“the red fox walks across the ice”在经过哈希函数运作后变成一串乱码“46042841935C7FB09158585AB94AE21426EB3CEA”,而且很重要的一点是,即使整段文本只差一个字(如下图的”runs”和”walks”),产生出来的会是完全不同的哈希值。

《IPFS解决了HTTP的什么问题?》 image.png

客户端向IPFS发出请求后,IPFS会透过一个哈希表,快速地搜索到我要找的内容的哈希值。

另外,IPFS如果发现好几个节点都有同一份文件,会自动将大文件打散为小的碎片,分别存储在这些节点中,一方面节省了节点的存储成本,另一方面客户端可以同时从不同计算机下载,也提升了下载的速度。

小结

IPFS的出发点,是希望把我们能够把资源进行合作共享,而非尝试各自维持自己的伺服器,如此一来,存储的速度大大提升,各项作业的摩擦成本则可以大幅降低。

只是目前这项试行方案,如要真正运用到商业层面还有很长一段路,毕竟,现在用户使用HTTP已经很舒服了,不见得有置换的动机。

参考文章:
http://mp.weixin.qq.com/s/u2rWjq8BPGB0rs9Pww1KhQ
http://doc.mbalib.com/view/e61cdcb30f7ffdb10c63d26b24e263a2.html
http://www.jianshu.com/p/ddccae89a49a

    原文作者:Peihan
    原文地址: https://www.jianshu.com/p/66143333c0af
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞