一种基于IPFS的p2p分件分发方法技术

技术编号:36217391 阅读:82 留言:0更新日期:2023-01-04 12:14
本发明专利技术公开了一种基于IPFS的p2p分件分发方法,包括以下步骤:S1添加文件到IPFS本地库;S2发送文件到服务器暂存;S3通知接收客户端;S4检索文件所在节点;S5已连接的节点中有节点;S6无可用节点;S7文件下载成功;S8文件下载失败;使用该方案可以作为p2p文件下载服务,IPFS无法进行NAT穿越,本方案提供了NAT穿越功能,包括stun服务来发现外网地址,打洞服务来协助客户端进行打洞流程,IPFS bootstrap服务来检索文件所在节点,该方案可以用来提高文件下载服务,在客户端之间进行多节点p2p传输,可以节省服务端带宽资源及磁盘io资源,同时解决了国内ipv4资源匮乏,大多网络设备没有公网IP,无法进行p2p通信,IPFS很难p2p下载文件的问题。问题。问题。

【技术实现步骤摘要】
一种基于IPFS的p2p分件分发方法
[0001]

[0002]本专利技术涉及电子信息
,具体为一种基于IPFS的p2p分件分发方法。
[0003]
技术介绍

[0004]IPFS(Inter Planetary File System,又称星际文件系统)白皮书文件中表示,IPFS是一种点对点的分布式文件系统,是分布式的web,是单一的Bittorrent 群集,git仓库分布式存储的,可以让互联网运行速度更快,更加安全和更加开放的旨在连接所有有相同的文件系统的计算机设备,其基于dht(分布式哈希算法)提供了类似磁链接下载的功能,并且拥有安全防篡改,文件版本控制等功能,IPFS从根本上来讲一项类似于http的网络协议,能够支持我们查看互联网页面,可挂载文件系统,自身具有文件夹和文件,包含连接层,路由层和数据块交换的模块化协议,IPFS基于其独特的去中心网络分享模式,能够是的带宽加速,是天然的CDN,与现有网络协议并不冲突,可以与现有域名系统绑定,但国内ipv4资源匮乏,大多网络设备没有公网IP,都是处于内网环境,无法进行p2p通信因此用IPFS很难p2p下载文件。
[0005]
技术实现思路

