IPFS究竟颠覆了什么?  

https://mp.weixin.qq.com/s/JWFJxe31v-ke-KKsghjxKA

之前聊过热门项目Filecoin,详见《投资Filecoin前的一盆冷水》。Filecoin项目是基于IPFS协议开发出来的应用,IPFS协议能否成功推广将会很大程度地影响Filecoin项目的价值。因此,这次我们来深入了解一下IPFS是什么、做了些什么,以及是否有推广前景。

位于应用层的IPFS 

IPFS全称InterPlanetaryFile System,又叫星际文件系统,是一种创建分布式储存和共享文件的互联网应用层协议。                           

图片1:互联网的五层结构

当我们的PC(客户端)发起一个请求时,会从第5层依次向下打包信息,最后从第1层的网线输出出去。反之当收到一个信息时,也是从第1层开始向上层层解析,最终到第5层供用户操作。简而言之越下面的层越靠近硬件,越上面的层越靠近用户的使用。互联网的分层设计有一个好处:上层的变动对下层结构没有任何影响,即无需下层结构发生改变。这降低了对硬件或系统的更新要求。

而IPFS属于第5层应用层的协议,它的愿景是补充甚至取代HTTP协议,以打造一个更安全、更开放的互联网环境。

 

IPFS与HTTP的比较 

下面我们通过分析“打开网页”这个动作,来了解一下这两个协议有什么不同。 

  • 打开一个HTTP网页

简单来说,HTTP协议是用来传输HTML文件的协议。由于网页文件几乎都是用HTML语言编写的,HTTP协议被广泛应用于万维网的各类服务中。下图展示了个人电脑(客户端)打开HTTP网页的所需经历的四个步骤。

图片2:打开一个HTTP协议网页的步骤

1. 在个人电脑的浏览器(客户端)输入网页域名website.com,由于客户端不知道域名所对应的服务器IP地址是多少,所以无法直接发送请求到网页所在的服务器。因此需要先向DNS服务器发问,由DNS服务器把域名翻译成IP地址返回给客户端(如果直接知道对应的IP地址,则可以省略1、2步骤)。

2. DNS服务器中存储着一个域名和IP地址的对应表格,查询到website.com所对应的IP地址并返回给客户端。

3. 知道IP地址后,客户端就知道了储存网页的服务器地址,所有关于website.com的内容都储存在这个服务器中。客户端再次发出请求到网页文件所在服务器要求返回与website.com有关的HTML文件。

4. 所有HTML文件被传回客户端,这样我们就可以在浏览器中浏览website.com了。

 

结合上面的过程可知,HTTP协议是一种中心化的协议,它一次只能从一台服务器中获取文件,这导致几乎所有的网页信息都储存在提供商提供的服务器中。一旦控制了这些服务器提供商就可以轻松的控制用户数据,而这些文件服务器中被删除,用户就再也无法查看了。

  • 打开一个IPFS网页

打开IPFS网页则会有些许不同,见下图:

图片3  IPFS网页的打开步骤

1. 当用户试图打开website.com这一网页时,客户端会向全网广播寻找website.com的网页文件(通过输入该文件的CID*来寻找)。

*CID全称是Content Identifier,又称内容标识符,是一组哈希值。它采用哈希函数的算法,依据文件的内容,对文件的做出唯一标识。只要文件做了一点点修改(哪怕只有一个字节),CID也会变得完全不同。它不包含文件储存位置的信息。

2. IPFS在DHT*中找到储存有该CID对应文件的所有设备的IP地址,并返回1个或多个IP地址。

*DHT全称Distributed Hash Table,又叫分布式散列表。在这里是特指文件内容的CID和文件所在设备的IP地址的对应表。DHT是分布式的,网络中没有哪个节点存有整张表格;每个节点会储存一部分表格。

3. 客户端向IP地址的设备发出请求,传送回website.com的文件。

4. 文件被传回客户端,这样网页website.com就在浏览器中被打开。

