找回密码
 立即注册

扫一扫,访问微社区

搜索

为什么需要IPFS?IPFS的工作原理?

ipfs001 2018-10-11 18:00:59 显示全部楼层 阅读模式

  IPFS想要实现的是一个去中心化的分布式web网络。内容不再通过中心服务器响应,而是以P2P的方式从邻近的对等节点拉取;同时全网维护一个统一的路由表,每个节点作自我调整,以保证节点与数据的动态增删、完整性、去冗余等细节问题。
  为什么需要IPFS
  根据官方网站的介绍,传统的HTTP协议具有以下不足之处:
  HTTP的效率低下,并且服务器昂贵。使用HTTP协议从中心化的服务器集群中一次需要下载一个完整文件,而P2P的方式可以从许多peers(对等节点)中下载不同的数据块,经研究可以节省60%的带宽成本。
  历史文件被删除。网页的平均寿命是100天,部分网站数据不能得到永久保存。这也是受限于中心化服务器的高存储成本。
  HTTP的中心化限制了发展机会。如下图,全球互联网的域名解析服务,根源上是由13个根服务器所提供。同时主要的云服务也由几家重要的云服务商所提供。政府和机构可以在这些中心化集群前截取HTTP消息包,窥探和监控网民的生活;黑客们也可以通过DDOS等手段攻击中心化的服务器集群,网络瘫痪的案例屡见不鲜。
  网络应用过于依赖主干网。当主干网因为不可抗力因素造成拥塞或宕机等,无法继续服务时,应用也会受到影响。
  HTTP协议诞生20年来,协议也从1.0到2.0,但web应用本质上还是基于B/S架构的模式,它的根本劣势仍然无法得到很好的改进。
  IPFS(www.ipfsfirst.com)的工作原理
  IPFS的出现,则是为了解决中心化web的这些问题。它从本质上改变了网络数据的分发机制。
  每个文件及其其包含的所有数据块,都会转换为一个散列字符串,称为哈希指纹。
  每个节点维护一张DHT(分布式哈希表),包含相应数据块与目标节点的对应映射关系。整个哈希表被组织成二叉树,平均查询联系节点的复杂度是O(log2N)。例如要查询10000万节点只需20跳。
  基于内容寻址而非域名寻址。只需要通过文件或数据块的哈希值,IPFS便可自动在全网节点中找到拥有这些数据块的节点,并从节点上拉去数据。
  IPFS使用一个叫IPNS的分布式命名系统,将难于记忆的数据哈希值映射为易于记忆的字符串。这可以类比于域名与IP地址的映射关系。
  IPFS具有如下一些特性:
  相同数据内容被赋予唯一的哈希指纹,通过哈希指纹的对比即可判断数据块是否一致。
  节点本身使用类似git的版本控制系统,来管理本地文件与数据块。这既保证了数据块的去冗余,又提供了可追溯的历史版本。
  IPFS节点在维护哈希路由表、账本一致性方面,需使用区块链技术,一方面是在动态增减内容、节点方面与全网达成共识;另一方面是为激励机制中代币发行与账本管理建设基础平台。
  通过发行代币来激励节点存储稀有的数据块。可参考filecoin.io。
  节点不仅可从其他节点拉取所需数据,同时也可将该新数据存储在自己节点,供其他节点下载。
  一个剧情
  小明想要观看一部xxx.avi的视频
  小红和小刚以前看过该视频,于是他们将视频文件加入IPFS网络,得到相同的哈希指纹B。(现实中,若该视频在周边好几个节点都持有,IPFS会把文件分块去重,节省节点的存储成本)
  小明在本地通过哈希指纹B(形如 /ipfs/B 的路径名),试图从IPFS网络拉取该视频。小明不关心最终的视频数据来自哪些节点。
  小明的节点索引DHT中的哈希值所对应的节点列表,并行地从这些节点下载部分数据块。(注意这里是部分,IPFS网络会自动从各节点下载部分数据块,再由本地的manager拼成完整的文件)
  小明的节点获得了这个视频,不仅自己可以观看,还可以为其他人提供资源。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

0关注

0粉丝

35帖子

发布
广告招商 TEL: 13800008888