IPFS八层协议栈简介

根据官方的文件,我们知道IPFS有八层子协议栈,从低往高分别为身份、网络、路由、交换、对象、文件、命名、应用,每个协议栈各司其职,又互相搭配。

配个网上的图。

网络层,这是一个基础层,这一层的技术细节过多,并且也非常复杂,已经超出了软件编程的范围,可以将这一层理解为基础的网络设备或者是网络能力,并以此能力构建了点对点链接的基石,其中增加了加密传输,网络穿越,多链接混合等等技术。该层使用的LibP2P可以支持任意传输层协议,比如TCP/UDP/SCTP等。NAT技术能让内网中的设备共用同一个外网IP,我们都体验过的家庭路由器就是这个原理。从上面的描述我们应该不难得出一个结论,ipfs可以近似看做是建立在 tcp/ip协议栈传输层之上的一个应用,类似于应用层的一个存在。

身份层和路由层,把这两层合在一起是由于它们都涉及到Kademlia协议。身份层通过它生成IPFS节点,路由层通过它实现(1)存储内容的查找和(2)IPFS节点的路由查找。其实,路由层为了实现上述目的,可以根据具体的需要,动态的设计和配置所采用的路由协议,比如DHTmdnssnr甚至是dns协议等。对于ipfs的默认配置来说,对等节点身份信息的生成以及路由规则是通过Kademlia协议生成制定(后面简称KAD协议),KAD协议实质是构建了一个分布式的Hash表,简称DHT,每个加入这个DHT网络的人都要生成自己的身份信息,然后才能通过这个身份信息去负责存储这个网络里的资源信息和其他成员的联系信息。

交换层,该层主要的功能是实现节点之间相互之间的块的交换,该层使用的协议是类似迅雷这样的BT工具,但是协议实验室在此基础上进行了改进,称为bitswap,这些改进可以更好的激励各节点“多做奉献”,从而更好的维护整个ipfs网络的生态。所以想要详细了解交换层的工作机制,得先了解bittorrent协议,在此基础之上,再去学习bitswap改进的信用体系和策略。

对象层和文件层,这一层的功能是定义ipfs的数据结构。IPFS上的数据结构,大部分是以MerkleDag的结构存在的,这为内容寻址和去重提供了便利。文件层是一个新的数据结构,和DAG并列,采用Git一样的数据结构来支持版本快照。同时,该层也可实现将ipfs的数据当作unix文件系统的文件来管理。

命名层, 该层引入sfs,自证明文件系统,具有自我验证的特性(当其他用户获取该对象时,使用指纹公钥进行验签,即验证所用的公钥是否与NodeId匹配,这验证了用户发布对象的真实性,同时也获取到了可变状态),并且加入了IPNS这个巧妙的设计来使得加密后的DAG对象名可与节点绑定,把可变的内容固定在节点id这个相对固定的字符串上,实现了分布式网站等功能。

最后是应用层,IPFS核心价值就在于上面运行的应用程序,这个无需多说,filecoin就是建立在ipfs前面几层之上的一个应用,一个激励应用。期待大家能开发出更多好玩实用的应用。

 

后续我们会逐个详细讲解每个协议栈,敬请期待吧。

如果你也喜欢ipfs和区块链,可以加:

微信公众号:ipfscom

QQ群:71789361

个人微信:18191727

也可以扫码加入我的星球,我们一起亲密的玩耍

猜你喜欢

转载自blog.csdn.net/angciyu/article/details/84528374