回顾
IPFS-InterPlanetaryFileSystem星际文件系统,是一个点对点的分布式文件存储系统,IPFS的愿景是构建一个全世界的分布式网络,用来替代传统中心化的服务器模式,所有的IPFS节点组成一个分布式网络,每个节点都可以存储文件,用户可以从IPFS构建的网络中以DHT(DistributedHashTable,分布式哈希表)?的方式获取文件,从而实现了新一代的完全去中心化的网络,旨在取代现有的万维网。IPFS功能很丰富,如DHT组网,文件存储,Bitswap文件交换等功能。
文件存储和文件交换的技术详解可以通过之前的推文内容进行了解,今天我们来了解这个文件系统的“地基”——网络模块。
IPFS网络初识
IPFS是一个开源项目,要达到它声称的构建一个全世界的分布式网络的目标,那么他必然要先解决不同国家、不同地区节点的连接问题。
首先,看一下IPFS网络部分配置,如下图所示,红框内部的Swarm是IPFS监听的网络地址,其中支持ipv4和ipv6协议,且默认支持QUIC协议。
上海市委书记:积极运用区块链等技术 让知识产权人办事更方便:4月26日,上海市知识产权保护大会举行。上海市委书记李强指出,要对标国际最高标准、最好水平,抓紧补短板、强弱项,全面提升知识产权保护能力和水平。同时公共服务要更完善,持续优化快速审查、快速确权、快速维权“一站式”服务,积极运用人工智能、区块链等新技术,让知识产权人办事更方便。(中国证券报)[2020/4/26]
*QUIC协议是由google最先提出的,目前已经提交给互联网工程任务小组,成为了正式的网络规范,相对于TCP来说QUIC网络传输协议的传输速度更快。
IPFS节点启动之后日志如下图所示,可以看到IPFS节点监听了以下网络地址,其中包括本地的、局域网、广域网的地址,最后还有/p2p-circuit地址。
动态 | 广东省税务局:利用区块链等技术 全面升级为“一次不用跑”:近日,广东省税务局正式发布公告,在全省范围内实行办税费“一次不用跑”,并发布涉及的100项办税费事项清单。在“一次不用跑”试点过程中,广东省税务局鼓励各地税务部门在“电子办税为主、自助办税为辅、实体办税兜底”的智慧办税格局下,探索智能办税新路径,开展个性化服务创新,将“最多跑一次”事项清单与“全流程无纸化”“互联网+”“云计算”“区块链”“人工智能”等紧密融合,全面升级为“一次不用跑”。(央广网)[2020/2/6]
问题来了,为什么需要监听这么多地址?
那是因为IPFS是一个开源项目,为了让全世界各地的节点连接起来则必须要解决各种网络情况下节点连接的问题。
声音 | 美国前国会议员Ron Paul:赞成加密货币和区块链技术 喜欢竞争货币:美国前国会议员Ron Paul表示,他赞成加密货币和区块链技术,喜欢竞争货币。其进一步指出,加密货币是一个好想法,政府应该只是介入以规范空间以防止欺诈。此外,加密货币和黄金很相似,两者都是与法定货币竞争的资产。(cointelegraph)[2019/7/16]
监听本地地址,这样本地启动多个IPFS节点,它们之间可以以该地址进行连接,监听局域网地址,这样内网内启动多个IPFS节点,它们之间可以以该局域网地址相互连接,监听广域网地址,这样公网中启动多个IPFS节点,它们之间可以以该广域网地址进行连接。
通过上述方式就解决了大部分网络情况下的IPFS节点的网络连接问题:
2个节点都在同一主机:通过127.0.0.1地址连接
2个节点在同一个内网内:通过局域网地址连接
2个节点都有公网地址:通过公网地址连接
1个节点在内网,1个节点在公网:内网的节点通过在公网节点的公网地址连接
动态 | 禅城将借力区块链等信息技术 对人才服务再升级:据广州日报大洋网报道,禅城将借力区块链等信息技术,对人才服务再升级。区人社部门相关负责人介绍,禅城将重构人才服务办理流程,力争人才公寓、技能人才子女入学、毕业生就业报到、人才资格认定等37项业务实现“零跑腿”办理。[2019/1/18]
这里有一个问题,如果2个节点处于两个不同内网环境,由于存在NAT设备,NAT设备可能是对称型,对称型的NAT设备是没有办法穿透的,所以IPFS提供了relay的方式解决不同内网环境下节点的连接问题,上面提到的监听/p2p-circuit地址则是为了解决该问题,对于2个处于不同内网环境不能直接连接的节点,通过配置relay节点中转从而建立连接。
至此,IPFS解决了不同网络环境下的节点之间建立连接的问题,下面我们来看一下IPFS是如何构建大规模的分布式节点网络,将处于全世界的不同地区的各个节点连接起来的。
IPFS网络构建
IPFS网络构建的过程可以看作是两个阶段:
优博讯:已尝试使用区块链技术 股价直线涨停:优博讯(sz300531)今日下午在互动平台上表示,区块链技术已经是一个通用技术,公司所涉及的领域是区块链技术应用的重点领域,公司已经在尝试使用该技术,未来不远的时间,将会看到有关新产品的推出。随后不久,公司股价直线拉升,截至发稿,公司股票已涨停。[2018/1/16]
▲?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团队数据平台架构师
2月22日,巴比特专栏作者,区块链和加密数字资产研究者谷燕西发文《波卡会是下一个万亿美元资产吗?》指出,波卡很有可能是下一个首先达到万亿美元资产规模的加密数字资产.
1900/1/1 0:00:00据澎湃新闻消息,2月19日,国际货币基金组织发布了题为《数字时代公共货币和私人货币可共存》的文章。文章提出,央行不应仅做出二选一的抉择:要么发行央行数字货币,要么鼓励私人部门提供自己的数字货币.
1900/1/1 0:00:00昨日拜登政府1.9万亿经济刺激方案通过关键环节获参议院同意后,加密货币市场在股市、债市休市时出现大幅回弹,反映了市场对通胀前景的预期.
1900/1/1 0:00:00主要财经刊物Investing.com高级金融分析师JesseCohen表示,在主流应用越来越多的情况下,比特币很可能在2021年达到6万美元.
1900/1/1 0:00:00律动BlockBeats消息,2月24日,根据美国金融科技公司、移动支付巨头之一Square提交给美国证券交易委员会的公司收入报告,Square在2020年比特币收入为45.7亿美元.
1900/1/1 0:00:003月11日,加密货币贷款初创公司BlockFi已经确认完成了一轮足以轰动整个加密货币领域的D轮融资,该公司的市值达到30亿美元.
1900/1/1 0:00:00