干货|更通用的P2P网络协议栈——Libp2p

Libp2p是什么?

Libp2p是用于构建P2P网络的模块化网络堆栈和库,源自开源项目IPFS,模块化设计使它能够用来构建各种去中心化应用的P2P网络层。目前,知名区块链项目Ethereum 2.0、Pokdot、BitXHub都选择基于Libp2p库搭建系统网络层。Libp2p作为P2P网络协议栈,它是通过解决实际问题不断成长的,可以认为是构建P2P网络经验的积累。

Libp2p解决了哪些问题?

Libp2p作为网络协议栈,主要解决两个问题:

节点发现
节点发现用来发现P2P网络中的其它节点及维护节点在线状态,并且根据节点状态调整网络连接,构建稳定的网络拓扑。

数据传输
数据传输负责节点间数据的流转。为了支持各种异构的网络设备互连,Libp2p核心要求之一就是传输层不可知,Libp2p支持不同的传输层协议,例如TCP、UDP、QUIC等。在传输层建立连接后还需要考虑网络数据的隐私安全,Libp2p对传输通道加密,节点间通过加密通道进行通信。为了高效传输数据,Libp2p支持对连接进行多路流复用从而支持节点间多个并发流通信。

本文主要讨论Libp2p解决数据传输问题方案,代码基于go-libp2p v0.9.2。

Libp2p是如何解决数据传输问题的?

传输层不可知
传输层不可知是指Libp2p支持多种传输层协议,例如TCP、UDP、QUIC等,应用程序开发者在使用Libp2p库时不需要知道完成数据传输使用的传输层协议,Libp2p会根据远程节点地址信息自动完成协议选择。

地址定义
数据传输建立在节点连接的基础上,在可以拨号远程节点并建立连接之前,需要知道远程节点的监听地址。因为每种传输协议都有自己的地址格式,所以Libp2p

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值