从流程上看,HTTP是已知存在一个地址,向网络寻求这一地址所储存的文件,正因如此HTTP下提供文件的地址应当是唯一的,而在这地址中储存的文件可以替换的。而IPFS是已知存在一个文件,向网络寻求持有这一文件的1个或多个地址,进而向这些地址索要文件,因此IPFS下提供文件的地址可以不唯一,但最终不同地址提供的必定是同一个文件。

所以和HTTP相比,IPFS最大的特点是可以有多个提供website.com网页文件的地址,这意味着无需一台中心化的服务器(用以提供固定的地址)来返回website.com网页文件。当一台电脑在IPFS网络向全网广播“我有这个文件”时,其IP地址和文件CID会被加入DHT中。那么当很多设备都声明拥有相同的文件时,这个文件便可以从不同的设备下载。只需一台设备在线就能保证这个文件能被浏览到。而更多的数据来源,也可以让获取方选择网络速度更快的地址来获取该文件。因此与HTTP只能从一台服务器下载相比,使用IPFS网络将使文件获取速度和可靠性都得到巨大的提升。

 IPFS的域名管理 

细心的朋友会发现,既然一点点内容上的改动就会导致CID的变化,那么当一个文件更新后,它的“地址”(即在打开网页时所需输入的文件CID)就会变化,如果我们想访问这个文件最新的版本,我们就需要在每次更新后用新的“地址”打开。另外,CID是一长串哈希值,非常不便于阅读和记忆(如图4)。为此,IPFS需要通过引入域名系统来使访问更加便捷,这催生出了IPNS域名和DSNLink域名系统。

图片4 记不住的CID哈希值会随着文件的更新而变化

  • IPNS域名系统

为了适应IPFS“内容寻址”这一特性,IPNS(InterPlanetary Name System)这种域名系统被提了出来。IPNS的域名是一个公钥的哈希值,利用与这个公钥相关的私钥来关联文件的内容(CID)。这个哈希值好比一个指针,会始终指向最新发布的内容,这样就算文件有更新我们也不用每次都输入不同的地址了。IPNS系统可以通过DHT来实现,保证了网络的域名解析过程也是完全去中心化的。

图片5 IPNS的域名不会变化并自动指向最新版本的文件

 

图4的CID会变成图5这样,但是这个哈希值还是很难阅读和记忆,所以还可以用更高效,更容易阅读的DNSLink域名系统。 

  • DNSLink域名系统

在HTTP的地址寻址的系统中,客户端需要通过IP:PORT这种格式来访问网页所在的服务器,地址一般长这样:http://18.205.129.69:80 。在HTTP网页中,无论文件怎么更新都可以通过这个地址来访问。但是和哈希值一样,这个地址很难阅读和记忆,因此我们会采用website.com这种适合人类阅读的域名,再通过DNS解析将其还原成HTTP可以理解的IP地址格式(即上文HTTP打开网页中的第1、2步)。

 

目前IPFS也正引入类似的域名方式来简化CID的记忆难度。通过引入DNSLink域名系统,网页域名可以与CID标识或者IPNS公钥哈希映射。如此的好处是网页可以通过人们熟悉的域名方式进行访问,但相应的将会在访问网页的时候将会多一步域名解析的过程。

 

 IPFS究竟颠覆了什么 

·  技术并非颠覆

IPFS并未在技术上有颠覆性的创新,是一系列现有协议的有机合集。其中最重要的两个协议分别是:BitTorrent的点对点共享文件系统和Git版本控制系统。从IPFS网页的打开流程可以看出,点对点分享文件内容的形式承袭自BitTorrent,也就是熟知的BT下载,而IPFS利用DHT后,每个客户端(服务器)只储存DHT表格的一部分,提高了去中心化水平。IPFS的另一个重要特性内容寻址则承袭于Git的版本控制系统,通过利用哈希加密文件的内容使其产生全局唯一的标识符,从而让内容变得可以寻址。IPFS通过充分利用已有的协议与技术努力打造出一个与HTTP不同的互联网应用协议。

·  看不见的改变

