IPFS 是一个很大的项目,它的目标是要取代 HTTP ,把互联网带入 3.0 时代。这么大的一个项目当然要有一些好帮手,IPFS 是由很多模块组成,每一个模块现在都已经独立成项了,并且有自己的主页。现在让我们来简单看一下 IPFS 的家族成员吧。

协议实验室的主页:https://protocol.ai/projects/

在协议实验室的主页上面,可以找到目前的五个项目:

IPFS:ipfs.io

Filecoin: filecoin.io

libp2p: libp2p.io

IPLD:ipld.io

Multiformats:multiformats.io

其中 IPFS 和 FIlecoin 我们已经能够听到,是整个项目的男女主角,也是目前的大热所在,今天主要介绍那些背后默默无闻的支持者。

先放一张IPFS的结构图

libp2p

◆◆libp2p◆◆

IPFS 团队在开发 IPFS 协议的时候,采用的是高度模块化的方式进行的。就像搭积木一样,将各个功能独立起来进行。当然这也是现在软件工程里面的基本要求,不过 IPFS 团队在此基础上更进一步,各个木块之间几乎完全解耦合。

◆◆libp2p是什么?◆◆

在过去的相当长时间里,开发者构建一个 p2p 网络并不是一件容易的事情。复杂的网络环境、各种各样的通信协议和网络设备的存在使得创建大规模的点对点网络变得复杂并且困难。IPFS 团队将点对点网络的网络层从 IPFS 工程里面分离出来,形成一个独立的项目,这就是libp2p。该项目不仅可以供IPFS使用,也可以提供其它项目使用,作为一个p2p工程的底层协议存在。

之前的文章里面曾经提到过IPFS的网络连通性做的非常棒,在各种复杂的网络环境下都能够轻松应对,这与IPFS团队在libp2p上面的精心设计是分不开的。

如果哪个团队或者开发者想构建一个基于p2p网络的项目,不妨参考一下或者直接使用libp2p作为底层协议,会减少很多很多的开发量(发现了什么?如今如火如荼的区块链项目,有了libp2p,可以为大家节省很多工作量,当然,因为fork的存在,现在的项目大多数并不是从0开始的)。

◆◆libp2p有什么?◆◆

下面我们来看看libp2p里面都有什么东东?

Transports:传输层,TCP,uTP,QUIC,SCTP……

Discovery:网络发现层,mDNS,bootstrap,DNS,Kad……

Peer Routing: 节点路由,mDNS, KadDHT……

NAT Traversal: NAT穿越层……

Content Routing: 内容寻址……

libp2p的主要功能是

发现节点

连接节点

发现数据

传输数据

它类似我们现实世界的快递公司。它连接着千千万万个节点,除了负责分发数据,还负责查找数据。它是一个大杂烩,综合了各种协议、框架,让它们一起和谐地工作。