宇宙链 宇宙链
Ctrl+D收藏宇宙链
首页 > 区块链 > 正文

技术 | IPFS网络是如何组建的?

作者:

时间:1900/1/1 0:00:00

回顾

IPFS-InterPlanetaryFileSystem星际文件系统,是一个点对点的分布式文件存储系统,IPFS的愿景是构建一个全世界的分布式网络,用来替代传统中心化的服务器模式,所有的IPFS节点组成一个分布式网络,每个节点都可以存储文件,用户可以从IPFS构建的网络中以DHT(DistributedHashTable,分布式哈希表)?的方式获取文件,从而实现了新一代的完全去中心化的网络,旨在取代现有的万维网。IPFS功能很丰富,如DHT组网,文件存储,Bitswap文件交换等功能。

文件存储和文件交换的技术详解可以通过之前的推文内容进行了解,今天我们来了解这个文件系统的“地基”——网络模块。

IPFS网络初识

IPFS是一个开源项目,要达到它声称的构建一个全世界的分布式网络的目标,那么他必然要先解决不同国家、不同地区节点的连接问题。

首先,看一下IPFS网络部分配置,如下图所示,红框内部的Swarm是IPFS监听的网络地址,其中支持ipv4和ipv6协议,且默认支持QUIC协议。

绵阳市:充分利用区块链等技术 为农民工证照办理提供线上便捷服务:近日,四川绵阳市印发《今冬明春农民工服务保障五大专项行动实施方案》。方案要求,各级、司法、市场监管等部门要充分利用春节前后农民工返乡和务工出行集中时段开辟“绿色通道”,安排专门窗口,配备专门人员,集中一段时间专门为农民工办理身份证、出国(境)证件、证明材料等各类证照。充分利用互联网+、区块链技术等先进技术,为农民工证照办理提供线上便捷服务。(绵阳观察)[2020/12/16 15:20:53]

*QUIC协议是由google最先提出的,目前已经提交给互联网工程任务小组,成为了正式的网络规范,相对于TCP来说QUIC网络传输协议的传输速度更快。

IPFS节点启动之后日志如下图所示,可以看到IPFS节点监听了以下网络地址,其中包括本地的、局域网、广域网的地址,最后还有/p2p-circuit地址。

董希淼:央行数字货币使用双离线技术 没有手机信号也可使用:近日,国家金融与发展实验室特聘研究员董希淼表示,可以不开立银行账户或者支付账户,只要你装有数字货币钱包,你就可以使用央行数字货币。央行的数字货币使用最新的双离线技术,即使在没有手机信号的情况下,依然可以使用。只要装有数字货币钱包的手机,拿在一起碰一碰,就可以方便地完成转账或者支付。北京大学数字金融研究中心高级研究员徐远表示,新的数字货币和我们以前的纸币是一比一兑换的,现在商业银行要获得数字货币,必须拿以前的货币来换,并不增加总量,这是第一步,试点的时候并不增加总量。(央视财经)[2020/4/29]

问题来了,为什么需要监听这么多地址?

那是因为IPFS是一个开源项目,为了让全世界各地的节点连接起来则必须要解决各种网络情况下节点连接的问题。

福州一批新建项目将使用区块链技术 包括渣土车监管平台等:4月14日消息,针对游雄峰代表提出的关于推广区块链技术应用和制定相关政策法规的建议,福州市大数据发展管理委员会近日表示,福州市积极推进区块链落地应用,渣土车监管平台等一批新建项目中将使用区块链技术。 

在加强区块链行业监管、制定和完善相关政策法规方面,福州市成立了区块链发展工作领导小组。市政府也加强了对虚拟货币交易场所、首次代币发行排查清理,协调金融机构和非银行支付机构不得开展与代币发行融资交易相关的业务,加强风险防范。此外,福州市政府已规划在滨海新城建立区块链监管沙盒,进一步加强区块链行业监管研究。(福州新闻网)[2020/4/14]

