一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

区块链节点的上链方法、装置以及区块链节点与流程

2022-02-25 18:12:05 来源:中国专利 TAG:


1.本技术涉及区块链领域,具体涉及区块链节点的上链方法、装置以及区块链节点。


背景技术:

2.为了解决公网互联网协议(internet protocol,ip)地址不足的问题,网络地址转换(network address translation,nat)技术应运而生,nat节点部署在公网(或者可称为互联网)和私网(或者可称为局域网)之间,nat节点可为私网中的设备配置私有ip地址,这些设备在访问公网时,nat节点可将私有ip地址转换为公网ip地址,如此没有公网ip地址的设备也可通过nat节点对外进行通信。
3.在nat的应用场景中,以区块链为例,为推广区块链业务,需要加入大量的区块链节点,而这些节点中,部分没有公网ip地址的节点,则可通过nat技术加入到区块链网络中。
4.在对现有技术的研究和实践过程中,本技术的发明人发现,部分设备在使用nat技术加入到区块链时,仍存在网络问题,无法正确加入到区块链中,无法完成上链操作。


技术实现要素:

5.本技术提供了区块链节点的上链方法、装置以及区块链节点,用于当没有公网ip地址的节点通过nat业务进行上链时,在一定程度上,保证该节点可通过nat业务正常上链。
6.第一方面,本技术提供了一种区块链节点的上链方法,方法包括:
7.区块链节点接收待上链节点的上链请求,其中,上链请求用于请求加入区块链节点所属的区块链网络;
8.区块链节点根据上链请求,获取待上链节点的nat类型,其中,nat类型用于指示待上链节点对应的nat业务的业务类型,nat业务用于为待上链节点进行公有ip地址与私有ip地址之间的转换;
9.区块链节点为待上链节点分配nat类型对应的目标区块链节点,以使得待上链节点通过目标区块链节点进行上链。
10.在一种示例性的实现方式中,区块链节点包括第一区块链节点以及第二区块链节点,区块链节点根据上链请求,获取待上链节点对应的nat类型包括:
11.第一区块链节点通过自身的第一端口接收到上链请求后,第一区块链节点通过第一端口向待上链节点发送第一数据包,第一区块链节点还通过自身的第二端口向待上链节点发送第二数据包,第二区块链节点通过自身的第三端口向待上链节点发送第三数据包;
12.若第二区块链节点收到第三数据包的响应数据包,则第二区块链节确认nat类型为全锥nat类型;
13.或者,若第二区块链节点未收到第三数据包的响应数据包且第一区块链节点收到第二数据包的响应数据包,则第一区块链节点确定nat类型为ip限制性nat类型;
14.或者,若第二区块链节点未收到第三数据包的响应数据包、第一区块链节点未收到第二数据包的响应数据包且第一区块链节点收到第一数据包的响应数据包,则第一区块
链节点确定nat类型可能为端口限制性nat类型或者为对称nat类型。
15.在又一种示例性的实现方式中,第一区块链节点确定nat类型可能为端口限制性nat类型或者为对称nat类型之后,方法还包括:
16.第二区块链节点通过第四端口接收到待上链节点发送的第四数据包后,第二区块链节点向待上链节点发送第四数据包的响应数据包;
17.第一区块链节点或者第二区块链节点根据待上链节点发送的指示信息,确定待上链节点的nat类型,指示信息所指示的nat类型由待上链节点根据第一端口号以及第二端口号确定得到,第一端口号为nat业务转发第一数据包时分配的端口号,第二端口号为nat业务转发第四数据包的响应数据包时分配的端口号,若端口号相同,则nat类型为端口限制性nat类型,若端口号不同,则nat类型为对称nat类型。
18.在又一种示例性的实现方式中,区块链节点根据上链请求,获取待上链节点的nat类型包括:
19.区块链节点根据上链请求中预设字段指示的nat类型,确定nat类型。
20.在又一种示例性的实现方式中,区块链节点为待上链节点分配nat类型对应的目标区块链节点包括:
21.当nat类型为对称nat类型时,区块链节点为待上链节点分配第一目标区块链节点,其中,第一目标区块链节点联通的nat业务的业务类型为全锥nat类型或者ip限制性nat类型;
22.或者,当nat类型为端口限制性nat类型时,区块链节点为待上链节点分配第二目标区块链节点,其中,第二目标区块链节点联通的nat业务的业务类型为全锥nat类型、ip限制性nat类型或者端口限制性nat类型;
23.或者,当nat类型为全锥nat类型或者ip限制性nat类型时,区块链节点为待上链节点分配第三目标区块链节点,其中,第三目标区块链节点联通的nat业务的业务类型为全锥nat类型、ip限制性nat类型、端口限制性nat类型或者对称nat类型。
24.在又一种示例性的实现方式中,区块链节点为待上链节点分配nat类型对应的目标区块链节点包括:
25.区块链节点在目标区块链节点对应的节点列表中,配置待上链节点的私有ip地址、待上链节点的目标端口号、目标区块链节点的目标公有ip地址以及目标区块链节点的目标端口号之间的对应关系;
26.区块链节点指示待上链节点与目标区块链节点建立通信连接,以通过目标公有ip地址以及目标端口号进行上链。
27.在又一种示例性的实现方式中,区块链节点根据上链请求,获取待上链节点对应的nat类型之前,方法还包括:
28.区块链节点获取上链请求的源ip地址;
29.区块链节点获取上链请求中预设字段指示的待上链节点的真实ip地址;
30.当源ip地址以及真实ip地址不同时,区块链节点确定待上链节点为通过nat业务进行通信的节点。
31.第二方面,本技术还提供了一种区块链节点的上链装置,装置包括:
32.收发单元,用于接收待上链节点的上链请求,其中,上链请求用于请求加入区块链
节点所属的区块链网络;
33.处理单元,用于根据上链请求,获取待上链节点的nat类型,其中,nat类型用于指示待上链节点对应的nat业务的业务类型,nat业务用于为待上链节点进行公有ip地址与私有ip地址之间的转换;为待上链节点分配nat类型对应的目标区块链节点,以使得待上链节点通过目标区块链节点进行上链。
34.在一种示例性的实现方式中,处理单元,具体用于:
35.第一区块链节点通过自身的第一端口接收到上链请求后,通过第一区块链节点的第一端口向待上链节点发送第一数据包,还通过第一区块链节点的第二端口向待上链节点发送第二数据包,还通过第二区块链节点的第三端口向待上链节点发送第三数据包;
36.若第二区块链节点收到第三数据包的响应数据包,则确认nat类型为全锥nat类型;
37.或者,若第二区块链节点未收到第三数据包的响应数据包且第一区块链节点收到第二数据包的响应数据包,则确定nat类型为ip限制性nat类型;
38.或者,若第二区块链节点未收到第三数据包的响应数据包、第一区块链节点未收到第二数据包的响应数据包且第一区块链节点收到第一数据包的响应数据包,则确定nat类型可能为端口限制性nat类型或者为对称nat类型。
39.在又一种示例性的实现方式中,处理单元,还用于:
40.第二区块链节点通过自身的第四端口接收到待上链节点发送的第四数据包后,通过第二区块链节点自身的第四端口向待上链节点发送第四数据包的响应数据包;
41.根据待上链节点发送的指示信息,确定待上链节点的nat类型,指示信息所指示的nat类型由待上链节点根据第一端口号以及第二端口号确定得到,第一端口号为nat业务转发第一数据包时分配的端口号,第二端口号为nat业务转发第四数据包的响应数据包时分配的端口号,若端口号相同,则nat类型为端口限制性nat类型,若端口号不同,则nat类型为对称nat类型。
42.在又一种示例性的实现方式中,处理单元,具体用于:
43.根据上链请求中预设字段指示的nat类型,确定nat类型。
44.在又一种示例性的实现方式中,处理单元,具体用于:
45.当nat类型为对称nat类型时,为待上链节点分配第一目标区块链节点,其中,第一目标区块链节点联通的nat业务的业务类型为全锥nat类型或者ip限制性nat类型;
46.或者,当nat类型为端口限制性nat类型时,为待上链节点分配第二目标区块链节点,其中,第二目标区块链节点联通的nat业务的业务类型为全锥nat类型、ip限制性nat类型或者端口限制性nat类型;
47.或者,当nat类型为全锥nat类型或者ip限制性nat类型时,为待上链节点分配第三目标区块链节点,其中,第三目标区块链节点联通的nat业务的业务类型为全锥nat类型、ip限制性nat类型、端口限制性nat类型或者对称nat类型。
48.在又一种示例性的实现方式中,处理单元,具体用于:
49.在目标区块链节点对应的节点列表中,配置待上链节点的私有ip地址、待上链节点的目标端口号、目标区块链节点的目标公有ip地址以及目标区块链节点的目标端口号之间的对应关系;
50.指示待上链节点与目标区块链节点建立通信连接,以通过目标公有ip地址以及目标端口号进行上链。
51.在又一种示例性的实现方式中,处理单元,还用于:
52.获取上链请求的源ip地址;
53.获取上链请求中预设字段指示的待上链节点的真实ip地址;
54.当源ip地址以及真实ip地址不同时,确定待上链节点为通过nat业务进行通信的节点。
55.第三方面,本技术还提供了一种区块链节点,包括处理器和存储器,存储器中存储有计算机程序,处理器调用存储器中的计算机程序时执行本技术提供的任一种方法中的步骤。
56.第四方面,本技术还提供了一种计算机可读存储介质,计算机可读存储介质存储有多条指令,指令适于处理器进行加载,以执行本技术提供的任一种方法中的步骤。
57.从以上内容可得出,本技术具有以下的有益效果:
58.区块链节点在接收到待上链节点的上链请求时,该上链请求用于请求加入该区块链节点所属的区块链网络,区块链节点根据该上链请求,获取该待上链节点的nat类型,该nat类型用于指示该待上链节点的nat业务的业务类型,该nat业务用于为该待上链节点进行公有ip地址与私有ip地址之间的转换,区块链节点根据获取到的nat类型,为待上链节点分配该nat类型对应的目标区块链节点,以使得该待上链节点可通过该目标区块链节点提供的na业务进行上链。在这过程中,由于待上链节点是通过实时分配的目标区块链节点所提供的nat业务进行上链的,而该目标区块链节点又与该待上链节点对应的nat类型相匹配,因此可保证不同nat类型的待上链节点,都可通过对应nat类型所匹配的目标区块链节点进行正常的上链,并与区块链网络中的任意区块链节点正常进行通信。
附图说明
59.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
60.图1为本技术的一种场景示意图;
61.图2为本技术的又一种场景示意图;
62.图3为本技术区块链节点的上链方法的一种流程示意图;
63.图4为本技术确定待上链节点是否为通过nat业务进行通信的节点的一种流程示意图;
64.图5为本技术获取待上链节点的nat类型的一种流程示意图;
65.图6为本技术的又一种场景示意图;
66.图7为本技术分配目标区块链节点的一种流程示意图;
67.图8为本技术区块链节点的上链装置的一种结构示意图;
68.图9为本技术区块链节点的一种结构示意图。
具体实施方式
69.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
70.在以下的说明中,本技术的具体实施例将参考由一部或多部计算机所执行的步骤及符号来说明,除非另有述明。因此,这些步骤及操作将有数次提到由计算机执行,本文所指的计算机执行包括了由代表了以一结构化型式中的数据的电子信号的计算机处理单元的操作。此操作转换该数据或将其维持在该计算机的内存系统中的位置处,其可重新配置或另外以本领域测试人员所熟知的方式来改变该计算机的运作。该数据所维持的数据结构为该内存的实体位置,其具有由该数据格式所定义的特定特性。但是,本技术原理以上述文字来说明,其并不代表为一种限制,本领域测试人员将可了解到以下所述的多种步骤及操作亦可实施在硬件当中。
71.本技术的原理使用许多其它泛用性或特定目的运算、通信环境或组态来进行操作。所熟知的适合用于本技术的运算系统、环境与组态的范例可包括(但不限于)手持电话、个人计算机、服务器、多处理器系统、微电脑为主的系统、主架构型计算机、及分布式运算环境,其中包括了任何的上述系统或装置。
72.本技术中的术语“第一”、“第二”和“第三”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。
73.首先,在介绍本技术实施例之前,先介绍下本技术实施例关于应用背景的相关内容。
74.本技术实施例提供的区块链节点的上链方法、装置以及计算机可读存储介质,用于应用在区块链节点上,当没有公网ip地址的节点通过nat进行上链时,在一定程度上,保证该节点可通过nat正常上链。
75.参阅图1示出的本技术实施例的一种场景示意图,在现有的相关技术中,若某个待上链节点没有公网ip地址,又是通过nat业务与外部网络进行通信,在申请加入区块链网络、进行上链时,区块链节点接收到该待上链节点的上链请求后,可将该待上链节点对应nat节点的公网ip地址识别为该待上链节点的公网ip地址,进行上链。然而,在该上链场景中发现,部分待上链节点(例如图1中的待上链节点a)在通过nat业务上链时,仍存在网络问题,无法正常上链、加入区块链网络中。
76.基于现有的相关技术存在的上述缺陷,本技术实施例提供了区块链节点的上链方法,至少在一定程度上可克服现有的相关技术所存在的缺陷。
77.如图2示出的本技术实施例的又一种场景示意图,在本技术实施例中,当待上链节点a向某一区块链节点发起上链请求时,根据待上链节点a对应的nat类型,为该待上链节点a分配对应的目标区块链节点,使得待上链节点a可通过目标区块链节点正常进行上链,并与区块链网络中的任意区块链节点正常进行通信,其中,匹配的目标区块链节点可能为接收到上链请求的区块链节点,即,接收到上链请求的区块链节点可能就是待上链节点对应的nat类型所匹配的目标区块链节点。
78.本技术实施例提及的区块链节点,具体可以为服务器设备、物理主机或者用户设
备(user equipment,ue)等不同类型的设备,其中,ue具体可以为智能手机、平板电脑、笔记本电脑、掌上电脑、台式电脑或者个人数字助理(personal digital assistant,pda)等终端设备。
79.下面,参阅图3示出的本技术区块链节点的上链方法的一种流程示意图,本技术区块链节点的上链方法,包括如下步骤s301至步骤s303,详情如下:
80.步骤s301,区块链节点接收待上链节点的上链请求,其中,上链请求用于请求加入区块链节点所属的区块链网络;
81.步骤s302,区块链节点根据上链请求,获取待上链节点的nat类型,其中,nat类型用于指示待上链节点的nat业务的业务类型,nat业务用于为待上链节点进行公有ip地址与私有ip地址之间的转换;
82.步骤s303,区块链节点为待上链节点分配nat类型对应的目标区块链节点,以使得待上链节点通过目标区块链节点进行上链。
83.在本技术中,区块链节点在接收到待上链节点的上链请求时,该上链请求用于请求加入该区块链节点所属的区块链网络,区块链节点根据该上链请求,获取该待上链节点的nat类型,该nat类型用于指示该待上链节点的nat业务的业务类型,该nat业务用于为该待上链节点进行公有ip地址与私有ip地址之间的转换,区块链节点根据获取到的nat类型,为待上链节点分配该nat类型对应的目标区块链节点,以使得该待上链节点可通过该目标区块链节点提供的nat业务进行上链。在这过程中,由于待上链节点是通过实时分配的目标区块链节点所提供的nat业务进行上链的,而该目标区块链节点又与该待上链节点对应的nat类型相匹配,因此可保证不同nat类型的待上链节点,都可通过对应nat类型所匹配的目标区块链节点进行正常的上链,并与区块链网络中的任意区块链节点正常进行通信。
84.下面,具体介绍上述图3所示区块链节点的上链方法的各步骤。
85.在本技术中,当某一节点想要加入到某个区块链网络中,可向该区块链网络中的任意区块链节点,或者某些特定的区块链节点(例如区块链网络中的主节点)发送上链请求,以触发该区块链网络对该节点的上链请求进行审核以及相应的上链处理或者拒绝处理。
86.示例性的,例如手机可安装x区块链网络的应用程序(application,app),用户可在该app上注册账户,在app的运行过程中,向该app对应的x区块链网络发起上链请求,若审核通过,则该手机可完成相应的上链操作,成为该x区块链网络中的一个区块链节点。
87.在本技术中,若待上链节点为通过nat业务访问公网的节点,则可根据待上链节点发起的上链请求的触发,获取该待上链节点的nat类型,以获知该待上链节点当前所对应的nat类型。
88.可以理解的是,在实际应用中,以待上链节点为手机为例,手机的所在位置,容易随用户的移动而改变,对应的,手机所连接的网络,例如sim卡附着的4g网络、wi-fi模块连接的wi-fi网络,其获取的公网ip地址,也是会随着连接对象或者所处位置的不同,而改变公网ip地址。对应的,在前一时刻手机所使用的公网ip地址是公网ip地址a,下一时刻手机所使用的公网ip地址可能切换至公网ip地址b。
89.而从前面的内容可知,公网ip地址是由nat节点提供的,而在切换公网ip地址的同时,nat节点也可能是变化的,因此,手机对应的nat类型具有的动态变化的情况。
90.也因此,本技术区块链节点的上链方法,还可应用在更新场景中,即,待上链节点在过去时候可能已完成了上链操作,但是随着当前待上链节点对应的nat类型的更新,而重新进行上链操作,以保证当前的待上链节点可正常上链,并与区块链网络中的任意区块链节点正常进行通信。在根据上链请求,获取待上链节点的nat类型之前,区块链节点可先确定待上链节点是否为通过nat业务进行通信的节点,若是通过nat业务进行通信的节点,先获取该待上链节点对应的nat类型,再根据nat类型分配区块链节点进行上链;若不是通过nat业务进行通信的节点,即,待上链节点本身具有公网ip地址,则在接收到待上链请求后,可直接对该待上链节点进行上链操作。
91.在一种示例性的实现方式中,如图4示出的本技术确定待上链节点是否为通过nat业务进行通信的节点的一种流程示意图,在根据上链请求,获取待上链节点的nat类型之前,方法还可包括:
92.步骤s401,区块链节点获取上链请求的源ip地址;
93.可以理解,消息中携带的源ip地址用于指示消息的来源,待上链节点发出消息后,若没有经过nat节点(进行公有ip地址-私有ip地址的转换),则源ip地址就是该消息的起始地址,即区块链节点本身的公网ip地址;
94.若该消息经过nat节点(进行私有ip地址-公有ip地址的转换),则其源ip地址会随之进行改变,并从原来的待上链节点的真实ip地址变为nat节点的公网ip地址。
95.步骤s402,区块链节点获取上链请求中预设字段指示的待上链节点的真实ip地址;
96.在本技术中,待上链节点在发起上链请求时,除了发出的消息会携带的源ip地址,还可在预设字段指示所请求上链的节点的私有ip地址,该私有ip地址为待上链节点本地的真实ip地址,即使上链请求经过nat节点,并进行私有ip地址-公有ip地址的转换,该预设字段所写入的真实ip地址也是不变的。
97.步骤s403,当源ip地址以及真实ip地址不同时,区块链节点确定待上链节点为通过nat业务进行通信的节点。
98.从上述内容可以看出的是,若待上链节点发起的上链请求经过nat节点,并进行私有ip地址-公有ip地址的转换,则源ip地址以及预设字段所指示的真实ip地址是不同的,换句话说,待上链节点就是通过nat业务进行通信的节点,可通过后续的nat类型的确定处理,分配nat类型相应的区块链节点进行上链;若相同,则意味着待上链节点本身具有公网ip地址,无需继续执行后续的步骤,无需根据上链请求,获取待上链节点的nat类型。
99.根据上链请求,获取待上链节点对应的nat类型,主要可分为两种方式,一种是被动获取方式,另一种是主动获取方式。
100.第一种,被动获取方式
101.区块链节点根据上链请求中预设字段指示的nat类型,确定nat类型。
102.可以理解,待上链节点可能在本地已获知了自身所接受的nat业务的nat类型。
103.示例性的,为服务器配置的nat节点所提供的nat业务是设置为固定的,因此,nat类型也是固定的,在该情况下,服务器在发起上链请求时,可直接在上链请求的预设字段,写入预设的nat类型,以通知接收到上链请求的区块链节点。
104.示例性的,待上链节点也可实时获取当前所接受的nat业务的nat类型,例如可向
nat节点发送查询请求,以查询nat节点向待上链节点提供的nat业务的nat类型;或者,待上链节点也可从nat节点在向待上链节点提供nat业务时下发的业务信息中,获取该nat业务的nat类型。
105.第二种,主动获取方式
106.在本技术中,可通过实时确定方式,主动判断待上链节点对应的nat类型。
107.在又一种示例性的实现方式中,参阅图5示出的本技术获取待上链节点的nat类型的一种流程示意图,根据上链请求,获取待上链节点的nat类型,具体可包括如下步骤s501至步骤s504:
108.步骤s501,第一区块链节点通过自身的第一端口接收到上链请求后,第一区块链节点通过第一端口向待上链节点发送第一数据包,第一区块链节点还通过第二端口向待上链节点发送第二数据包,第二区块链节点通过第三端口向待上链节点发送第三数据包;
109.在本技术中,端口指的是通信端口,为输入输出接口技术下实现的应用程序接口,端口可以是物理接口,如串口、并口、输入/输出设备以及适配器接口等;端口也可以是软件接口,在软件中,它是一个逻辑结构,它是一个识别特定进程或某类服务的逻辑结构。
110.一个区块链节点可具有一个或者多个端口,通过端口可向其他设备发送数据,或者接收其他设备发送的数据。
111.在本技术中所提及的第一数据包、第二数据包、第三数据包以及第四数据包,可以为任意的数据包,用于测试接收到的节点是否可以反馈响应数据包,该响应数据包用于指示已接收到数据包。例如,若a区块链节点向b区块链节点发送x数据包,b区块链节点接收到该x数据包后,可向a区块链节点反馈响应数据包,以指示已收到该x数据包,a区块链节点收到该响应数据包后,可确定b区块链节点接收到之前发送的x数据包。在实际应用中,响应数据包可以为确认字符(acknowledge character,ack)数据包。
112.需要理解的是,本技术中所提及的第一端口、第二端口、第三端口以及第四端口,仅用于区分不同的端口,并未对这些端口本身进行限定,例如并未对端口的所在设备、端口协议等方面进行限定;类似的,第一数据包、第二数据包、第三数据包以及第四数据,仅用于区分不同的数据包,并未对这些数据包本身进行典型,例如并未对数据包的数据包内容、数据包协议等方面进行限定。
113.示例性的,结合图6示出的本技术的又一种场景示意图,在判断待上链节点对应的nat类型过程中,可涉及到两个区块链节点,这两个区块链节点如图6示出的,在第一区块链节点接收到待上链节点发起的上链请求后,向待上链节点分别发送相应的数据包,其中,第二区块链节点可以在第一区块链节点的指示下,通过第三端口向待上链节点发送的第三数据包。
114.其中,可以理解的是,第一区块链节点为接收到待上链节点发起的上链请求的区块链节点,第二区块链节点可以为第一区块链节点在区块链网络中相邻的区块链节点;或者也可以为在区块链网络中预设与第一区块链节点具有对应关系的区块链节点;或者,第二区块链节点可以为区块链网络中随机挑选的区块链节点。
115.第一区块链节点以及第二区块链节点,为可正常通信的区块链节点,进一步的,可限定为本身具有公网ip地址的区块链节点,或者为通过全锥nat类型的nat业务进行通信的区块链节点。
116.在本技术中,nat业务的nat类型,具体可以分为全锥nat类型、ip限制性nat类型、端口限制性nat类型以及对称nat类型四种类型。
117.其中,(1)、全锥nat类型:全锥nat业务把所有来自相同私有ip地址和端口的请求,映射到相同的公网ip地址和端口,公网中的任意主机均可通过该映射关系搭设数据包到内部主机。
118.也就是说ip和端口都不受限。只要待上链节点由内到外打通一个“洞”之后(natip:natport-》a:p1),外部主机a的ip地址的外部主机(例如外部主机b)或者其他端口(例如外部主机a的p2端口)都可以使用这个“洞”发送数据包到达待上链节点。
119.映射关系为:client-》natip:natport-》any,即任何外部主机都可通过natip:natport发送数据到client上。
120.(2)、ip限制性nat类型:ip限制性nat业务把所有来自相同私有ip地址和端口的请求,映射到相同的公网ip地址和端口,然而存在一种约束,只有当内部主机先给外部主机发送数据包后,该外部主机向该内部主机发送的数据包才能到达内部主机。
121.也就是说ip受限,端口不受限。当待上链节点由内到外打通一个“洞”之后(natip:natport-》a:p1),外部主机a可以使用他的其他端口(例如p2)主动连接待上链节点,但外部主机b则不被允许。
122.映射关系为:client-》natip:natport-》a,即只有来自外部主机a的数据包才能通过natip:natport发送到client上。
123.(3)、端口限制性nat类型:端口限制性nat业务把所有来自相同私有ip地址和端口的请求,映射到相同的公网ip地址和端口,然而存在一种约束,只有当内部主机先给外部主机发送数据包后,该外部主机通过接收到内部主机发送的数据包的端口,向该内部主机发送的数据包才能到达内部主机。
124.也就是说ip和端口都受限。返回的数据包只接受曾经打“洞”成功的对象,例如外部主机a的p1端口,而由外部主机a的p2端口或者外部主机b的p1端口发起的数据包将不被natip:natport接收。
125.映射关系为:client-》natip:natport-》a:p1,即只有来自外部主机a的p1端口的数据包才可通过natip:natport发送到client上。
126.(4)、对称nat类型:ip和端口都受限,且当同一内部主机使用相同的端口与不同ip地址的外部主机进行通信时,对称nat业务都会重新建一个回话。
127.也就是说,只有来自相同的内部地址(相同的ip地址、端口)并且发送到相同外部地址(相同的ip地址、端口)的请求,在nat节点上才映射为相同的外网端口,即相同的映射。
128.映射关系为:client-》natip:pa1-》a:p1,当client访问b:p1时,映射关系变为:
129.client-》natip:pb-》b:p1,同理,natip:pa2也就是client访问a:p2时的映射。
130.对于待上链节点,若待上链节点收到第二区块链节点下发的第三数据包,可向第二区块链节点反馈第三数据包的响应数据包,以指示已收到该第三数据包;类似的,若待上链节点收到第一区块链节点下发的第二数据包,可向第一区块链节点反馈第二数据包的响应数据包,以指示已收到该第二数据包;类似的,若待上链节点收到第一区块链节点下发的第一数据包,可向第一区块链节点反馈该第一数据包的响应数据包,以指示已收到该第一数据包。
131.在上述背景下,结合是否可接收到待上链节点针对步骤s501下发的第一数据包、第二数据包以及第三数据包所反馈的响应数据包,则可判断出待上链节点的nat类型,具体详见后续的步骤s502至步骤s504。
132.步骤s502,若第二区块链节点收到第三数据包的响应数据包,则第二区块链节确认nat类型为全锥nat类型;
133.结合上述四种nat业务的说明,在执行步骤s501后,可以理解的是,若第二区块链节点接收到待上链节点对于第三数据包的响应数据包,则可确定待上链节点接收到第二区块链节点发送的第三数据包,以及确定待上链节点对应的nat类型为全锥nat类型,并未存在ip限制以及端口限制。
134.或者,步骤s503,若第二区块链节点未收到第三数据包的响应数据包且第一区块链节点收到第二数据包的响应数据包,则第一区块链节点确定nat类型为ip限制性nat类型;
135.结合上述四种nat业务的说明,在执行步骤s501后,可以理解的是,若第二区块链节点未收到第三数据包的响应数据包且第一区块链节点收到第二数据包的响应数据包,则可确定待上链节点接收到第一区块链节点发送的第二数据包,以及确定待上链节点对应的nat类型为ip限制性nat类型,存在ip限制,未存在端口限制。
136.或者,步骤s504,若第二区块链节点未收到第三数据包的响应数据包、第一区块链节点未收到第二数据包的响应数据包且第一区块链节点收到第一数据包的响应数据包,则第一区块链节点确定nat类型可能为端口限制性nat类型或者为对称nat类型,即nat类型不是端口限制性nat类型,就是对称nat类型,可以确定nat类型范围为这两者之一,若想要唯一确定,还可以进一步判断。
137.结合上述四种nat业务的说明,在执行步骤s501后,可以理解的是,若第二区块链节点未收到第三数据包的响应数据包、第一区块链节点未收到第二数据包的响应数据包且第一区块链节点收到第一数据包的响应数据包,则可确定待上链节点只能接收到第一区块链节点发送的第一数据包,以及确定待上链节点对应的nat类型为端口限制性nat类型或者对称nat类型,同时存在ip限制和端口限制。
138.从上述可看出,本技术在判断出待上链节点对应的nat类型时,nat类型可存在三种情况,1、全锥nat类型;2、ip限制性nat类型;3、端口限制性nat类型以及对称nat类型的一种。在该情况下,在根据待上链节点对应的nat类型分配目标区块链节点时,根据待分配区块链节点与nat类型的对应关系,待分配区块链节点可预先分为三类,待实际应用时根据当前待上链节点对应的nat类型分配这三类待分配区块链节点中选取一个对应类型的目标区块链节点,以使得待上链节点通过该目标区块链节点进行正常的上链,并与区块链网络中的任意区块链节点正常进行通信。
139.在图5对应步骤s504中,可确定待上链节点对应的nat类型范围为端口限制性nat类型以及对称nat类型中的其中一个。
140.进一步的,在又一种示例性的实现方式中,为彻底确定待上链节点对应的nat类型到底是端口限制性nat类型还是对称nat类型,还可继续进行nat类型的确定处理。
141.对应的,还可包括如下步骤:
142.第二区块链节点通过第四端口接收到待上链节点发送的第四数据包后,第二区块
链节点向待上链节点发送第四数据包的响应数据包;
143.第一区块链节点或者第二区块链节点根据待上链节点发送的指示信息,确定待上链节点的nat类型,指示信息所指示的nat类型由待上链节点根据第一端口号以及第二端口号确定得到,第一端口号为nat业务转发第一数据包时分配的端口号,第二端口号为nat业务转发第四数据包的响应数据包时分配的端口号,若端口号相同,则nat类型为端口限制性nat类型,若端口号不同,则nat类型为对称nat类型。
144.可以理解,在确定待上链节点对应的nat类型为端口限制性nat类型以及对称nat类型中的其中一个之后,第一区块链节点或者第二区块链节点可指示待上链节点向第二区块链的第四端口发送第四数据包;或者,在待上链节点侧,也可预设在发起上链请求的同时,还向第二区块链节点的第四端口发送该第四数据包。
145.在待上链节点侧,接收到的第一数据包以及第二区块链节点对第四数据包反馈的响应数据包,两个数据包中都会携带数据包发送方的端口号,若待上链节点对应的nat类型为端口限制型nat类型,则第一数据包以及第四数据包经过nat节点转发至待上链节点时,两者的端口号(可以理解为端口标识,用于区分不同的端口,数据包通过nat节点进行转发时,可能随着不同的nat类型分配不同的端口)是一样的,都是之前待上链节点向第一区块链节点发送上链请求以及向第二区块链节点发送第四数据包时的端口号;而若待上链节点对应的nat类型为对称nat类型,则第一数据包以及第四数据包经过nat节点转发至待上链节点时,nat节点会为两者对应的不同会话(或者说通信连接)分配不同的端口号,也因此,待上链节点在接收到第一数据包以及第四数据包的响应数据包后,可通过两者分别对应的端口号,确定自身的nat类型是端口限制性nat类型还是对称nat类型。
146.在确定自身的nat类型后,待上链节点则可通过指示信息通知第一区块链节点或者第二区块链节点,以使得第一区块链节点或者第二区块链节点可为待上链节点分配端口限制性nat类型或者对称nat类型对应的目标区块链节点。
147.在该情况下,本技术在判断出待上链节点对应的nat类型时,nat类型可完善为四种情况,1、全锥nat类型;2、ip限制性nat类型;3、端口限制性nat类型;4、对称nat类型,在根据待上链节点对应的nat类型分配目标区块链节点时,根据待分配区块链节点与nat类型的对应关系,待分配区块链节点可预先分为四类,以此进一步提供更为精确的nat类型的确定以及提供更为精确的目标区块链节点的分配。
148.且当接收到上链请求的第一区块链节点或者接收到第四数据包的第二区块链节点,为端口限制性nat类型或者对称nat类型所对应的区块链节点时,还可进一步地根据待上链节点是端口限制性nat类型还是对称nat类型,精确地判断该第一区块链节点或者第二区块链节点是否属于可分配给待上链节点的目标区块链节点中,若是,则目标区块链节点的分配过程中,则可保留待上链节点与第一区块链节点的通信连接,或者保留待上链节点与第二区块链节点的通信连接,减少待上链节点与其他区块链节点(目标区块链节点并非是第一区块链节点或者第二区块链节点)建立通信连接所需的信令开销。
149.在获取到待上链节点当前的nat类型后,则可根据预设的区块链节点分配策略,确定该nat类型对应的目标区块链节点,作为该待上链节点的连接节点,如此,使得待上链节点可与该目标区块链节点建立通信连接,并进行上链操作,加入到区块链网络中。
150.示例性的,若手机通过nat节点向区块链节点a发送上链请求,在获取到该手机的
nat类型x后,可确定nat类型x对应的目标区块链节点b并分配给手机,如此,手机可将通信连接对象从区块链节点a切换至目标区块链节点,并完成上链操作。
151.其中,手机在通过nat节点向区块链节点a发送上链请求后,断开与区块链节点a之间的通信连接,等待确定分配的目标区块链节点后,无需实时切换通信连接对象,直接建立与目标区块链节点之间的通信连接。
152.其中,还存在一种情况,若接收到上链请求的区块链节点为分配的目标区块链节点,则可保留或者重建待上链节点与该目标区块链节点之间的通信连接,通过该目标区块链节点进行上链。
153.在又一种示例性的实现方式中,在确定待上链节点对应的nat类型后,该待上链节点对应的nat类型可存在上述提及的三种情况:1、全锥nat类型;2、ip限制性nat类型;3、端口限制性nat类型或者对称nat类型;又或者,可存在上述提及的四种情况:1、全锥nat类型;2、ip限制性nat类型;3、端口限制性nat类型;4、对称nat类型。在根据nat类型分配目标区块链节点时,具体可参考下面示出的目标区块链节点分配策略表:
[0154] 全锥natip限制性nat端口限制性nat对称nat全锥nat可联通可联通可联通可联通ip限制性nat可联通可联通可联通可联通端口限制性nat可联通可联通可联通不确定对称nat可联通可联通不确定不确定
[0155]
表1-目标区块链节点分配策略表
[0156]
结合上述列出的表1,目标区块链节点的分配,具体可以包括:
[0157]
具体的,当待上链节点对应的nat类型为对称nat类型时,区块链节点为待上链节点分配第一目标区块链节点,其中,第一目标区块链节点联通的nat业务的业务类型为全锥nat类型或者ip限制性nat类型;
[0158]
或者,当待上链节点对应的nat类型为端口限制性nat类型时,区块链节点为待上链节点分配第二目标区块链节点,其中,第二目标区块链节点联通的nat业务的业务类型为全锥nat类型、ip限制性nat类型或者端口限制性nat类型;
[0159]
或者,当待上链节点对应的nat类型为全锥nat类型或者ip限制性nat类型时,区块链节点为待上链节点分配第三目标区块链节点,其中,第三目标区块链节点联通的业务类型为全锥nat类型、ip限制性nat类型、端口限制性nat类型或者对称nat类型。
[0160]
应当理解的是,上述提及了目标区块链节点联通的业务类型,不仅意味着该目标区块链节点本身可以为通过对应nat类型的nat业务进行通信的区块链节点,还可以延伸为本身具有公网ip地址并预先分配与不同nat类型之间的对应关系的区块链节点,这些区块链节点具体可以为具有公网ip地址的代理虚拟专用网络(virtual private network,vpn)服务器。
[0161]
在又一种示例性的实现方式中,当确定可分配给待上链节点的目标区块链节点时,具体的分配处理,参阅图7示出的本技术分配目标区块链节点的一种流程示意图,可包括:
[0162]
步骤s701,区块链节点在目标区块链节点对应的节点列表中,配置待上链节点的私有ip地址、待上链节点的目标端口号、目标区块链节点的目标公有ip地址以及目标区块
链节点的目标端口号之间的对应关系;
[0163]
可以理解,在本技术中,区块链网络可包括没有公网ip地址的区块链节点,这些没有公网ip地址的区块链节点实际上是通过其他具有公网ip地址的区块链节点进行上链以及通信的,基于该情况,每个区块链节点上可配置节点列表,在列表中写入这些没有公网ip地址的区块链节点,以及为这些没有公网ip地址的区块链节点实现上链、通信的区块链节点之间的对应关系,以此方便获悉、更新以及管理不同区块链节点之间的对应关系。
[0164]
其中,在为待上链节点分配目标区块链节点时,则可在目标区块链节点对应的节点列表中,配置待上链节点的私有ip地址、待上链节点的目标端口号、目标区块链节点的目标公有ip地址以及目标区块链节点的目标端口号之间的对应关系,以此建立两者之间的对应关系。目标区块链节点可根据节点列表中的该对应关系,确定待上链节点可从本地进行上链以及通信。
[0165]
步骤s702,区块链节点指示待上链节点与目标区块链节点建立通信连接,以通过目标公有ip地址以及目标端口号进行上链。
[0166]
在节点列表中配置上述的对应关系后,区块链节点,例如上述的第一区块链节点、第二区块链节点或者目标区块链节点,则可向待上链节点发送指示信息,该指示信息中可指示上述的对应关系,以指示待上链节点根据待上链节点的私有ip地址、待上链节点的目标端口号、目标区块链节点的目标公有ip地址以及目标区块链节点的目标端口号,与目标区块链节点建立通信连接,并通过该目标公有ip地址以及该目标区块链节点的目标端口号进行上链以及通信。
[0167]
又或者,在节点列表中配置上述的对应关系后,目标区块链节点也可根据该对应关系,即根据待上链节点的私有ip地址、待上链节点的目标端口号、目标区块链节点的目标公有ip地址以及目标区块链节点的目标端口号,与待上链节点建立通信连接,并使得待上链节点可通过该目标公有ip地址以及该目标区块链节点的目标端口号进行上链以及通信。
[0168]
其中,待上链节点可向目标区块链节点发送心跳数据包,以维持待上链节点与目标区块链节点之间的通信连接。
[0169]
此外,在上述表1中,对于不确定连通状态的区块链节点,还可通过端口预测的方式检测联通性,该预测方法可以为端口奇数(或偶数)递增尝试连接,若确定不可联通时,再分配其他的目标区块链节点。
[0170]
为便于更好的实施本技术提供的区块链节点的上链方法,本技术还提供区块链节点的上链装置。
[0171]
参阅图8,图8为本技术区块链节点的上链装置的一种结构示意图,在本技术中,区块链节点的上链装置800具体可包括如下结构:
[0172]
收发单元801,用于接收待上链节点的上链请求,其中,上链请求用于请求加入区块链节点所属的区块链网络;
[0173]
处理单元802,用于根据上链请求,获取待上链节点的nat类型,其中,nat类型用于指示待上链节点对应的nat业务的业务类型,nat业务用于为待上链节点进行公有ip地址与私有ip地址之间的转换;为待上链节点分配nat类型对应的目标区块链节点,以使得待上链节点通过目标区块链节点进行上链。
[0174]
在一种示例性的实现方式中,处理单元802,具体用于:
[0175]
第一区块链节点通过自身的第一端口接收到上链请求后,通过第一区块链节点的第一端口向待上链节点发送第一数据包,还通过第一区块链节点的第二端口向待上链节点发送第二数据包,还通过第二区块链节点的第三端口向待上链节点发送第三数据包;
[0176]
若第二区块链节点收到第三数据包的响应数据包,则确认nat类型为全锥nat类型;
[0177]
或者,若第二区块链节点未收到第三数据包的响应数据包且第一区块链节点收到第二数据包的响应数据包,则确定nat类型为ip限制性nat类型;
[0178]
或者,若第二区块链节点未收到第三数据包的响应数据包、第一区块链节点未收到第二数据包的响应数据包且第一区块链节点收到第一数据包的响应数据包,则确定nat类型为端口限制性nat类型以及对称nat类型的一种。
[0179]
在又一种示例性的实现方式中,处理单元802,还用于:
[0180]
第二区块链节点通过自身的第四端口接收到待上链节点发送的第四数据包后,通过第二区块链节点自身的第四端口向待上链节点发送第四数据包的响应数据包;
[0181]
根据待上链节点发送的指示信息,确定待上链节点的nat类型,指示信息所指示的nat类型由待上链节点根据第一端口号以及第二端口号确定得到,第一端口号为nat业务转发第一数据包时分配的端口号,第二端口号为nat业务转发第四数据包的响应数据包时分配的端口号,若端口号相同,则nat类型为端口限制性nat类型,若端口号不同,则nat类型为对称nat类型。
[0182]
在又一种示例性的实现方式中,处理单元802,具体用于:
[0183]
根据上链请求中预设字段指示的nat类型,确定nat类型。
[0184]
在又一种示例性的实现方式中,处理单元802,具体用于:
[0185]
当nat类型为对称nat类型时,为待上链节点分配第一目标区块链节点,其中,第一目标区块链节点联通的nat业务的业务类型为全锥nat类型或者ip限制性nat类型;
[0186]
或者,当nat类型为端口限制性nat类型时,为待上链节点分配第二目标区块链节点,其中,第二目标区块链节点联通的nat业务的业务类型为全锥nat类型、ip限制性nat类型或者端口限制性nat类型;
[0187]
或者,当nat类型为全锥nat类型或者ip限制性nat类型时,为待上链节点分配第三目标区块链节点,其中,第三目标区块链节点联通的nat业务的业务类型为全锥nat类型、ip限制性nat类型、端口限制性nat类型或者对称nat类型。
[0188]
在又一种示例性的实现方式中,处理单元802,具体用于:
[0189]
在目标区块链节点对应的节点列表中,配置待上链节点的私有ip地址、待上链节点的目标端口号、目标区块链节点的目标公有ip地址以及目标区块链节点的目标端口号之间的对应关系;
[0190]
指示待上链节点与目标区块链节点建立通信连接,以通过目标公有ip地址以及目标端口号进行上链。
[0191]
在又一种示例性的实现方式中,处理单元802,还用于:
[0192]
获取上链请求的源ip地址;
[0193]
获取上链请求中预设字段指示的待上链节点的真实ip地址;
[0194]
当源ip地址以及真实ip地址不同时,确定待上链节点为通过nat业务进行通信的
节点。
[0195]
本技术还提供了一种区块链节点,参阅图9,图9示出了本技术区块链节点的一种结构示意图,具体的,本技术提供的区块链节点包括处理器901、存储器902以及输入输出设备903,处理器901用于执行存储器902中存储的计算机程序时实现如图2至图7对应任意实施例中区块链节点的上链方法的各步骤;或者,处理器901用于执行存储器902中存储的计算机程序时实现如图8对应实施例中各单元的功能,例如图8中的收发单元801所对应的硬件结构为输入输出设备903,处理单元802所对应的硬件结构为处理器901,存储器902用于存储处理器901执行上述图2至图7对应任意实施例中区块链节点的上链方法所需的计算机程序。
[0196]
示例性的,计算机程序可以被分割成一个或多个模块/单元,一个或者多个模块/单元被存储在存储器902中,并由处理器901执行,以完成本技术。一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述计算机程序在计算机装置中的执行过程。
[0197]
区块链节点可包括,但不仅限于处理器901、存储器902、输入输出设备903。本领域技术人员可以理解,示意仅仅是区块链节点的示例,并不构成对区块链节点的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如区块链节点还可以包括网络接入设备、总线等,处理器901、存储器902、输入输出设备903以及网络接入设备等通过总线相连。
[0198]
处理器901可以是中央处理单元(central processing unit,cpu),还可以是其他通用处理器、数字信号处理器(digital signal processor,dsp))、专用集成电路(application specific integrated circuit,asic)、现成可编程门阵列(field-programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,处理器是区块链节点的控制中心,利用各种接口和线路连接整个设备的各个部分。
[0199]
存储器902可用于存储计算机程序和/或模块,处理器901通过运行或执行存储在存储器902内的计算机程序和/或模块,以及调用存储在存储器902内的数据,实现计算机装置的各种功能。存储器902可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序等;存储数据区可存储根据区块链节点的使用所创建的数据(比如上链请求、第一数据包、第二数据包等)等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(smart media card,smc),安全数字(secure digital,sd)卡,闪存卡(flash card)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
[0200]
处理器901用于执行存储器902中存储的计算机程序时,具体可实现以下功能:
[0201]
接收待上链节点的上链请求,其中,上链请求用于请求加入区块链节点所属的区块链网络;
[0202]
根据上链请求,获取待上链节点的nat类型,其中,nat类型用于指示待上链节点对应的nat业务的业务类型,nat业务用于为待上链节点进行公有ip地址与私有ip地址之间的转换;
[0203]
为待上链节点分配nat类型对应的目标区块链节点,以使得待上链节点通过目标
区块链节点进行上链。
[0204]
其中,输入输出设备903具体可用于接收从待上链节点发送的上链请求等信息,或者向待上链节点发送第一数据包、第二数据包等信息,例如可发送指示信息,指示待上链节点根据待上链节点的私有ip地址、待上链节点的目标端口号、目标区块链节点的目标公有ip地址以及目标区块链节点的目标端口号,与目标区块链节点建立通信连接,并通过该目标公有ip地址以及该目标区块链节点的目标端口号进行上链以及通信。
[0205]
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的区块链节点的上链装置、区块链节点及其相应单元的具体工作过程,可以参考如图2至图7对应任意实施例中区块链节点的上链方法的说明,具体在此不再赘述。
[0206]
本领域普通技术人员可以理解,上述实施例的各种方法中的全部或部分步骤可以通过指令来完成,或通过指令控制相关的硬件来完成,该指令可以存储于一计算机可读存储介质中,并由处理器进行加载和执行。
[0207]
为此,本技术提供一种计算机可读存储介质,其中存储有多条指令,该指令能够被处理器进行加载,以执行本技术如图2至图7对应任意实施例中区块链节点的上链方法中的步骤,具体操作可参考如图2至图7对应任意实施例中区块链节点的上链方法的说明,在此不再赘述。
[0208]
其中,该计算机可读存储介质可以包括:只读存储器(read only memory,rom)、随机存取记忆体(random access memory,ram)、磁盘或光盘等。
[0209]
由于该计算机可读存储介质中所存储的指令,可以执行本技术如图2至图7对应任意实施例中区块链节点的上链方法中的步骤,因此,可以实现本技术如图2至图7对应任意实施例中区块链节点的上链方法所能实现的有益效果,详见前面的说明,在此不再赘述。
[0210]
以上对本技术提供的区块链节点的上链方法、装置、区块链节点以及计算机可读存储介质进行了详细介绍,本文中应用了具体个例对本技术的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本技术的方法及其核心思想;同时,对于本领域的技术人员,依据本技术的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本技术的限制。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献