LOADING...
LOADING...
LOADING...
当前位置: 玩币族首页 > 行情分析 > IPFS凭什么有望取代HTTP?

IPFS凭什么有望取代HTTP?

2020-02-13 引擎存储 来源:火星财经

IPFS(TheInterPlanetary File System)是一种点到点的分布式文件系统,它连接的计算设备都拥有相同的文件管理模式。从某种意义上来说这个概念跟Web的最初理念很类似,但是实际上IPFS更像是互相转发Git目标的单个Bittorrent用户群。IPFS具备成为internet子系统的素质,通过合理配置可以完备甚至替代HTTP。这听起来已经有些不可思议,但其实它可以做到更多。

IPFS的开发目前处于alpha试验阶段,还没能替代现存的网站存储系统。就像其它复杂的新技术一样,有很多改进要做。但IPFS不是空想,它一直在实际运行着,你可以试着在自己的电脑上配置IPFS,你的加入或许会延续某个网站的寿命。

尽管IPFS的开发还不十分成熟,但仍有不少人认为:IPFS会取代HTTP(和其他一些组件一起)。虽然取代HTTP听起来很遥远,但是我们应当看到HTTP已经很破旧了,继续长期甚至永远地使用HTTP才是更荒谬的事。所以我们应当应用当今计算机技术,着力解决分布式带来的诸多问题,为Web服务设计更好的协议。

HTTP(超文本传输协议)是全世界统一的全局信息格式协议,它的制定为分发和显示信息提供了规范。HTTP将发布信息的成本降到了最低,扰乱了经济、政治、文化管理机构对信息(音乐、思想、视频、新闻、游戏等等)传播的控制。然而通过使获取信息的渠道更加平等、过程更为容易,HTTP实际上使我们的文化产业更加蓬勃有生机,很难想象没有了它生活将会变得怎样。


HTTP堪称史上最伟大的发明之一,这点无可否认。但是HTTP具有不可回避的缺陷,由于在可分布性和可持久性方面的缺失,它多次在我们面前崩溃,因此难以成为人类知识总和的永久载体。

HTTP分发内容的方式在根本上是有缺陷的,尽管经历了性能调优、CA证书SSL以及其它一些手段,也都没能改善。HTTP/2的改进在一定程度上缓解了缺陷,但是保守的升级并不能根本地解决问题,反而突显了HTTP的老旧。

因此这促使人们想要采用一种新的基础协议代替HTTP来治理网络环境,提供更好的Web服务。这也是大量分布式存储网络非常希望IPFS能成为那个替代者的重要原因。

HTTP是脆弱的。我们时常会看到如下的场景,当你想要在网络上找一个文档或者信息的时候,发现已经遗失了或者人为遭到清除了。

下图是使用Web时常见的场景:

即使没有读过HTTP协议的具体内容,大多数人也都了解404错误意味着什么。它是HTTP协议的错误码,表明网页不在服务器的指定位置。能够见到404错误说明你还有一定的运气,因为有些时候服务器连这样的信息也不会显示。

更可怕的是除非Internet Archive做了备份,否则要访问的网页可能永远也找不到,就这样丢失了。通常一个网页诞生的时间越早,回应404错误的可能性就越大。

很多时候,404犹如一个网络世界里冷血的数字墓碑,埋葬了当时的认知、美感或者愚昧。

还有一个重大缺陷是集中管理的Web服务器不可避免的会关机或者故障。而关机的原因则有很多,或是域名的所有者变更,或是计算机崩溃却没有备份。若是取消集中管理,让网站的拥有者自己搭建HTTP服务器,情况也不会好转,甚至可能更糟。

在这种情况下,轻则造成经济损失,而严重的宕机则会使许多有用的信息就这样从人间蒸发。然而即使丢失的内容是荒谬的废话或是过时的言论,那也是我们人类经历过的历史,不该这么轻易的丢掉。

另一个更大的命题是HTTP趋于超中心化。通常为了避免数据被不断侵蚀的状况,人们开始依赖于使用管理更完善的大型中心服务器,通过制作大量冗余备份来获得可靠性。这一方案在短期内是十分有效的,然而却在长期运转中滋生了新的一系列问题。

当初人们想要建立的是非中心化的Web,可是如今使用的Web却越来越集中于少数一些服务器中心。造成的后果是,类似美国国家安全局这样的机构只要截取这些服务器中心的通信信息,就可以得到大部分用户的数据。对于政府来说,只要在边境路由上设置内容审查,就可以阻断访问中心服务器的连接。同时网络通信遭遇DDoS攻击的风险也大大增加。

尤其是美国的斯洛登事件爆出以后,即便线上国度不断繁荣,人们也用信息的手段影响并推动世界,但是一些机构和组织利用HTTP的漏洞进行渗透,窥探和监控网民的生活,并且阻碍网民获取对自身不利的信息。

这些都使得人们对分布式网络存在着诉求。

相反分布式的网络可以减少管理部门的干涉,恢复人们的网络自由,同时也会减少单点故障带来的风险。

