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

技术 | 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/6/19]

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

青海省长刘宁:推广应用区块链等信息技术 推动产业链数字化改造:6月17日消息,青海省人民政府省长刘宁刊文《以“四种经济形态”为引领加快构建高质量发展新格局》。他表示,数字经济在创造新的产业形态、商业模式和创新模式的同时,也深刻地影响了传统产业及其相关的商业和创新模式。刘宁在文中提出,下一步将充分发挥青海在发展数字经济方面的比较优势,建设大数据产业园、数字经济发展展示运行平台,组建数字经济发展集团,加快建设“云上青海”。推进5G网络和智慧广电建设,推广应用物联网、云计算、大数据、区块链、人工智能等新一代信息技术,整合现有产业、企业和产品,与国际国内市场耦合,发展平台经济,谋划和推动产业链数字化改造。(学习时报)[2020/6/17]

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

天津市:运用区块链等技术 发现可能发生的突发公共卫生事件:5月18日,《天津市突发公共卫生事件应急管理办法》正式出台。管理办法指出,本市将建立和完善突发公共卫生事件监测与预警系统。卫生健康主管部门应当指定医疗机构、疾病预防控制机构等专门机构负责突发公共卫生事件的日常监测,确保监测与预警系统的正常运行;会同有关部门健全监测网络,根据需要设立监测点,充分运用大数据、云计算、区块链、人工智能等技术,综合评价监测数据,及时发现潜在隐患和可能发生的突发公共卫生事件。(天津网)[2020/5/18]

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

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

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

动态 | 中欧班列首次落地应用区块链技术 首个国际班列“新账本”诞生:据封面新闻消息,10月17日,中欧班列(德国巴伐利亚至中国四川)整列41张“统一运单”信息进入中国铁路成都局集团“一单制”区块链平台,标志着集团公司首次在亚欧大陆国际铁路联运(中欧班列)试点应用区块链技术。今年8月30日,集团公司发挥自身数据资源及信息化建设优势,自主研发“一单制”区块链平台系统上线试运行,签发全国首张区块链铁路运单。10月17日,该平台新增“国际联运”模块,生成全国首个中欧班列区块链运单数据。[2019/10/21]

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

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

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

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

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

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

Overstock看好区块链技术 民主投票将迎新生:Overstock旗下子公司Medici Ventures正投资于区块链初创公司,并在最近为波士顿的一家投票技术公司Voatz带来了220万美元的融资。通过区块链技术,选民们可以使用生物识别技术进行投票,“基于区块链技术的投票可以是安全、匿名的,且可以提高民主参与度”。[2018/1/10]

至此,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团队数据平台架构师

标签:NODEODEFSNSNONode Runnersgode币最新消息FSN价格CSNO

Gateio热门资讯
技术指南 | 软硬协同的共识算法设计——以FastBFT为例

导读 我们知道,相比公有链,联盟链中使用的拜占庭容错(BFT)算法能够有效地提升区块链的交易处理能力。但是,传统的BFT算法,例如PBFT算法,为了容忍f个拜占庭错误节点,需要保证系统中的节点总数至少是3f+1.

1900/1/1 0:00:00
揭秘以太坊开发者最爱哪些工具?最关心哪些问题?

撰文:Donnager 企业以太坊联盟刚刚发布了一项关于企业级以太坊开发者使用的智能合约语言、开发工具、客户端、服务的调查报告.

1900/1/1 0:00:00
分析:GBTC溢价下跌或将致使机构停止购买比特币

AMBcrypto近日刊文分析称,灰度比特币信托溢价的下跌为投资者和交易员敲响了警钟。尤其是在溢价从2020年12月的约30%暴跌至2%之后。而溢价可能是机构投资GBTC的唯一动机,而不是比特币.

1900/1/1 0:00:00
Social Capital CEO “10大狂言”:没人听巴菲特的,我们已在社交投资时代

本文来自businessinsider,原文作者:WillDanielOdaily星球日报译者|Moni 在最新接受彭博社采访时.

1900/1/1 0:00:00
GameStop和真正的市场操纵者

作者:JillCarlson 编译:萌眼财经 市场被操纵意味着什么? 我知道这个问题有法律层面的答案,但这不是我真正感兴趣的。我更感兴趣的是,作为一个嗜血的资本主义社会,我们要在哪里以及如何在市场本身和被操纵的市场间划清界限.

1900/1/1 0:00:00
比特币持仓周报 | 多头狂欢遭大跌「拉闸」,机构提前预判从容应对

2月27日,CFTC公布了最新一期CME比特币期货周报,最新统计周期内BTC虽然一度取得了又一轮10000美元级别的可观涨幅,但是在统计周期中后段迅速回吐涨幅,最终整个统计周期以小幅下跌收场。「拐点到来」的恐慌声音又一次集中爆发.

1900/1/1 0:00:00