[0006]为了解决上述问题,本专利技术的目的在于提供一种基于IPFS的p2p分件分发方法。
[0007]为实现上述目的,本专利技术提供如下技术方案:一种基于IPFS的p2p分件分发方法,包括以下步骤:(1)添加文件到IPFS本地库:上传到原服务端,然后上传到ipfs,调用ipfs add,把文件加入到ipfs本地节点的库中,并同步给bootstrap节点或者其他已连接的peer节点,内容为文件hash及该文件所在的节点ID,保存该文件HASH和节点信息;(2)发送文件到服务器暂存:上传文件,文件名,IPFS,HASH至服务器,服务端接收该文件;(3)通知接收客户端:服务端接收文件,通知接收客户端并发送文件的哈希值;(4)检索文件所在节点:客户端接收文件,然后基于dht(分布式哈希算法)查找文件所在节点,并在IPFS Bootstrap节点查找拥有该文件的所有节点;(5)已连接的节点中有节点:如果已连接的节点中有节点拥有该文件则直接下载;(6)无可用节点:连接到拥有文件的节点,连接过程需要进行NAT打洞,需要采用reuseport创建socket来进行打洞,打洞成功后再连接到对方的守护进程进行下载文件;(7)文件下载成功:文件下载成功,通知服务端文件已接收;(8)文件下载失败:IPFS下载失败时走原本的下载方式,从服务端直接下载;进一步地,所述步骤(1)中添加文件到IPFS本地库的方法包括以下步骤;
(1)下载IPFS执行程序,并解压缩到一个文件夹里;(2)打开cmd命令行,执行两个命令,初始化:ipfsinit,运行节点:ipfsdaemon;(3)上传文件ipfsaddfilename.txt,会得到一个hash值;(4)如果往目录添加或修改了目录里的文件,此时目录的Hash值会变化,需要使用新的ID才能访问更新后的目录或文件,这对于网站部署来说是十分不便的,为了解决这个问题IPFS提供了IPNS服务,可以将一个唯一ID绑定到IPFS的Hash上,通过这个唯一ID访问IPFS文件/文件夹,使用ipfsnamepublish目录hash值命令进行绑定操作.返回哈希值,其中的Qm...就是上传目录时返回的Hash值,返回的k2...就是IPNSID,对于同一个节点来说默认情况下是相同的,我们可使用这个ID生成新的访问链接;(5)同步给bootstrap节点或者其他已连接的peer节点,内容为文件hash及该文件所在的节点ID,bootstrap节点保存该文件HASH和节点信息;进一步地,所述步骤(4)中检索文件所在节点的方法包括以下步骤:(1)当一个节点加入到IPFS网络中后,该节点中存储的IPFS内容就会通过IPFS的分布式哈希表(DHT)频繁地广播到IPFS全网,告诉其它节点它自己存储了什么内容;(2)检索节点找到了存储节点后,会得到存储节点的“多地址”;(3)检索节点就会通过“多地址”直接连接存储节点,然后从存储节点获取所需的检索内容;进一步地,所述步骤(6)无可用节点方法包括以下步骤:假设有如下客户端(B),NAT(A),服务端(C),客户端的IP为IPB,NAT的IP为IPA,服务端的IP为IPC1、IPC2;(1)B向C的IPC1的port1端口发送一个UDP包,C收到这个包后,会把它收到包的源IP和port写到UDP包中,然后把此包通过IP1C和port1发还给B,这个IP和port也就是NAT的外网IP和port,当B收到此UDP后,把此UDP中的IP和自己的IP做比较,如果是一样的,就说明自己是在公网,下步NAT将去探测防火墙类型,如果不一样,说明有NAT的存在,系统进行步骤(2)的操作。
[0008](2)B向C的IPC1发送一个UDP包,请求C通过另外一个IPC2和PORT向B返回一个UDP数据包,如果B收到了这个数据包,也就是STUN标准中的fullconeNAT,如果没收到,那么系统进行步骤(3)的操作;(3)B向C的IPC2的port2发送一个数据包,C收到数据包后,把它收到包的源IP和port写到UDP包中,然后通过自己的IPC2和port2把此包发还给B,如果这个port和step1中的port一样,那么可以肯定这个NAT是个CONENAT,否则是对称NAT,如果此步的时候PORT是不同的,如果不同,那么只剩下了restrictcone和portrestrictcone。系统用步骤(4)探测是是那一种;(4)B向C的IP2的一个端口PD发送一个数据请求包,要求C用IP2和不同于PD的port返回一个数据包给B,如果B收到了,那也就意味着只要IP相同,即使port不同,NAT也允许UDP包通过,显然这是restrictconeNAT,如果没收到,没别的好说,portrestrictNAT;(5)最后在STUN服务器得到自己的NAT类型和公网IP、Port;(6)NAT打洞依赖于Stun服务和NAT打洞服务,Stun服务用来发现客户端外网地址和NAT类型,NAT打洞服务协调客户端进行打洞;
(7)IPFSboostrap节点用于和客户端同步文件索引信息,客户端上传时会同步文件hash值到bootstrap节点,下载文件时,从bootstrap节点查找拥有文件的节点;与现有技术相比,本专利技术的有益效果如下:本专利技术主要基于IPFS作为传输工具,在网络层我们提供了NAT打洞服务,来进行NAT穿透到内网进行p2p文件下载,使用该方案可以作为p2p文件下载服务,IPFS无法进行NAT穿越,本方案提供了NAT穿越功能,包括stun服务来发现外网地址,打洞服务来协助客户端进行打洞流程,IPFSbootstrap服务来检索文件所在节点,该方案可以用来提高文件下载服务,在客户端之间进行多节点p2p传输,可以节省服务端带宽资源及磁盘io资源,同时解决了国内ipv4资源匮乏,大多网络设备没有公网IP,都是处于内网环境,无本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于IPFS的p2p分件分发方法,其特征在于,包括以下步骤:(1)添加文件到IPFS本地库:上传到原服务端,然后上传到ipfs,调用ipfs add,把文件加入到ipfs本地节点的库中,并同步给bootstrap节点或者其他已连接的peer节点,内容为文件hash及该文件所在的节点ID,保存该文件HASH和节点信息;(2)发送文件到服务器暂存:上传文件,文件名,IPFS,HASH至服务器,服务端接收该文件;(3)通知接收客户端:服务端接收文件,通知接收客户端并发送文件的哈希值;(4)检索文件所在节点:客户端接收文件,然后基于dht(分布式哈希算法)查找文件所在节点,并在IPFS Bootstrap节点查找拥有该文件的所有节点;(5)已连接的节点中有节点:如果已连接的节点中有节点拥有该文件则直接下载;(6)无可用节点:连接到拥有文件的节点,连接过程需要进行NAT打洞,需要采用reuseport创建socket来进行打洞,打洞成功后再连接到对方的守护进程进行下载文件;(7)文件下载成功:文件下载成功,通知服务端文件已接收;(8)文件下载失败:IPFS下载失败时走原本的下载方式,从服务端直接下载。2.根据权利要求1所述的一种基于IPFS的p2p分件分发方法,其特征在于,所述步骤(1)中添加文件到IPFS本地库的方法包括以下步骤:(1)下载IPFS执行程序,并解压缩到一个文件夹里;(2)打开cmd命令行,执行两个命令,初始化:ipfs init,运行节点:ipfs daemon;(3)上传文件 ipfs add filename.txt,会得到一个hash值;(4)如果往目录添加或修改了目录里的文件,此时目录的Hash值会变化,需要使用新的ID才能访问更新后的目录或文件,这对于网站部署来说是十分不便的;(5)同步给bootstrap节点或者其他已连接的peer节点,内容为文件hash及该文件所在的节点ID,bootstrap节点保存该文件HASH和节点信息。3.根据权利要求1所述的一种基于IPFS的p2p分件分发方法,其特征在于,所述步骤(4)中检索文件所在节点的方法包括以下步骤:(1)当一个节点加入到IPFS网络中后,该节点中存储的IPFS内容就会通过IPFS的分布式哈希表(DHT)频繁地广播到IPFS全网,告诉其它节点它自己存储了什么内容;(2)检索节点找到了存储节点后,会得到存储节点的“多地址”;(3)检...

【专利技术属性】
技术研发人员:吴海霖
申请(专利权)人:泉州砾鹰石科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1