火星链 火星链
Ctrl+D收藏火星链
首页 > Coinw > 正文

ODE:技术 | 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协议。

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

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

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

声音 | 林草局:要积极探索区块链等技术 为业务管理提供智能化服务:林草局发布《国家林业和草原局关于促进林业和草原人工智能发展的指导》。其中提到,要积极探索基于区块链、大数据、人工智能等技术,在生态管理工作领域、生态公共服务领域、生态决策服务领域,为业务管理、舆情分析和领导决策提供智能化服务。[2019/11/22]

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

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

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

声音 | 李小加:北向通有望使用区块链技术 不过现阶段难言是否成功:据雅虎财经消息,港交所行政总裁李小加表示,为提升港交所科技技术,港交所早前已投资一家深圳初创技术公司,未来或会再作收购。 李小加续指,国际投资者使用北向通进行交易是使用“T+0交易机制”,而大部份国际市场则是“T+2交易机制”,让投资者面对很大挑战。他又透露,北向通有望使用区块链技术,解决两个机制时差上的分歧,不过现阶段难言是否可成功。[2019/4/1]

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

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

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

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

青瓦台:韩国将积极扶持区块链技术 不会禁止数字货币交易:据路透消息,青瓦台表示,韩国将积极扶持区块链技术,计划在今年上半年宣布发展区块链的计划,并表示打击数字货币的非法行为是韩国政府的职责,韩国将专注于提高数字货币交易的透明度,而非禁止交易,韩国将继续就机构对数字货币交易的不公平行为作出坚定回应,评估对数字货币的税收制度。[2018/2/14]

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

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

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

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

区块链领域首个国家标准获批立项:《信息技术 区块链和分布式账本技术 参考架构》:据中国区块链技术和产业发展论坛官方公众号消息,根据《国家标准委关于下达2017年第四批国家标准制修订计划的通知》(国标委综合[2017]128号),《信息技术 区块链和分布式账本技术 参考架构》作为区块链领域的首个国家标准获批立项。中国区块链技术和产业发展论坛于2016年10月18日,在工业和信息化部、国家标准化管理委员会工业标准二部的指导下,由中国电子技术标准化研究院、蚂蚁金服、万向控股、微众银行、平安保险、乐视金融、万达网络科技等共同发起成立。[2018/1/5]

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

标签:ODENODEFSNSNOgode-chainPNODE价格fsn币前景Snowball Finance

Coinw热门资讯
NFT:细数那些“开挂”的加密艺术领袖:左手艺术右手NFT

作者:Nancy来源:PANews加密艺术已初见峥嵘。尽管与笔尖纸张摩挲碰撞的传统艺术相比,突破时间和空间限制的加密艺术的规模无异是小巫见大巫,但其成长速度却不容小觑.

1900/1/1 0:00:00
ETH:V神发布ETH2.0信标链首个硬分叉提案HF1,引入更公平的节点惩罚机制

“以太坊创始人V神在推特上介绍了以太坊信标链第一个硬分叉升级提案。V神称,HF1添加了轻客户端支持,简化了规范,提高了效率,并引入了惩罚性较小的不活跃惩罚机制.

1900/1/1 0:00:00
ROL:V神提出跨Rollup扩展方案以实现L2项目相互通信

据Cointelegraph消息,近日V神于社区论坛提出了一种针对特定类型的跨Rollup扩展的解决方案,以连接第二层扩展项目.

1900/1/1 0:00:00
BTC:比特币持仓周报 | 大型机构「逆市做多」,悄然站至中小投资者对立面

3月6日,CFTC公布了最新一期CME比特币期货周报,最新统计周期内BTC价格近乎停滞,周内行情虽然有所反复,但是最终整个统计周期内价格实际波动幅度不足100美元.

1900/1/1 0:00:00
区块链:金融隐私公链 Findora 与 BSN 国际合作,增强金融资产隐私保护

金融隐私公链Findora宣布与区块链服务网络BSN国际展开合作,增强金融资产的隐私保护和可审计性.

1900/1/1 0:00:00
数字艺术:观察 | 加密艺术将吞噬传统艺术

下一代数字原住民将如何使用加密艺术作为数字世界的身份象征?我们生活在一个日益数字化的世界。人们在各种电子设备中花无数个小时。整整几代人都在这个新世界里成长为数字原住民.

1900/1/1 0:00:00