监听本地地址,这样本地启动多个IPFS节点,它们之间可以以该地址进行连接,监听局域网地址,这样内网内启动多个IPFS节点,它们之间可以以该局域网地址相互连接,监听广域网地址,这样公网中启动多个IPFS节点,它们之间可以以该广域网地址进行连接。

通过上述方式就解决了大部分网络情况下的IPFS节点的网络连接问题:

声音 | 俄罗斯央行行长:企业正在改进区块链等新技术 寻找应用案例:俄罗斯央行行长Elvira Nabiullina在索契创新金融技术论坛上表示,近期,全球加密货币热潮开始消退,企业对区块链技术开始采取更为冷静的态度。企业正在努力改进区块链等新技术,寻找实际应用的案例。[2018/10/18]

2个节点都在同一主机:通过127.0.0.1地址连接

2个节点在同一个内网内:通过局域网地址连接

2个节点都有公网地址:通过公网地址连接

1个节点在内网,1个节点在公网:内网的节点通过在公网节点的公网地址连接

这里有一个问题,如果2个节点处于两个不同内网环境,由于存在NAT设备,NAT设备可能是对称型,对称型的NAT设备是没有办法穿透的,所以IPFS提供了relay的方式解决不同内网环境下节点的连接问题,上面提到的监听/p2p-circuit地址则是为了解决该问题,对于2个处于不同内网环境不能直接连接的节点,通过配置relay节点中转从而建立连接。

银行助力雄安新区:投放最先进技术 种树也用区块链:“千年秀林”在雄安新区规划公布之前已开始实施,2018年要再造10万亩苗景兼用林,未来新区森林面积达百万亩。这个项目就是运用区块链技术来管理财务。通过银企直联,将植树造林资金支付链条延伸至付款末端,工程款、劳务工作的支付均在链上完成,确保专款专用。农行是支付合作银行之一,中标企业开立农行账户后,利用文件证书形式将账户导入到区块链平台,并完成平台注册和登录,之后资金支付就在平台上发起。[2018/4/16]

至此,IPFS解决了不同网络环境下的节点之间建立连接的问题,下面我们来看一下IPFS是如何构建大规模的分布式节点网络,将处于全世界的不同地区的各个节点连接起来的。

IPFS网络构建

IPFS网络构建的过程可以看作是两个阶段:

▲?Bootstrap阶段

IPFS节点在启动之前需要配置它的Bootstrap节点,配置文件中相关配置如下图所示,Bootstrap配置中配置了IPFS节点启动时需要连接的所有种子节点列表,这些节点地址列表信息是默认的,如果需要搭建IPFS私有网络可以修改成自己的种子节点列表。默认提供的种子节点都是具有公网地址的节点,IPFS节点启动的时候首先连接该种子节点,后续通过该种子节点去发现IPFS网络中更多的节点,从而进行连接,也就是DHT组网阶段。

▲?DHT组网阶段

IPFS节点连接种子节点成功以后则去通过DHT去发现其他节点,关于DHT的详解可以看这篇文章《Libp2p中DHT和Bitswap详解》。

发现其他节点之后则尝试进行连接,连接成功的节点会加入到该节点的节点列表,以便后续可以直接与该节点通信,考虑到全世界的IPFS节点规模很大,不可能每个节点和其他节点保持长连接,所以对每个节点的连接数量做了限制,一般节点连接数量都在1千以下,对于没有连接的节点需要通信的话,可以通过DHT找到该节点地址,然后连接该节点进行通信,这样就构成了大规模的分布式节点网络。

我们可以通过一个示例展示上述过程。下图是一个常见的网络拓扑架构,有三个网络分别连接了Internet,IPFSnode1部署在具有公网ip的服务器上,外部可以直接访问该节点,IPFSnode2和IPFSnode3都部署在对称型NAT设备后面,外部不能访问该节点。