最后一点是HTTP的效率不高。我们日常所有的网络使用,尤其是下载视频都要耗费大量的网络流量,而且每下载一次都要付费,这样一来费用就很贵。

在当前日益可视化的文化潮流中,实际情况下花费可能还要高,对于谷歌这样的大公司来说钱可能不是太大的问题,不过对于一些中小小公司这就是个天文数字。

虽然HTTP降低了发布信息的成本,但它仍然需要大量金钱来运转,而且花费越来越多。在没有达到一定规模的情况下,集中由数据中心向外传播信息是非常昂贵的。若是我们能把同一ISP网络下的个人电脑都变成CDN内容提供者,从而取代数据中心,像一些视频就可以在ISP网络内部传播,就不需要接入到internet主干网,从而可以降低大量成本。而IPFS就具备这样的功能。

另外HTTP造成了Internet主干网被过度依赖,由于Web内容是超中心化的,数据中心的运作十分依赖Internet主干网络。除了会受到政府的审查和屏蔽之外,可靠性问题也大量存在。尽管已经采用了冗余备份的手段,可是一旦主干网崩溃,或是路由表错乱,依然会造成严重的后果。

这至少说明Internet主干网是不完全可靠的,一方面它很容易遭受攻击,另一方面一旦重要的线路瘫痪,大量的网络服务都会受到影响。

那么面对这一系列的困境,IPFS给出了解决方案。

IPFS从根本上改变了查找的方式,这是它最重要的特征。使用HTTP我们查找的是位置,而使用IPFS我们查找的是内容。

举个例子:服务器上运行着一个文件https://neocities.org/img/neocitieslogo.svg,遵照HTTP协议浏览器首先会查找服务器的位置(IP地址),随后向服务器索要文件的路径。这种体系下文件的位置取决于服务器管理者,而用户只能寄希望于文件没有被移动,并且服务器没有关闭。

IPFS的做法则是不再关心中心服务器的位置,也不考虑文件的名字和路径,只关注文件中可能出现的内容。用户上传的文件将会形成一串哈希值,哈希值直接反映文件的内容,哪怕只修改1比特,哈希值也会完全不同。

当IPFS被请求一个文件哈希时,它会使用一个分布式哈希表找到文件所在的节点,取回文件并验证文件数据。虽然早期的分布式哈希表曾遭受过女巫攻击,但是已经有一些新的方案来实现,我相信这个问题可以解决。

IPFS是通用目的的基础架构,基本没有存储上的限制。大文件会被切分成小的分块,下载的时候可以从多个服务器同时获取。IPFS的网络是不固定的、细粒度的、分布式的网络,可以很好的适应内容分发网络(CDM)的要求。这样的设计可以很好的共享各类数据,包括图像、视频流、分布式数据库、整个操作系统、模块链、8英寸软盘的备份,还有最重要的——静态网站。

IPFS文件还可以抽象成特殊的IPFS目录,从而标注一个可读的文件名(透明的映射到IPFS哈希),在访问的时候会像HTTP一样获取一个目录索引。在IPFS上建立网站的流程和过去一样,而且把网站加入到IPFS节点的指令只需要一条指令:ipfs add -r yoursitedirectory。网页间的连接不再需要人去维护,IPFS自带的查找可以解决。

用户还可以关联数据到IPFS,IPFS不会要求每一个节点都存储所有的内容,节点的所有者可以自由选择想要维持的数据。这就像是书签一样,在备份了自己的网站之外,自愿的为其他的关注的内容提供服务,不同的是这个书签不会像以前一样最终变得失效。

IPFS节点间的拷贝、存储和网站支援都很容易,只需要使用一条指令以及网站的哈希,例如:ipfs pin add -r QmcKi2ae3uGb1kBg1yBpsuwoVqfmcByNdMiZ2pukxyLWD8,剩下的IPFS会搞定。

如果IPFS得以普及,节点数达到一定规模,即使每个节点只存放一点点内容,所累计的空间、带宽和可靠性也远超HTTP能提供的。随之而来,分布式Web会变成地球上最快、最可靠、最大的数据仓库,人类知识也就再也不会湮灭,亚历山大图书馆永远不会倒塌。

当然不得不提到一个问题,如何实现HTTP到IPFS的过渡?这就要提到IPFS-HTTP网关,担任着新旧Web之间的桥梁。

IPFS在实现上加装了HTTP网关,使得现有的浏览器也可以访问IPFS,上文中举过例子。所以无需等待,现在就可以开始使用IPFS作为存储、分布和搭建网站的设施。

那么如何使用IPFS?

现有的IPFS实现是实验性的,通过IPFS-HTTP网关可以直接访问。由于IPFS哈希是随着更新改变的,我们可以自动的获得旧版本网站的历史档案,这些内容也会被提供出来。

不过还没有到欢呼的时候,IPFS能取代HTTP之前还有很多的实际工作要做。目前最紧迫的任务不是畅想未来,而是要脚踏实地接受Internet Archive的挑战——实现分布式网络。

—-

编译者/作者:引擎存储

玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。

知识 ipfs HTTP
LOADING...
LOADING...