CN110830601B - 分布式系统nat穿透方法、装置、设备及存储介质 - Google Patents
分布式系统nat穿透方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN110830601B CN110830601B CN201910898337.1A CN201910898337A CN110830601B CN 110830601 B CN110830601 B CN 110830601B CN 201910898337 A CN201910898337 A CN 201910898337A CN 110830601 B CN110830601 B CN 110830601B
- Authority
- CN
- China
- Prior art keywords
- node
- information
- list
- local
- network
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/09—Mapping addresses
- H04L61/25—Mapping addresses of the same type
- H04L61/2503—Translation of Internet protocol [IP] addresses
- H04L61/256—NAT traversal
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/09—Mapping addresses
- H04L61/25—Mapping addresses of the same type
- H04L61/2503—Translation of Internet protocol [IP] addresses
- H04L61/256—NAT traversal
- H04L61/2575—NAT traversal using address mapping retrieval, e.g. simple traversal of user datagram protocol through session traversal utilities for NAT [STUN]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/104—Peer-to-peer [P2P] networks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
- H04L67/141—Setup of application sessions
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明实施例属于区块链领域,涉及一种分布式系统NAT穿透方法、装置、设备及存储介质,所述方法包括:当第一节点接入P2P网络时,与P2P网络中的公网节点建立通讯连接,获取所述公网节点的节点列表的节点信息,并更新本地节点列表;当第一节点请求存储资源时,通过P2P网络的重叠网络传输协议获取可为所述第一节点提供存储资源的最近的第二节点的信息;及第一节点根据获取的所第二节点的信息与所述第二节点建立通讯连接。本发明无需搭载中心STUN/TURN服务器,当对方节点无法直接通信时,请求临近目标节点的节点协助打洞实现穿透。
Description
技术领域
本发明涉及区块链技术领域,尤其涉及分布式系统NAT穿透方法、装置、设备及存储介质。
背景技术
P2P对等计算机网络,是一种在对等者(Peer)之间分配任务和工作负载的分布式应用架构,是对等计算模型在应用层形成的一种组网或网络形式。P2P广泛应用在诸如IM(尤其移动端IM)、在线直播、在线教育等领域。
NAT(Network Address Translator)技术通过将只能作为局域网内部地址而在因特网上不能被识别或直接使用的私有IP地址映射为Internet上合法IP地址,实现私有网络中节点对Internet的访问。NAT设备位于互联网与局域网之间,有翻译网络地址和保护网络安全的作用。但是NAT之后的主机不能作为服务器向外部网络提供服务,位于不同NAT之后的主机间也无法互相通信,因而NAT的穿透对P2P技术应用有重要意义。
现有技术一般采用STUN(Session Traversal Utilities for NAT,NAT会话穿越应用程序)/TURN(Traversal Using Relays around NAT,使用中继穿越NAT)服务器实现NAT的穿透。
但是,由于在现实网络中存在大量NAT主机,这些主机的保活报文将给STUN/TURN服务器带来巨大的性能压力,进而导致网络数据传输缓慢,甚至系统瘫痪等问题。
发明内容
本发明实施例的目的在于提出一种分布式系统NAT穿透方法、装置及设备,采用本发明不用搭载中心STUN/TURN服务器,当对方节点无法直接通信时,请求临近目标节点的节点协助打洞实现穿透。
为了解决上述技术问题,本发明实施例提供一种分布式系统NAT穿透方法,采用了如下所述的技术方案:当第一节点接入P2P网络时,与所述P2P网络中的公网节点建立通讯连接,获取所述公网节点的节点列表的节点信息,并根据获取的节点信息更新所述第一节点的本地节点列表;所述第一节点在请求存储资源时,通过所述P2P网络的重叠网络传输协议获取可为所述第一节点提供存储资源的最近的第二节点的信息;及所述第一节点根据获取的所述第二节点的信息与所述第二节点建立通讯连接。
进一步的,获取所述公网节点的节点列表的节点信息,并根据获取的节点信息更新所述第一节点的本地节点列表的步骤具体包括:所述第一节点获取所述公网节点的节点列表的节点信息,并根据获取的节点信息尝试与所述节点信息对应的节点建立通讯连接;如果所述第一节点成功与所述节点信息对应的节点建立通讯连接,则将所述节点信息添加到所述第一节点的本地节点列表中更新本地节点列表。
进一步的,在通过所述P2P网络的重叠网络传输协议获取可提供存储资源的最近的第二节点的信息的步骤具体包括:通过重叠网络传输协议的xor算法,查找所述公网节点的节点列表的节点和第一节点本地节点列表的节点,计算所述公网节点的节点列表的节点和所述第一节点的距离,以及所述第一节点本地节点列表的节点和所述第一节点的距离,并分别向所述公网节点的节点列表的节点和第一节点本地节点列表的节点发送存储资源请求,所述请求中包括请求的存储资源量;接收所述公网节点的节点列表的节点和第一节点本地节点列表的节点返回的存储资源反馈,所述反馈中包括可提供的存储资源量;根据所述存储资源反馈,筛选出可提供的存储资源量大于等于第一节点请求的存储资源量的节点,并根据筛选出的节点与所述第一节点的距离,来确定可提供存储资源的最近的第二节点
进一步的,所述第一节点根据获取的所述第二节点的信息与所述第二节点建立通讯连接的步骤具体包括:如果所述第一节点的本地节点列表中包含所述第二节点的信息,第一节点直接根据所述第二节点的信息与所述第二节点建立通讯连接。
进一步的,所述第一节点根据获取的所述第二节点的信息与所述第二节点建立通讯连接的步骤具体包括:如果所述第一节点的本地节点列表中没有所述第二节点的信息,所述第一节点遍历访问并更新所述本地列表中节点信息对应的节点,直至通过第三节点查询到所述第二节点的信息。
进一步的,所述第一节点遍历访问并更新所述本地列表中节点信息对应的节点,直至通过第三节点查询到所述第二节点的信息的步骤具体包括:所述第一节点遍历访问并更新所述本地列表中节点信息对应的节点,直至通过第三节点查询到所述第二节点的信息的步骤具体包括:所述第一节点遍历访问本地列表中的节点并向本地列表中的节点查询的第二节点的信息;所述第一节点接收本地列表中的节点返回的查询结果及所述节点的本地列表中的节点信息,并根据接收到的节点信息来更新所述第一节点的本地节点列表;当所述第一节点根据本地节点列表的节点的查询结果查询到所述第二节点的信息时,停止遍历访问本地列表中的其他节点,向所述第一节点反馈查询到所述第二节点信息的节点为所述第三节点。
进一步的,所述第一节点遍历访问并更新所述本地列表中节点信息对应的节点,直至通过第三节点查询到所述第二节点的信息的步骤之后,还包括:所述第一节点向所述第三节点发送打洞请求,以使所述第三节点将收到的打洞请求转发给第二节点,所述打洞请求包括第一节点的ID以及地址信息和第二节点的ID;所述第一节接收所述第三节点转发所述第二节点的应答消息,所述应答消息包含第二节点的打洞确认、ID和地址信息;所述第一节点根据所述第三节点转发的第二节点的应答消息与所述第二节点建立通讯连接。
进一步的,所述第一节点根据所述第三节点转发的第二节点的应答消息与所述第二节点建立通讯连接的步骤具体包括:所述第一节点利用所述第二节点的地址信息在网络中打通往第二节点的洞;如果所述打洞成功,则所述第一节点成功与所述第二节点建立通讯连接;如果所述打洞失败,则所述第一节点通过所述第三节点实现和第二节点的通讯。
为了解决上述技术问题,本发明实施例还提供一种NAT穿透装置,所述装置为P2P网络中的节点,采用了如下所述的技术方案:接入模块,用于接入P2P网络时,与所述P2P网络中的公网节点建立通讯连接,获取所述公网节点的节点列表的节点信息,并根据获取的节点信息更新所述第一节点的本地节点列表;获取模块,用于在请求存储资源时,通过所述P2P网络的重叠网络传输协议获取可向所述第一节点提供存储资源的最近的第二节点的信息;通讯模块,用于根据获取的所述第二节点的信息与所述第二节点建立通讯连接。
为了解决上述技术问题,本发明实施例还提供一种NAT穿透设备,所述设备为P2P网络中的存储节点,采用了如下所述的技术方案:所述NAT穿透设备包括处理器,存储器以及存储在所述存储器中的NAT穿透程序,所述NAT穿透程序被所述处理器运行时,实现如前所述的NAT穿透方法的步骤。
为了解决上述技术问题,本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有NAT穿透程序,所述NAT穿透程序被处理器运行时,实现实现如前所述的NAT穿透方法的步骤。
与现有技术相比,本发明实施例主要有以下有益效果:在当第一节点接入到P2P网络并请求资源时,可以通过KAD获取到可提供存储资源的最近的目标节点的信息。但是如果第一节点与目标节点无法直接通信时,则可以通过请求直接与目标节点连接的中间节点协助通讯,打洞实现穿透,而无需搭载中心STUN/TURN服务器,避免因STUN/TURN服务器因性能压力过大导致网络数据传输缓慢,甚至系统瘫痪等问题。
附图说明
为了更清楚地说明本发明中的方案,下面将对本发明实施例描述中所需要使用的附图作一个简单介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1根据本发明分布式系统NAT穿透方法的一个实施例的流程图;
图2是图1中步骤102和步骤103的一种具体实施方式的流程图;
图3是根据本发明NAT穿透装置的一个实施例的结构示意图;
图4是根据本发明的NAT穿透设备的一个实施例的结构示意图。
具体实施方式
除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同;本文中在申请的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本发明;本发明的说明书和权利要求书及上述附图说明中的术语“包括”和“具有”以及它们的任何变形,意图在于覆盖不排他的包含。本发明的说明书和权利要求书或上述附图中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本发明的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
为了使本技术领域的人员更好地理解本发明方案,下面将结合附图,对本发明实施例中的技术方案进行清楚、完整地描述。
本发明实施例的分布式系统NAT穿透方法主要应用于P2P(Peer-to-peer,对等)网络。在P2P网络环境中,彼此连接的多台计算机之间都处于对等的地位,各台计算机有相同的功能,无主从之分,一台计算机既可作为服务器,设定共享资源供网络中其他计算机所使用,又可以作为工作站。网络中的每一台计算机既能充当网络服务的请求者,又对其它计算机的请求做出响应,提供资源、服务和内容。
本发明实施例中,假设P2P网络上有第一节点Node1,第二节点Node2和第三节点Node3三个存储类型节点,另外还有2个bootstrap节点(启动节点):b1和b2。Node1,Node2,Node3启动时会连接b1或者b2节点,从而加入P2P网络。在本实施例中,假定Node1和Node2不可直接通信。b1和b2节点为公网节点。在实际应用中,b1和b2节点可以是普通节点,其设置在公网上,有公网地址,这样所有局域网里面的节点都能连接到它们。局域网的节点之间通信时不需要经过这些启动节点,它们的作用是在节点的启动阶段给节点提供P2P网络里面的节点的信息,节点信息存储在启动节点的路由列表中,包括节点的ID和地址信息。应该理解,图1中的存储类型节点和启动节点的数目仅仅是示意性的。根据实现需要,可以具有任意数目。
如图1所示,示出了根据本发明的分布式系统NAT穿透方法的一个实施例的流程图。所述的分布式系统NAT穿透方法,包括以下步骤:
步骤101,当第一节点接入P2P网络时,与所述P2P网络中的公网节点建立通讯连接,获取所述公网节点的节点列表的节点信息,并根据获取的节点信息更新所述第一节点的本地节点列表。
在本发明实施例中,第一节点获取所述公网节点的节点列表的节点信息,并根据获取的节点信息尝试与所述节点信息对应的节点建立通讯连接;如果所述第一节点成功与所述节点信息对应的节点建立通讯连接,则将所述节点信息添加到所述第一节点的本地节点列表中更新本地节点列表。
假设Node1,Node2,Node3启动时会连接b1或者b2节点,从而加入P2P网络。每个存储节点都有本地节点列表。例如当存储节点Node1接入P2P网络后,将与公网节点b1和b2节点建立通讯连接,获取b1和b2的节点列表中的节点信息。在最开始阶段,本地节点列表里仅包含几个默认的公网节点,后续存储节点会通过公网节点列表里的节点查询可用的节点,查询到之后会尝试连接对方,连接上之后再将此新节点添加到自己的本地节点列表,更新本地节点列表。如此往复,本地节点列表里面就会有越来多。
步骤102,所述第一节点在请求存储资源时,通过所述P2P网络的重叠网络传输协议(Kademlia,Kad)获取可为所述第一节点提供存储资源的最近的第二节点的信息。
Kad是一种分散式的P2P通信协议,将所有的用户连成一个网络,不通过服务器,从而直接进行搜索资源和来源的操作,减低服务器的负担。
在本发明实施例中,通过重叠网络传输协议的xor算法,查找所述公网节点的节点列表的节点和第一节点本地节点列表的节点,
计算公网节点的节点列表的节点和所述第一节点的距离,以及所述第一节点本地节点列表的节点和所述第一节点的距离,并分别向所述公网节点的节点列表的节点和第一节点本地节点列表的节点发送存储资源请求,所述请求中包括请求的存储资源量;接收所述公网节点的节点列表的节点和第一节点本地节点列表的节点返回的存储资源反馈,所述反馈中包括可提供的存储资源量;根据所述存储资源反馈,筛选出可提供的存储资源量大于等于第一节点请求的存储资源量的节点,并根据筛选出的节点与所述第一节点的距离,来确定可提供存储资源的最近的第二节点。
假设Node1请求存储一个Hash(散列)为156abc的数据,通过KAD发现最近节点为Node2。Node2的ID在Node3的本地节点列表里有记录,而Node3的ID和地址信息在Node1的本地节点列表中,那么表明虽然Node1和Node2无法直接连接,但都和Node3可以连接。
步骤103,所述第一节点根据获取的所述第二节点的信息与所述第二节点建立通讯连接。
如图2所示,所述步骤102和步骤103具体包括至少以下步骤:
步骤201,所述第一节点请求存储资源,通过KAD发现最近的第二节点。
步骤202,所述第一节点判断所述本地节点列表中是否包含所述第二节点的信息,若是执行步骤203,否则执行步骤204。
步骤203,所述第一节点直接根据所述第二节点的信息与所述第二节点建立通讯连接。
在本发明实施例中,如果第一节点的本地节点列表中里面已经有第二节点的信息,则会直连到第二节点。
步骤204,所述第一节点遍历访问并更新所述本地列表中节点信息对应的节点,直至通过第三节点查询到所述第二节点的信息。
在本发明实施例中,如果第一节点的本地节点列表中没有第二节点的信息,它会在本地节点列表中的其他节点不停查询第二节点。
假设P2P网络结构如下:第一节点连接到节点A,节点A连接到节点B,节点B连接到节点C和节点D,节点C连接到第二节点,则第一节点在本地节点列表中查询的第二节点过程如下:
第一节点向节点A查询第二节点的信息;A节点查询自己的本地节点列表,未查询到第二节点信息,则向第一节点反馈查询结果,并将A节点自己的本地节点列表中的节点信息发送给第一节点,第一节点将接收到的节点信息在本地节点列表中进行更新,假设A节点的本地节点列表中包括B节点信息,则更新后的第一节点的本地节点列表中将包括B节点信息;
第一节点向节点B查询第二节点的信息;B节点查询自己的本地节点列表,未查询到第二节点信息,向第一节点反馈查询结果,并将B节点本地节点列表中的节点信息发送给第一节点,第一节点将接收到的节点信息在本地节点列表中进行更新,假设B节点本地节点列表中的节点信息包括C节点和D节点的信息,则更新后的第一节点的本地节点列表中将包括C节点信息和D节点信息;
第一节点向节点C查询第二节点的信息;C节点查询自己的本地节点列表,查询到了第二节点信息,因此向第一节点反馈查询到的第二节点的节点信息;
通过上述步骤,第一节点查询到了第二节点的信息,所以不再继续访问节点D。此时,查找到第二节点的节点C即被视为第三节点,即第一节点和第二节点实现通信的中间节点。此外在上述的过程中,第一节点每次获取到新的节点信息后,都会更新本地节点列表。
步骤205,所述第一节点通过反馈第二节点信息的第三节点向所述第二节点发送打洞请求。
在本发明实施例中,第一节点得到第二节点的节点信息后,会先根据节点信息中的地址尝试直接连接第二节点。如果直接连接失败,则需要进行打洞或者中继。
具体的,第一节点向所述第三节点发送打洞请求,所述打洞请求包括第一节点的ID以及地址信息和第二节点的ID;第三节点将收到的打洞请求转发给第二节点;第二节点收到所述打洞请求后,通过所述第三节点向所述第一节点发送应答消息,所述应答消息包含第二节点的打洞确认、ID和地址信息,这样第一节点和第二节点都得到了对方的完整地址信息列表。
步骤206,所述第一节点根据所述第三节点转发的第二节点的应答消息与所述第二节点建立通讯连接。
具体的,当第一节点和第二节点有了对方的完整地址信息后,会挨个遍历地址列表中的地址彼此尝试在网络中打通向对方的洞,一旦打通,则连接成功;如果打洞失败,则可以找中继节点如第三节点来完成通信。可以看出这整个过程中,第三节点只是起一个中间人的作用来转发第一节点和第二节点双方的消息。
在本发明实施例的P2P网络中,所有节点运行的程序其实是一样的,打洞是通过去P2P网络里面动态查找节点并查询来打洞,无需通过固定的服务节点来打洞。本发明实施例中所有的节点都是动态的,有公网上的,也有NAT的,所有节点都会自动维护可连接的某一些节点列表信息,所有的查找和打洞都是通过动态的查询一系列节点来实现的,有自适应与弹性扩展的特性,不需要定义特定的节点类型,或者指定特定的节点来维护某些特定信息。因此在本发明实施例的P2P网络中,当第一节点与目标节点无法直接通信时,可以通过请求可以直接与目标节点连接的中间节点协助通讯,打洞实现穿透,无需搭载中心STUN/TURN服务器,避免因STUN/TURN服务器因性能压力过大导致网络数据传输缓慢,甚至系统瘫痪等问题。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,该计算机程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,前述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)等非易失性存储介质,或随机存储记忆体(Random Access Memory,RAM)等。
应该理解的是,虽然附图的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,其可以以其他的顺序执行。而且,附图的流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,其执行顺序也不必然是依次进行,而是可以与其他步骤或者其他步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
进一步参考图3,作为对上述图1和2所示方法的实现,本发明提供了一种NAT穿透装置300的一个实施例,该装置实施例与图2所示的方法实施例相对应。如图3所示,本发明实施例还提供一种NAT穿透装置300,所述装置为P2P网络中的节点,包括:
接入模块31,用于接入P2P网络时,与所述P2P网络中的公网节点建立通讯连接,获取所述公网节点的节点列表的节点信息,并根据获取的节点信息更新所述第一节点的本地节点列表;
获取模块32,用于在请求存储资源时,通过所述P2P网络的重叠网络传输协议获取可提供存储资源的最近的第二节点的信息;
通讯模块33,用于根据获取的所述第二节点的信息与所述第二节点建立通讯连接。
在本实施例的一些可选的实现方式中,如果所述本地节点列表中没有所述第二节点的信息,所述通讯模块33还用于:遍历访问并更新所述本地列表中节点信息对应的节点,直至通过第三节点查询到所述第二节点的信息。
在本实施例的一些可选的实现方式中,所述通讯模块33还用于:通过所述第三节点向所述第二节点发送打洞请求,所述打洞请求包括第一节点的ID以及地址信息和第二节点的ID;接收所述第二节点通过第三节点返回的应答消息,所述应答消息包含第二节点的打洞确认、ID和地址信息;利用所述第二节点的地址信息在网络中打通往第二节点的洞,如果所述打洞成功,则与所述第二节点建立通讯连接,如果所述打洞失败,则通过所述第三节点实现和第二节点的通讯。
在本发明实施例中,当NAT穿透装置300接入P2P网络后请求资源,但与目标节点无法直接通信时,可以通过请求可以直接与目标节点连接的中间节点协助通讯,打洞实现穿透,无需搭载中心STUN/TURN服务器,避免因STUN/TURN服务器因性能压力过大导致网络数据传输缓慢,甚至系统瘫痪等问题。
如图4所示,本发明实施例还提供一种NAT穿透设备400,所述装置为P2P网络中的存储节点,所述NAT穿透设备400包括处理器41,存储器42以及存储在所述存储器中的NAT穿透程序。在本发明实施例中,所述NAT穿透程序被所述处理器运行时,实现如前所述的NAT穿透方法的步骤。所述NAT穿透程序被执行时所实现的方法可参照本发明NAT穿透方法发各个实施例,此处不再赘述。
本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有NAT穿透程序,所述NAT穿透程序被处理器运行时,实现实现如前所述的NAT穿透方法的步骤。所述NAT穿透程序被执行时所实现的方法可参照本发明NAT穿透方法发各个实施例,此处不再赘述。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
显然,以上所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例,附图中给出了本发明的较佳实施例,但并不限制本发明的专利范围。本发明可以以许多不同的形式来实现,相反地,提供这些实施例的目的是使对本发明的公开内容的理解更加透彻全面。尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来而言,其依然可以对前述各具体实施方式所记载的技术方案进行修改,或者对其中部分技术特征进行等效替换。凡是利用本发明说明书及附图内容所做的等效结构,直接或间接运用在其他相关的技术领域,均同理在本发明专利保护范围之内。
Claims (7)
1.一种分布式系统NAT穿透方法,其特征在于,包括下述步骤:
当第一节点接入P2P网络时,与所述P2P网络中的公网节点建立通讯连接,获取所述公网节点的节点列表的节点信息,并根据获取的节点信息更新所述第一节点的本地节点列表;
所述第一节点在请求存储资源时,通过所述P2P网络的重叠网络传输协议获取可为所述第一节点提供存储资源的最近的第二节点的信息;及
如果所述第一节点的本地节点列表中包含所述第二节点的信息,所述第一节点根据所述第二节点的信息与所述第二节点建立通讯连接;
如果所述第一节点的本地节点列表中未包含所述第二节点的信息,所述第一节点遍历访问本地列表中的节点并向本地列表中的节点查询第二节点的信息;所述第一节点接收本地列表中的节点返回的查询结果及所述节点的本地列表中的节点信息,根据接收到的节点信息来更新所述第一节点的本地节点列表;当所述第一节点根据本地节点列表的节点的查询结果查询到所述第二节点的信息时,停止遍历访问本地列表中的其他节点,向所述第一节点反馈查询到所述第二节点信息的节点为第三节点;所述第一节点向所述第三节点发送打洞请求,以使所述第三节点将收到的打洞请求转发给第二节点,所述打洞请求包括第一节点的ID以及地址信息和第二节点的ID;所述第一节点接收所述第三节点转发所述第二节点的应答消息,所述应答消息包含第二节点的打洞确认、ID和地址信息;所述第一节点根据所述第三节点转发的第二节点的应答消息与所述第二节点建立通讯连接。
2.根据权利要求1所述的分布式系统NAT穿透方法,其特征在于,获取所述公网节点的节点列表的节点信息,并根据获取的节点信息更新所述第一节点的本地节点列表的步骤具体包括:
所述第一节点获取所述公网节点的节点列表的节点信息,并根据获取的节点信息尝试与所述节点信息对应的节点建立通讯连接;
如果所述第一节点成功与所述节点信息对应的节点建立通讯连接,则将所述节点信息添加到所述第一节点的本地节点列表中更新本地节点列表。
3.根据权利要求1所述的分布式系统NAT穿透方法,其特征在于,在通过所述P2P网络的重叠网络传输协议获取可提供存储资源的最近的第二节点的信息的步骤具体包括:
通过重叠网络传输协议的xor算法,查找所述公网节点的节点列表的节点和第一节点本地节点列表的节点,计算所述公网节点的节点列表的节点和所述第一节点的距离,以及所述第一节点本地节点列表的节点和所述第一节点的距离,并分别向所述公网节点的节点列表的节点和第一节点本地节点列表的节点发送存储资源请求,所述请求中包括请求的存储资源量;接收所述公网节点的节点列表的节点和第一节点本地节点列表的节点返回的存储资源反馈,所述反馈中包括可提供的存储资源量;
根据所述存储资源反馈,筛选出可提供的存储资源量大于等于第一节点请求的存储资源量的节点,并根据筛选出的节点与所述第一节点的距离,来确定可提供存储资源的最近的第二节点。
4.根据权利要求1所述的分布式系统NAT穿透方法,其特征在于,所述第一节点根据所述第三节点转发的第二节点的应答消息与所述第二节点建立通讯连接的步骤具体包括:
所述第一节点利用所述第二节点的地址信息在网络中打通往第二节点的洞;
如果打洞成功,则所述第一节点成功与所述第二节点建立通讯连接;
如果打洞失败,则所述第一节点通过所述第三节点实现和第二节点的通讯。
5.一种NAT穿透装置,所述装置为P2P网络中的存储节点,其特征在于,包括:
接入模块,用于接入P2P网络时,与所述P2P网络中的公网节点建立通讯连接,获取所述公网节点的节点列表的节点信息,并根据获取的节点信息更新第一节点的本地节点列表;
获取模块,用于在请求存储资源时,通过所述P2P网络的重叠网络传输协议获取可为所述第一节点提供存储资源的最近的第二节点的信息;
通讯模块,用于如果所述第一节点的本地节点列表中包含所述第二节点的信息,所述第一节点根据所述第二节点的信息与所述第二节点建立通讯连接;
如果所述第一节点的本地节点列表中未包含所述第二节点的信息,所述第一节点遍历访问本地列表中的节点并向本地列表中的节点查询第二节点的信息;所述第一节点接收本地列表中的节点返回的查询结果及所述节点的本地列表中的节点信息,根据接收到的节点信息来更新所述第一节点的本地节点列表;当所述第一节点根据本地节点列表的节点的查询结果查询到所述第二节点的信息时,停止遍历访问本地列表中的其他节点,向所述第一节点反馈查询到所述第二节点信息的节点为第三节点;所述第一节点向所述第三节点发送打洞请求,以使所述第三节点将收到的打洞请求转发给第二节点,所述打洞请求包括第一节点的ID以及地址信息和第二节点的ID;所述第一节点接收所述第三节点转发所述第二节点的应答消息,所述应答消息包含第二节点的打洞确认、ID和地址信息;所述第一节点根据所述第三节点转发的第二节点的应答消息与所述第二节点建立通讯连接。
6.一种NAT穿透设备,所述设备为P2P网络中的存储节点,其特征在于,所述NAT穿透设备包括处理器,存储器以及存储在所述存储器中的NAT穿透程序,所述NAT穿透程序被所述处理器运行时,实现如权利要求1-4中任一项所述的NAT穿透方法的步骤。
7.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有NAT穿透程序,所述NAT穿透程序被处理器运行时,实现如权利要求1-4中任一项所述的方法的步骤。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910898337.1A CN110830601B (zh) | 2019-09-23 | 2019-09-23 | 分布式系统nat穿透方法、装置、设备及存储介质 |
PCT/CN2019/117700 WO2021056738A1 (zh) | 2019-09-23 | 2019-11-12 | 分布式系统nat穿透方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910898337.1A CN110830601B (zh) | 2019-09-23 | 2019-09-23 | 分布式系统nat穿透方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110830601A CN110830601A (zh) | 2020-02-21 |
CN110830601B true CN110830601B (zh) | 2022-07-19 |
Family
ID=69548117
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910898337.1A Active CN110830601B (zh) | 2019-09-23 | 2019-09-23 | 分布式系统nat穿透方法、装置、设备及存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN110830601B (zh) |
WO (1) | WO2021056738A1 (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111405038A (zh) * | 2020-03-13 | 2020-07-10 | 杭州复杂美科技有限公司 | 区块链内网节点连接方法、设备和存储介质 |
CN112822242B (zh) * | 2020-12-30 | 2023-03-24 | 杭州趣链科技有限公司 | 一种点对点网络及其节点通信方法和装置 |
CN113347268B (zh) * | 2021-06-23 | 2022-11-08 | 广州炒米信息科技有限公司 | 基于分布式网络组网方法、装置、存储介质及计算机设备 |
CN114285785A (zh) * | 2021-12-24 | 2022-04-05 | 广州炒米信息科技有限公司 | 存储系统搭建方法、装置、计算机设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101039247A (zh) * | 2007-03-13 | 2007-09-19 | 华为技术有限公司 | 一种点到点网络系统及重叠网间节点的互通方法 |
CN101741914A (zh) * | 2010-02-03 | 2010-06-16 | 上海悠络客电子科技有限公司 | 一种p2p网络中穿透nat建立覆盖网的方法和系统 |
CN102045409A (zh) * | 2009-10-13 | 2011-05-04 | 财团法人工业技术研究院 | 网络穿透方法及网络通讯系统 |
CN109922156A (zh) * | 2019-03-20 | 2019-06-21 | 深圳市网心科技有限公司 | 一种数据通信方法及其相关设备 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101340457B (zh) * | 2008-08-29 | 2011-12-14 | 北京邮电大学 | 一种不依赖于中心服务器的对等网络启动方法和系统 |
CN102271144A (zh) * | 2010-06-01 | 2011-12-07 | 中兴通讯股份有限公司 | P2p叠加网络及其数据资源操作方法和新节点加入方法 |
CN109218363B (zh) * | 2017-07-03 | 2021-06-08 | 中国移动通信有限公司研究院 | 内容分发方法、网络节点及存储介质 |
-
2019
- 2019-09-23 CN CN201910898337.1A patent/CN110830601B/zh active Active
- 2019-11-12 WO PCT/CN2019/117700 patent/WO2021056738A1/zh active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101039247A (zh) * | 2007-03-13 | 2007-09-19 | 华为技术有限公司 | 一种点到点网络系统及重叠网间节点的互通方法 |
CN102045409A (zh) * | 2009-10-13 | 2011-05-04 | 财团法人工业技术研究院 | 网络穿透方法及网络通讯系统 |
CN101741914A (zh) * | 2010-02-03 | 2010-06-16 | 上海悠络客电子科技有限公司 | 一种p2p网络中穿透nat建立覆盖网的方法和系统 |
CN109922156A (zh) * | 2019-03-20 | 2019-06-21 | 深圳市网心科技有限公司 | 一种数据通信方法及其相关设备 |
Non-Patent Citations (4)
Title |
---|
DHT网络中一种TCP穿越NAT机制;耿福泉等;《东北大学学报(自然科学版)》;20070128(第01期);51-54 * |
Kademlia的研究与实现;谢瑾等;《计算机时代》;20091002(第10期);56-58 * |
一种UDP穿越NAT的新方案;张国印等;《计算机工程》;20080620(第12期);118-119+137 * |
基于Kademlia的结构化对等网络原理及其应用;平小艳等;《科技信息(科学教研)》;20080820(第24期);416-417 * |
Also Published As
Publication number | Publication date |
---|---|
CN110830601A (zh) | 2020-02-21 |
WO2021056738A1 (zh) | 2021-04-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110830601B (zh) | 分布式系统nat穿透方法、装置、设备及存储介质 | |
CN108650182B (zh) | 网络通信方法、系统、装置、设备及存储介质 | |
RU2413981C2 (ru) | Распределенное кэширование файлов в сети | |
US10637794B2 (en) | Resource subscription method, resource subscription apparatus, and resource subscription system | |
WO2019129154A1 (zh) | 业务请求处理方法及装置 | |
CN105376299B (zh) | 一种网络通信方法、设备及网络附属存储设备 | |
CN113452592B (zh) | 混合云架构下的跨云数据访问方法及装置 | |
TWI584194B (zh) | 在一服務導向架構(soa)網路中尋求服務之技術 | |
KR20050117542A (ko) | 피어-투-피어 협력 및 VoIP를 위한 메타-탐색 웹서비스-기반 구조 | |
US11178101B1 (en) | Method and apparatus of establishing a connection between devices using cached connection information | |
CN113259423B (zh) | P2p系统中客户端联网访问的方法及装置 | |
CN113364741A (zh) | 一种应用访问方法及代理服务器 | |
US9124598B2 (en) | Method and apparatus of establishing a connection between devices using cached connection information | |
US11909634B2 (en) | ISCSI multipath management system and method, device, and storage medium | |
Peng et al. | M-CAN: a lookup protocol for mobile peer-to-peer environment | |
Tracey et al. | Using a DHT in a Peer to Peer Architecture for the Internet of Things | |
Lombera et al. | Peer management for iTrust over Wi-Fi direct | |
Knoll et al. | Decentralized bootstrapping in pervasive applications | |
Cho | P2p-based mobile social networks | |
US8832281B2 (en) | Utilizing resources of a peer-to-peer computer environment | |
EP4057577A1 (en) | Addressing method, addressing system and addressing apparatus | |
CN111711654A (zh) | P2p通讯连接方法、电子设备及计算机可读存储介质 | |
KR20240078931A (ko) | 엣지 컴퓨팅 서비스 제공 방법 및 이를 위한 장치 | |
Cowan | S4h: A Peer-to-Peer Search Engine with Explicit Trust | |
Chou et al. | A DHT-based Resource Provision Enquiry for Cloud Computing Interoperability |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40019505 Country of ref document: HK |
|
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |