IPFS的的”宏伟”目标是取代HTTP, 那么先来看看IPFS是如何工作的?

  1. IPFS为每一个文件分配一个独一无二的哈希值(文件指纹: 根据文件的内容进行创建), 即使是两个文件内容只有1个比特的不相同, 其哈希值也是不相同的.所以IPFS是基于文件内容进行寻址, 而不像传统的HTTP协议一样基于域名寻址.

  2. IPFS在整个网络范围内去掉重复的文件, 并且为文件建立版本管理, 也就是说每一个文件的变更历史都将被记录(这一点类似版本控制工具git, svn等), 可以很容易个回到文件的历史版本查看数据.

  3. 当查询文件的时候, IPFS网络根据文件的哈希值(全网唯一)进行查找. 由于每个文件的哈希值全网唯一, 查询将很容易进行.

  4. 如果仅仅使用哈希值来区分文件的话, 会给传播造成困难, 因为哈希值不容易记忆, 就像ip地址一样不容易记忆, 于是人类发明的域名. IPFS利用IPNS将哈希值映射为容易记的名字

  5. 每个节点除了存储自己需要的数据, 还存储了一张哈希表, 用来记录文件存储所在的位置. 用来进行文件的查询下载.

我们在<什么是IPFS?(一)>里面说了 HTTP 及一些中心化服务器的缺点.

那么问题来了, IPFS是如何来解决这些缺点的?

1 下载速度快, 不再依赖主干网, 中心化服务器

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

2 存储空间变得非常便宜: 

由于IPFS使用的是区块链技术, 利用 Filecoin(为了的文章中会将如何获取filecoin, 也就是挖矿)来激励矿工分享自己的硬盘, 并且IFPS从全网去掉了冗余存储(从整个网络空间考虑, 这将大大节省网络存储空间), 将来的IPFS存储将会变得非常便宜(与我们现在的云盘, 各种中心化的CND相比较).

3 安全:

中心化服务器目前很难抵挡DDoS攻击, 当大量的访问请求从四面八方涌来, 中心化的服务器几乎会在一瞬间瘫痪, 做过运维的同学应该深有感触, 比如每年双11, 不能睡觉的除了阿里, 腾讯的技术同学, 还有整个银行业的小朋友. 巨大的访问量随时可能造成服务器宕机. IPFS天生就拥有抵挡这种攻击的能力. 因为所有的访问将会被分散到不同的节点. 甚至攻击者自己也是节点之一. 某种程度上讲, IPFS甚至能抵挡量子计算的攻击.

4 开放: 

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

2017-12-05 18:10 飞向未来

作者飞向未来,致力于IPFS/Filecoin在中国的技术推广,他的微信公众号和社群,目前是中国最活跃最顶级的IPFS社群。作者飞向未来是圆方圆区块链的特邀嘉宾,所有转载都已经得到飞向未来本人授权。

更多飞向未来导师的公众号,可以在IPFS指南公众号中找到。

圆方圆链圈

 

最新文章

  1. (20160601)开源第三方学习之SVProgressHUD
  2. js的offsetWidth,offsetHeight,offsetLeft,offsetTop
  3. org.hibernate.PropertyValueException: not-null property references a null or transient value:
  4. seaJS学习资料参考
  5. cocos2dx 2.0+ 版本,IOS6.0+设置横屏
  6. Convert.ToInt32()和int.Parse()的区别
  7. iso-开发基础知识-5-适配器
  8. Footer固定在页面底部(CSS)
  9. Flex4 flash builder保留MXML转换的AS代码
  10. IE10去掉input的type=”text”输入内容时出现的小叉号(X)和type=”password”出现的小眼睛图标
  11. Selenium 设置浏览器下载 Firefox 和Chrome
  12. Apache 403 错误解决方法-让别人可以访问你的服务器
  13. nginx系列2:搭建nginx环境
  14. python while for else
  15. 一个在linxu自动切换ip的脚本
  16. mobx.js 使用教程-react
  17. glibc -The GNU C Library
  18. PHP微信公共号自定义菜单。
  19. [剑指Offer]快排
  20. Spring+Junit测试用例的使用

热门文章

  1. CEPH s3 java sdk PUT对象并在同一个PUT请求中同时设置ACL为 Public
  2. RTlinux3.2安装
  3. HI3531例子程序说明
  4. Count:2org.apache.batik.transcoder.TranscoderException: null
  5. dojo加载树报错
  6. Windows Developer Day Review
  7. 【BZOJ1006】神奇的国度(弦图)
  8. [Baltic2004]数字序列
  9. [BZOJ2503][HAOI2006]均分数据
  10. [BZOJ3680][JSOI2004]平衡点 / 吊打XXX