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

配个网上的图。

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

身份层和路由层,把这两层合在一起是由于它们都涉及到Kademlia协议。身份层通过它生成IPFS节点,路由层通过它实现(1)存储内容的查找和(2)IPFS节点的路由查找。其实,路由层为了实现上述目的,可以根据具体的需要,动态的设计和配置所采用的路由协议,比如DHT,mdns,snr甚至是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

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

IPFS八层协议栈简介相关推荐

  1. 【技术解读】IPFS的八层技术架构是什么?

    [技术解读]IPFS的八层技术架构是什么? IPFS有八层子协议栈,从上至下为身份.网络.路由.交换.对象.文件.命名.应用,每个协议栈各司其职,又互相搭配. 身份层和路由层可以一起解释: 对等节点身 ...

  2. 物联网|蓝牙4.0BLE协议栈简介|IAR集成开发环境简介|IAR各版本下载链接|物联网之蓝牙4.0 BLE基础-学习笔记(2)

    文章目录 3.蓝牙4.0BLE协议栈简介 Tips: BLE协议结构图介绍 Tips IAR各版本下载链接 3.蓝牙4.0BLE协议栈简介 问题: 1.什么是LE协议栈?BLE协识栈与BLE协议的关系 ...

  3. 基于单片机的八层电梯设计

    设计简介: 本设计是基于单片机的八层电梯设计,主要实现以下功能: ①可实现通过内机按键和外机按键控制电梯到达楼层 ②可实现通过一个四相步进电机控制电梯升降,另一个四相步进电机控制电梯开关门 ③可实现通 ...

  4. 【单片机毕业设计】【mcuclub-jj-003】基于单片机的八层电梯的设计

    最近设计了一个项目基于单片机的八层电梯系统,与大家分享一下: 一.基本介绍 项目名:八层电梯 项目编号:mcuclub-jj-003 单片机类型:STC89C52.STM32F103C8T6 功能简介 ...

  5. PHP学习笔记 第八讲 Mysql.简介和创建新的数据库

    八.Mysql.简介和创建新的数据库 1.mysql简介与概要 mysql是一个小型关系型数据管理系统,开发者为瑞典mysqlab公司现在已经被sun公司收购 1.可以处理拥有上千万条记录的大型数据 ...

  6. pcb 假八层_八层板的成本却只六层的性能,PCB设计遭遇假八层该怎么办?

    在<PCB的筋骨皮>一文中,我们提出了当板厚在1.6mm及以上时,怎样避免使用假八层的叠层,而导致PCB成本增加的问题.mb5ednc 由于大家的回答很踊跃,看来这个问题还是比较典型的.在 ...

  7. DL:神经网络算法简介之Affine 层的简介、使用方法、代码实现之详细攻略

    DL:神经网络算法简介之Affine 层的简介.使用方法.代码实现之详细攻略 目录 Affine 层的简介 批版本的Affine 层 Affine 层的使用方法 Affine 层的代码实现 Affin ...

  8. 从“梁漱溟:思考问题有八层境界”所联想到的

    最近一段时间以来写的文章比较少了,这固然是有一些客观原因,但确实有我不可说的一些自我反省和认识等主观因素.记得8月初有一次友人聚餐,席间有朋友聊到公众号的运营心得体会,其中有一条是:避免粉丝减少的黄金 ...

  9. 林子大了,什么鸟都有----.NET运用String的十八层境界

    林子大了,什么鸟都有----.NET运用String的十八层境界 在上一文中,提到了一句相当常见但十分荒谬的代码:Request.QueryString["id"].ToStrin ...

  10. ZooKeeper--分层仲裁简介

    ZooKeeper--分层仲裁简介 本文档提供了如何使用分层仲裁的示例.基本思路很简单.首先,我们将服务器分成组,并为列出构成该组的服务器的每个组添加一行.接下来,我们必须为每个服务器分配权重. 以下 ...

最新文章

  1. Canvas做股票数据走势图实践分享(一)
  2. IDEA阿里巴巴Java开发规约插件使用
  3. lptv自建服务器,如何搭建自己的IPTV平台
  4. 字符串:3.KMP算法(快速模式匹配算法)详解
  5. OpenShift 4 - 通过DaemonSet在指定Node上运行守护程序
  6. android控件之间的过渡动画效果,Android - 交换控件位置:基于LayoutParams的瞬间交换与基于ObjectAnimator动画效果交换...
  7. latex 改变字体颜色
  8. java学习笔记宋红康版本-01
  9. 适配4G模块 EC20 使用ppp拨号上网
  10. 苹果手机在哪搜索测试版软件,如何在 beta 版软件上测试你的 App
  11. 计算机网络一、什么是计算机网络
  12. aws的sdk异常 unable to execute HTTP ec2-north-1.amazonaws
  13. 淘宝京东商品长链接缩短为腾讯,新浪短链接的接口有哪些?
  14. 【echarts】在柱状图上方显示数值
  15. nginx同一个地址端口代理多个页面
  16. Android逆向之旅---应用的反调试方案解析(附加修改IDA调试端口和修改内核信息)
  17. Java工程师学习指南 入门篇
  18. Spring Boot 配置大全
  19. powerbi与mysql_PowerBI中的数据连接和导入
  20. 【博客214】分布式储存的不同数据同步方式

热门文章

  1. C/C++十六进制计算器[2023-05-25]
  2. QT数据可视化框架编程实战之三维曲面图 实时变化的三维曲面图 补天云QT技术培训专家
  3. linux系统软件怎么设置自启动,Linux系统如何设置开机程序自启动
  4. 各层网络协议加面试拓展(全网最细)
  5. vue项目如何通过电脑连接手机热点在手机上访问
  6. 从零开始之内核移植、移植linux3.16.57内核(一、linux内核移植)
  7. 微信浏览器环境H5使用扫一扫功能
  8. 原工信部部长李毅中:三网整合急不来
  9. 线性表的插入和删除(Java版)
  10. 区块链在扶贫中的应用