在上面的网络架构下,处于公网的IPFSnode1作为种子节点,种子节点最先启动,然后IPFSnode2,node3,node4,node5的种子节点配置成IPFSnode1,分别启动后首先连接IPFSnode1,连接成功后通过DHT发现其他节点最后分别连接,对于IPFSnode1,它连接的节点地址列表如下图所示,由于IPFSnode2,node3,node4,node5均处于NAT设备后面,所以IPFSnode1节点列表中这些节点的端口都是NAT设备映射后的端口。

对于IPFSnode3来说,它的节点地址列表中,IPFSnode1的地址是公网地址,由于IPFSnode3和IPFSnode2都处于NAT设备后面,不能直接连接,所以IPFSnode2的地址是relay地址,IPFSnode1节点作为relay节点,IPFSnode3给IPFSnode2发消息时通过IPFSnode1转发,relay地址格式为:

Relay节点的地址/p2p-circuit/p2p/目标节点id

而IPFSnode3的节点地址列表中,IPFSnode4和IPFSnode5的地址均为局域网地址,这样就完成了公网节点、处于NAT设备后的局域网节点的组网过程。

总结

以上就是IPFS网络的组建过程,为了方便描述只是以几个IPFS节点为例。

实际上IPFS的这种网络组建方式也能很好地支持超大规模节点的组网,当节点规模很大的时候,设置数十个节点作为种子节点,通过DHT组网就能完成数万甚至更多节点的组网,此时每个节点的长连接数量保持在数百个,后续节点间通信时,如果还没有建立连接,可以通过DHT根据节点id查询该节点的地址信息,然后通过该地址连接该节点最后完成通信过程。

IPFS网络的这种组建方式也非常值得分布式系统学习和借鉴。

作者简介

姚文豪来自数据网格实验室BitXMesh团队数据平台架构师

标签:NODEODEFSNSNOPNODEAgrinodefsn币前景SNOOD价格

区块链热门资讯
DeFi再次涨上天,是泡沫狂欢还是价值发现?

美股、首富来助攻,Dex们涨上天经常想感叹一下,刚过去的2020真是充满动荡与混乱的一年,而对于区块链行业来说,同样是惊心动魄、跌宕起伏,在重新找到叙事与方向后,柳暗花明的一年。这一年,有的人忽视风险损失惨重,有的人提升认知盆满钵满.

1900/1/1 0:00:00
比特币的信号越来越大 你是否在追随它......?

我们经常被生活琐事所困扰,以至于无法看到更大的画面。我们过度关注一些微不足道的小时刻,导致我们忽略了真正的目标是什么。在投资中,当利润岌岌可危时,短期视角往往成为很多人遵循的信号。这一点在比特币上也同样适用.

1900/1/1 0:00:00
还未发币的dYdX,站在两大爆发赛道的交叉口

DEX最近再次成为了市场的焦点。赛道龙头Uniswap、Sushiswap?币价强势上冲,相继刷新历史高点;1inch直接变身“5inch”;DODO等后起之秀同样表现不俗.

1900/1/1 0:00:00
Polychain Capital CEO:Coinbase估值已达1000亿美元

CoinbaseCEOBrainArmstrong在比特币去年飙升300%的浪潮中,加密货币交易平台Coinbase有望成为金融科技公司的下一个大型上市企业.

1900/1/1 0:00:00
区块链银行集团We.trade融资550万欧元 汇丰和桑坦德银行再次注资

据Siliconrepublic2月2日报道,总部位于都柏林的全球银行集团We.trade筹集了550万欧元,这些资金将用于进一步开发基于IBM的跨境交易平台.

1900/1/1 0:00:00
瑞·达利欧亲笔:我对比特币的看法

瑞·达利欧亲笔:我对比特币的看法 Odaily星球日报 刚刚 27 我之所以要撰写这篇文章,目的是为了澄清对比特币的看法.

1900/1/1 0:00:00