区块天下 区块链新闻 一篇文章带你深入了解IPFS(转发)

一篇文章带你深入了解IPFS(转发)

什么是IPFS?

星际文件系统IPFS(InterPlanetary File System)是一个面向全球的、点对点的分布式版本文件系统,目标是为了补充(甚至是取代)目前统治互联网的超文本传输协议(HTTP),将所有具有相同文件系统的计算设备连接在一起。原理用基于内容的地址替代基于域名的地址,也就是用户寻找的不是某个地址而是储存在某个地方的内容,不需要验证发送者的身份,而只需要验证内容的哈希,通过这样可以让网页的速度更快、更安全、更健壮、更持久。

HTTP存在的弊端

1. HTTP的效率低下,并且服务器昂贵。

使用HTTP协议从中心化的服务器集群中一次需要下载一个完整文件,而P2P的方式可以从许多peers(对等节点)中下载不同的数据块,经研究可以节省60%的带宽成本。

2. 历史文件被删除。

网页的平均寿命是100天,部分网站数据不能得到永久保存。这也是受限于中心化服务器的高存储成本。

3. HTTP的中心化限制了发展机会。

全球互联网的域名解析服务,根源上是由13个根服务器所提供。同时主要的云服务也由几家重要的云服务商所提供。政府和机构可以在这些中心化集群前截取HTTP消息包,窥探和监控网民的生活;黑客们也可以通过DDOS等手段攻击中心化的服务器集群,网络瘫痪的案例屡见不鲜。

4. 网络应用过于依赖主干网。

当主干网因为不可抗力因素造成拥塞或宕机等,无法继续服务时,应用也会受到影响。

IPFS的工作原理

IPFS的出现,则是为了解决中心化web的这些问题。

基于内容寻址而非域名寻址

当文件被上传到IPFS网络,它被赋予一个哈希值,这个哈希值类似于我们的身份证号,他是独一无二的,它是从文件内容中被计算出来的。即使文件内有一个标点的改动,被计算出来的哈希值也是完全不同的,就像一对双胞胎,也拥有不同的身份证号。

于是,在ipfs网络中查找文件就是在ipfs网络中寻找哈希值,它通过哈希表能快速的找到存储内容的节点,从中找到相应内容。

IPFS使用一个叫IPNS的分布式命名系统

IPFS使用一个叫IPNS的分布式命名系统,这可以类比于域名与IP地址的映射关系,将难于记忆的数据哈希值映射为易于记忆的字符串

IPFS是一个分布式的文件存储系统

ipfs网络里的下载,是一种类似迅雷下载的技术(p2p下载)。当文件上传到ipfs网络,这个文件会被分散成很多份,每一份都存在全国各地不同的节点中,每个节点都有这个文件的一部分。节点的存储空间有上百G甚至几个T,下载文件的时候,就从每个节点同时获取数据,这叫做去中心化存储,速度非常快。

IPFS发行了一种Filecoin代币,只要你帮助他们存储文件,那么就能获得Filecoin奖励。有了这个奖励机制后,我们只需要共享闲余的存储空间就能获得相应的回报,这也促使大家愿意为ipfs的节点发展贡献自己的一份力量

每个节点维护一张DHT(分布式哈希表)

Ipfs全网络里的每个节点都有一张DHT(分布式哈希表),这张表包含相应查找内容(哈希值)与目标节点(哈希值存在的位置)的对应映射关系。整个哈希表用二叉树的算法,平均查询联系节点的复杂度是O(log2N)。例如要查询10000万节点只需20跳,寻表的速度非常快,所以如果你要查找一个内容很快就可以帮你遍历到,搜索到结果

IPFS解决了哪些问题?

1.下载速度快

整个IPFS系统是一个分布式的文件存储系统, 那么在下载相关数据的时候, 将从多个节点同时下载, 相比于HTTP从中心服务器的下载速度要快很多, 大家都用过P2P下载(比如: 迅雷, BitTorrent), IPFS下载过程跟这个类似。

2. IPFS数据去重复性

IPFS是通过哈希值(身份证号)标记所存储内容的,所以同样的内容在IPFS主链上只有独一无二的一份,保证文件不会被重复存储,大大节省网络存储空间,存储成本自然更加便宜。

3 .安全性

中心化服务器目前很难抵挡DDoS攻击, 当大量的访问请求从四面八方涌来, 中心化的服务器几乎会在一瞬间瘫痪, IPFS天生就拥有抵挡这种攻击的能力. 因为所有的访问将会被分散到不同的节点. 甚至攻击者自己也是节点之一. 某种程度上讲, IPFS甚至能抵挡量子计算的攻击.

4 .开放性

众所周知, 比特币是一种去中心化, 匿名的数据货币, 这些特性使得比特币无法被管制, 交易无法篡改. IPFS同样, 由于是建立在去中心化的分布式网络上的, 所以IFPS很难被中心化管理, 限制. 互联网将更加开放.

用一个剧情来总结IPFS

小明想要观看一部x.avi的视频:

1.小红和小刚以前看过该视频,于是他们将视频文件加入IPFS网络,得到相同的哈希指纹B。(现实中,若该视频在周边好几个节点都持有,IPFS会把文件分块去重,节省节点的存储成本)

2.小明在本地通过哈希指纹B(形如 /ipfs/B 的路径名),试图从IPFS网络拉取该视频。小明不关心最终的视频数据来自哪些节点。

3.小明的节点索引DHT中的哈希值所对应的节点列表,并行地从这些节点下载部分数据块。(注意这里是部分,IPFS网络会自动从各节点下载部分数据块,再由本地的manager拼成完整的文件)

4.小明的节点获得了这个视频,不仅自己可以观看,还可以为其他人提供资源。

返回顶部