IPFS作为一个内容寻址的协议,改变了我们在互联网中搜寻文件的方式。但它本质并没有改变我们访问网页的方法,我们还是需要找到储存文件的设备的IP,通过访问这个设备来获取文件。IPFS作为第5层应用层的协议是不会改变第3层网络层的IP协议的,改变的是获得IP地址的方法,从HTTP的地址寻址变成了内容寻址。寻的还是“址”(IP地址),只是“寻”的方式不同了而已。需要强调一点,IPFS并不等同于区块链。协议本身不是非要搭载在区块链上才能运行,只是整个协议去中心化的特质非常适合应用区块链来实现。

 

·  未来还未到来 

IPFS要多久才能大规模应用于互联网呢?答案是:很久。互联网本身的惯性太强,即使IPv6的需求这么旺盛,多年来也没有做到全网推广,更何况IPFS还远不够安全,高效。分布式共享和储存文件要还面临盗版和非法文件的监管的问题。在非常漫长的时间内,互联网的主角依然是HTTP,IPFS就像BT下载一样,会有一众忠实的用户但尚不会成为主流。

参考资料:

[1] IPFS——它能取代HTTP协议?,https://www.jianshu.com/p/ddccae89a49a

[2] 浅入浅出BitTorrent协议 | Azard的博客,http://www.360doc.com/content/17/0617/14/19227797_663927782.shtml

[3] IPFS Docs--DNSLink, https://docs.ipfs.io/concepts/dnslink/

[4] Detailed TCP/IPCommunication Example,https://microchipdeveloper.com/tcpip:detailed-tcpip-communication

[5] TCP/IP Five-Layer SoftwareModel Overview, https://microchipdeveloper.com/tcpip:tcp-ip-five-layer-model

[6] 戴嘉乐:详解IPFS的本质、技术架构以及应用,https://blog.csdn.net/u012357002/article/details/80161042?utm_medium=distribute.pc_relevant_download.none-task-blog-blogcommendfrombaidu-6.nonecase&depth_1-utm_source=distribute.pc_relevant_download.none-task-blog-blogcommendfrombaidu-6.nonecas

[7] IPFS Gateway,https://developers.cloudflare.com/distributed-web/ipfs-gateway

[8] How does Resolution andRouting work with IPFS?, https://github.com/ipfs-inactive/faq/issues/48

[9] HTTP is obsolete. It'stime for the Distributed Web, https://blog.neocities.org/blog/2015/09/08/its-time-for-the-distributed-web.html

[10] Address IPFS on the Web,https://docs.ipfs.io/how-to/address-ipfs-on-web/#dweb-addressing-in-brief

[11] Understanding IPFS inDepth(3/6): What is InterPlanetary Naming System(IPNS)?,https://medium.com/hackernoon/understanding-ipfs-in-depth-3-6-what-is-interplanetary-naming-system-ipns-9aca71e4c13b

[12] IPFS Docs--InterPlanetaryName System (IPNS), https://docs.ipfs.io/concepts/ipns/#example-ipns-setup

[13] IPFS之技术背景Git版本控制系统, https://www.liankexing.com/q/7835

[14] Ten terrible attempts tomake the Inter Planetary File System human-friendly,https://hackernoon.com/ten-terrible-attempts-to-make-the-inter-planetary-file-system-human-friendly-e4e95df0c6fa

[15] BitTorrent--百度百科,https://baike.baidu.com/item/BitTorrent/142795?fr=aladdin

[16] 阮一峰的网络日志--互联网协议入门(一),http://www.ruanyifeng.com/blog/2012/05/internet_protocol_suite_part_i.html

[17] 阮一峰的网络日志--互联网协议入门(二),http://www.ruanyifeng.com/blog/2012/06/internet_protocol_suite_part_ii.html

[18] 构成IPFS的两个重要协议,你是否了解呢?

https://mp.weixin.qq.com/s/0D9QDuD5Y0HoX5j21eDYOw

[19] Quick explanation of dnslink in IPFS,https://www.youtube.com/watch?v=YxKZFeDvcBs

 

————  e n d ————

 

希望大家可以关注微信公众号更加方便交流。公众号的文章也会率先更新~

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值