Hello IPFS:大白话 IPFS(二)

作者 | 星际云盒

来源 | IPFS白皮书

在大白话IPFS(一)里面,我们讲了HTTP存在的弊端,以及IPFS是如何克服这些弊端的。了解完那两方面,我们就不禁会问,那IPFS是怎样工作的呢?

这篇文章我们就来讲讲IPFS协议是如何工作的。

基于内容寻址

众所周知,HTTP协议是基于域名寻址,即我们需要输入搜索内容所在的服务器对应的IP地址,然后服务器响应我们的请求,返回我们想要访问的网页内容。因为我们搜索的是某个IP地址,而且并不知道那个IP地址是否仍保存着我们想要的内容,所以会经常遇到返回一个404页面(即搜索内容已被删除),上一篇文章有说到的这点。

而IPFS协议的寻址方式是——基于内容寻址,意思是,我们是直接搜索我们想要获取的内容本身,而不是它所在的服务器IP地址。

基于内容寻址——是指搜索内容本身,IPFS网络中的每一个内容都对应着唯一的哈希值(HASH),我们通过搜索内容对应的哈希值,即可搜索到我们的想要的内容本身。

每一个被上传到IPFS网络上的文件,系统都会用哈希算法对该文件进行加密,然后得到一个数值,叫哈希值(HASH)。哈希值是这样的(一串64位、由数字和字母构成的数值):

00740f40257a13bf03b40f54a99398c79a664bb21cfa2870ab07888b21eeba8

每个文件的哈希值都是唯一的,即使是两个文件内容只有1bit的不同, 其哈希值也是完全不一样的。文件加密完毕后,系统会将文件进行分割与复制,最后分布式存放到若干个IPFS存储节点当中。

当我们搜索/下载内容时,IPFS网络系统就会从离我们最近的距离(这里不是物理距离,是数学距离)的若干存储节点,传输数据或者文件的碎片(不是整个文件)给我们,它是若干节点同时下载传输到我们的设备上(类似于P2P、BT技术),速度非常快。当然,从这些节点下载出来的文件碎片,最终会整合成一个完整的文件呈现给我们。

IPFS网络是一个细粒度的、不可靠的、分布式的、易联合的内容分发网络(Content Delivery Network , CDN)。这就是IPFS与HTTP的区别,传统HTTP协议是从单个中心服务器将整个文件下载传输到设备上的,下载的速度相对慢很多。

容错机制,版本控制,永久保存

上传到IPFS网络的文件会被分割成若干块,那如果其中的一块意外被损坏了,怎么办呢?不用担心,IPFS系统有一个容错机制,容错机制的意思就是,假设一份文件被分割成10份,其中4份损坏了,那么还是可以根据剩下的6份还原出原文件来。所以说,你的文件是可以被永久保存在IPFS网络里面的。

假如我上传了两份一样的文件,那岂不是存在两份一样的文件了?不会的,IPFS会在整个网络范围内删掉冗余重复的文件, 并为相同文件建立版本管理, 也就是说,每一个文件的变更历史都将被记录(类似版本控制工具Git,SVN等),用户可以很容易回到文件的历史版本去查看数据。并且,每个节点除了存储了数据以外,还存储了一张哈希表,用来记录文件存储所在的位置,便于进行文件的查询下载。

IPNS命名系统

如果我们要在IPFS网络上查询想要的文件或信息,只要输入对应的哈希值,就可以检索到这个文件。由于这个哈希值是全网唯一的,查询起来的速度非常快。

但是,如果使用哈希值来区分文件的话,我难道要记住那么多的一串串的哈希值?一个哈希值可是有64位的数字加字母啊,记起来多麻烦啊。假如我在IPFS网络上搭建了一个网站,生成一个这么复杂的哈希值,这不利于宣传啊,也会造成传播困难。

事实上,当然不会这样。因为哈希值不容易记忆,就像IP地址一样不容易记忆。所以Protocol Labs协议实验室弄出了IPNS(InterPlanetary Name System),IPFS的域名命名系统,这样,IPFS就可以利用IPNS将哈希值映射为容易记的名字了。

用一个例子演说IPFS的工作流程

比如我想观看一部叫ABC的视频:

1. 加入IPFS网络,在网络中搜索叫ABC的文件(ABC是通过IPNS映射得来的名字)。

2. IPFS网络迅速索引区块链上的哈希值,反馈出搜索结果。

3. 你支付一点Filecoin代币,获取ABC文件缓存到本地,ABC文件不是从云或者服务器上面下载下来的,而是由IPFS网络的参与者贡献的,它可能是离你最近的一个网络节点。这样的好处是,不仅不需要中间服务器,而且网络传输效率最快。

4. 如果ABC文件恰巧你周边好几个人都有,那IPFS网络会把这个文件拆成一小片一小片,节省了这些节点的储存成本,也让你用最具效率的方式下载到该视频。

5. 这个ABC视频文件缓存在你自己电脑里,不仅自己可以观看,同时也为其他需要ABC这部视频的人提供资源。

6. 另外,你也可以自己发布新内容到这个网络上,并且有机会获得Filecoin代币,因为你也为网络做了贡献。

通过这样的方式,实现了整个网络的文件利用达到最优效率。

下一篇将继续普及IPFS干货

欲知后事如何,且听下回分解。

关注 星际云盒

获取 IPFS/Filecoin 干货

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180807G1GVN200?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券