随笔 - 18  文章 - 0  评论 - 2  阅读 - 6851

认识存储网络:手动搭建 IPFS 环境以及简单应用的开发

认识存储网络:手动搭建 IPFS 环境以及简单应用的开发

一、实验背景

IPFS是一个点对点的分布式文件系统,将所有的计算设备与相同的文件系统连接起来。在某些方面,IPFS类似于Web,但IPFS可以被视为一个单一的比特流群,在Git存储库中交换对象。换句话说,IPFS提供了一个具有内容寻址的超链接的高吞吐量的内容寻址块存储模型,形成了一个通用的Merkle DAG,在此基础上人们可以构建版本化的文件系统、区块链,甚至是永久的Web。IPFS结合了分布式散列表、激励块交换和自我认证的名称空间。IPFS没有单点故障,节点之间不需要相互信任。

二、 实验目标

(1)学会远程操作的基本工具使用。

(2)学习搭建 IPFS 分布式私有网络,体会 P2P 网络架构。

(3)学习使用 IPFS 常用命令进行相关操作。

三、实验流程与记录

实验1 远程登录服务器

打开虚拟机,启动两台Ubuntu系统,安装网络工具包后查看远程服务器的IP地址:

image

image

可以看到ubuntu1的IP地址为192.168.110.130,ubuntu2的IP地址为192.168.110.131。

安装SSH服务后,检查得知安装成功:

image

然后在Windows系统下,打开安装好的PuTTY工具,分别登录两台远程服务器:

image

image

根据显示的信息可以得知远程登录成功。

实验 2 依赖环境安装

安装Go语言和Git后,检查Go语言和Git的版本:

image

实验 3 安装 IPFS

在两台服务器上分别安装IPFS:

image

image

实验4 IPFS初始化

在两台服务器中执行初始化命令,可以查询到两台服务器的身份标识:

image

image

实验 5 私有网络的共享密钥生成

在ubuntu1上利用go-ipfs-swarm-key-gen 工具生成共享密钥key,并将生成的密钥key复制到ubuntu2相同的目录下:

image

实验 6 移除默认的 Bootstrap 节点

在两台服务器上移除默认的Bootstrap节点:

image

image

实验 7 启动节点服务

在ubuntu1上启动节点服务:

image

查看节点ID:

image

在ubuntu2中添加节点ubuntu1:

image

ubuntu2启动节点服务:

image

两台服务器的节点服务均启动成功。

实验 8 测试数据抓包

(1)通过 IPFS 命令与网络交互,完成以下任务。

① 查看引导节点列表,并查看已连接的其他 IPFS 节点。

首先在两台服务器上分别使用命令$ipfs bootstrap list查看节点引导列表。

在ubuntu1上查看引导节点列表,可以看到节点列表为空:

image

然后在ubuntu2上查看引导节点列表,可以看到显示了在ubuntu1上部署的IPFS节点:

image

再在两台服务器上分别使用$ipfs swarm peers命令查看已连接的其他IPFS节点:

image

image

根据IP地址和节点ID信息可知两台服务器之间已经正确建立了P2P连接。

② 在本地节点添加目录,并查看本地存储的所有文件。

在ubuntu1上新建ipfstest文件夹,并在其中添加hello.txt和world.txt文件,然后将ipfstest文件夹挂载至IPFS网络中:

image

在ubuntu1上查询节点中ipfstest文件目录中的内容:

image

在ubuntu2上查询节点中ipfstest文件目录中的内容:

image

可以看到目录内容显示正确,ipfstest文件目录已经成功挂载到了IPFS网络中。

在两台服务器上分别使用命令$ipfs pin ls查看本地固定存储的IPFS对象。$ipfs pin ls 命令用于列出当前节点上所有已固定的 IPFS 对象。 固定是指将对象保留在本地节点上,以便在需要时可以快速访问。 固定的对象不会被垃圾回收器删除,因此它们可以在本地节点上保留很长时间。可以看到在ubuntu1上本地固定存储的IPFS对象中出现了上述节点的ID。

image

image

③ 在本地节点中下载和删除文件。

在ubuntu2上使用$ipfs get命令从上述IPFS节点中下载ipfstest目录至本地:

image

然后在本地打开下载的文件目录,查看其中的文件内容,发现文件内容与上传时相同:

image

接下来在ubuntu1上使用命令$ipfs pin rm命令删除IPFS网络上挂载的ipfstest文件目录:

image

再使用命令$ipfs pin ls进行查看,可以看到刚才显示的文件Hash值已消失。

image

然后在两服务器上分别执行$ipfs repo gc命令进行垃圾回收:

image

image

此时再在ubuntu2上执行$ipfs get命令下载此前上传到IPFS节点中的ipfstest文件,发现无响应,说明此前步骤删除ipfstest目录成功:

image

(2)在主机上是用 Wireshark 抓取以下测试的数据包。

首先在Ubuntu1中建立一个文件ipfs.txt,并添加到IPFS网络中:

image

上传过程的抓包结果如下:

image

可以看到,192.168.110.1和192.168.110.130之间使用SSH协议传输加密数据包。

然后在ubuntu2中,利用文件的Hash值,读取ipfs.txt文件:

image

读取过程的抓包结果如下:

image

可以看到,192.168.110.1和192.168.110.131之间使用SSH协议传输加密后的数据包。

至此,私有网络搭建完成。

posted on   CyberFisher  阅读(466)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示