本发明涉及区块链技术领域,特别是一种用于p2p网络的跨网穿透方法及系统。
背景技术:
区块链是未来信用时代的重要基础设施,它将提供各种人群、各种设备在任何地方、任何环境下的访问与使用,而区块链的底层p2p网络是提供各种类型参与者接入与访问的基础,也就是p2p网络的覆盖范围决定了未来区块链网络的覆盖范围。在移动互联网十分发达的今天,几乎人手一部手机,每个家庭一台wifi设备,而人们使用手机通过wifi设备上网时,事实上是上了自己家里的小型局域网,再由这个小型局域网的出口连接到互联网。目前越来越多的机构、以及越来越多的公共区域都开始提供wifi接入上网,甚至连网络运营商也开始推出大范围覆盖的wifi接入服务,这相当于扩大了局域网的范围,但结果是进一步将这些终端上网设备从互联网中隔离,互联网上的其它设备如果要直接接入这些内部设备没有特殊的网络配置是无法完成的,由于这一类的内部上网设备数量众多,为他们每一台都特殊配置网络也不太现实,另外也由于安全等因素的考虑,再加上绝大多数用户的需求都是向外连接,几乎不需要向内连接,所以也并没有太大的动力去改变这一现状。但是,当移动区块链开始普及时,这一现状将成为制约区块链发展的重要因素,因为如果区块链上的节点无法访问局域网内的节点,那么就意味着只有局域网外的节点能成为区块链的节点,这将极大提高区块链节点的接入门槛,和限制区块链节点的普及。那么,如何在既不用降低安全性设置特殊网络参数,又能让各种大小局域网之间的节点可以互联,成为一个急需解决的问题。
技术实现要素:
本发明旨在提出一种用于p2p网络的跨网穿透方法及系统,解决了不同局域网之间节点的主动通信问题,实现了跨网组建p2p网络的作用。
一种用于p2p网络的跨网穿透方法,所述方法包括:
内网发送数据至外网:当内网节点需要发送数据到外网节点时,内网节点通过探测外网节点是否可以访问,若能访问则发送数据,若不能访问则将中继节点的ip地址附加到交易数据的通信报文中并完成发送;
外网发送数据至内网:当外网节点需要发送数据到内网节点时,通过ip地址搜索获取内网节点ip地址和其他外网节点ip地址,通过与内网节点建立连接关系进行数据传输,若外网节点与之建立连接关系的内网节点不是所要建立连接关系的目标节点,则通过中继节点将包含通信请求的通信报文附加到区块交易中,经过交易处理的环节提取通信报文并按照报文内容进行处理,完成外网发送数据至内网的过程,
所述内网发送数据至外网的过程和外网发送数据至内网的过程两者是互相交叉叠加,可实现内网对内网,外网对内网,内网对外网,跨网穿透过程还包括由内网传输数据至内网。
进一步的,所述外网发送数据至内网的具体过程包括:
s1、外网节点搜索附近网络获取可连接节点,当外网节点接收到目标节点发送的数据,外网节点需要向目标节点反馈数据时,若可连接节点包括外网节点所要建立连接关系的目标节点,则直接连接并完成跨网穿透,若可连接节点未包括目标节点则进入s2;
s2、外网节点提取目标节点发来的附加通信报文进而获取中继节点的ip地址并进行连接,若无法完成连接则继续搜索网络或等待目标节点的下一次主动报告,若可以建立连接则创建含有将数据传输至目标节点的通信报文附加到交易中并发送至中继节点;
s3、中继节点接收从外网节点发送的数据后提取通信报文,根据通信报文内容判断数据是否发送至本身,若是则直接处理,若不是则提取通信报文的终点ip地址并建立连接关系;
s4、中继节点与目标节点若不能连接则继续搜索网络直到找到目标节点并与之建立连接关系,若目标节点处于更深网络时循环s1-s4步骤直至与中继节点进行连接;
s5、中继节点与目标节点建立连接关系后,目标节点接收来自中继节点的数据,并提取数据内容,目标节点判断是发送给自己的数据后并判定数据的原始发送者为外网节点,完成外网数据发送至内网的过程。
本发明在上述跨网穿透方法的基础上还延伸提出一种用于p2p网络的跨网穿透系统,所述系统包括:
网络探测器:用于扫描发现局域网内的节点以及公网中的节点,并对网络的基本情况进行分析,所述基本情况包括但不限于网速、延迟情况;
节点管理器:用于管理已扫描到的节点,并比较已扫描到节点所处的ip地址位置,根据所处的位置划分已扫描到的节点是在外网或内网;
数据中继器:用于生成数据发出节点到目标节点的路由规则,并按照路由规则转发数据;
在该系统中,网络探测器搜索局域网并发现若干个节点,当节点管理器创建完交易数据后,局域网外的节点需要将该交易数据发送到局域网内的节点时,通过节点管理器将中继节点的地址附加到交易数据的通信报文中,然后进行发送,,数据中继器通过提取交易数据中的附加通信报文,将附加通信报文里面指定的目标地址传达至下一个节点,直到整个交易数据到达目标节点,所述网络探测器、节点管理器以及数据中继器三者互相交叉网状连接,可以互相进行数据访问。
进一步的,所述网络探测器包括:
地址生成模块:用于根据当前节点所在的网络环境生成等待搜索的网络地址列表,如果当前节点所处网络为局域网将以局域网为主,如果当前节点所处网络为公网将以公网为主,如果局域网和公网都有则优先扫描所在局域网并找到已存的双向可通信节点;
网络连接模块:用于尝试向指定地址的指定端口发起连接请求,并根据上层应用协议校验连接的合法性,以及所述指定地址是否为合法节点,并将合法有效的地址记录下来;
地址存储模块:用于将有效地址保存下来,并记录在公网的位置以及所在的局域网地址,对采用统一出口的局域网地址进行分组,以标示出局域网区域。
进一步的,所述节点管理器包括:
节点信息模块:用于记录节点的基本信息,根据上层应用的不同,对应记录的信息也不同,所述信息包括但不限于区块的高度,节点对应的网络信息,根据节点所在的网络深度不同也包含至少两个以上的ip地址,用于在数据转发时可以一层层的转发到最终内部的接收地址;
节点共识模块:用于对节点的有效性进行共识,在区块链的环境中,根据共识机制判断出节点的有效性,对于多数数据一致的节点被判定为有效节点,不一致的节点需要等待下一轮共识后再判定是否有效;
节点扩展模块:用于根据其它节点的节点清单扩展自己的节点清单,进而将节点清单作为网络探测器的搜索地址列表使用,快速扩展可用节点范围后再根据扩展后的节点列表进一步扩展节点列表。
进一步的,所述数据中继器包括:
路由表模块:用于分析提取各局域网的中继节点,以及所述中继节点的网络分布情况;
路径规划模块:用于计算从指定网址到另一网址时需要经历的最佳中继节点;
数据转发模块:用于对不属于节点自身的数据进行转发,按照路径规划模块规划的路径发送至下一个节点,并在接收到他人的转发时,将数据进一步的转发至下一个节点,直至目标节点接收到数据。
本发明相比现有技术,具有如下优点:
(1)本发明重点是借助路由的原理获得附近局域网与外网建立连接的代理节点,通过代理节点进行网络层的通信地址转换,从而完成局域网与公网的数据信息传输;
(2)通过在中继节点,也就是代理节点中建立中转穿透协议,不用去网关、路由器等设备做特定配置,大大缩短跨网穿透所需的算力和时间,提高数据传输效率;
(3)该跨网穿透方法是建立在应用层上的,比通信协议中设置固定的特殊网关或路由配置实现网络穿透更灵活也更加强大。
附图说明
图1为本发明所提及跨网穿透方法中外网发送数据至内网的流程示意图;
图2是本发明所提及跨网穿透系统的组成示意图;
图3是本发明所提及网络探测器的组成示意图;
图4是本发明所提及节点管理器的组成示意图;
图5时本发明所提及数据中继器的组成示意图,
其中:100网络探测器;200节点管理器;300数据中继器;101地址生成模块;102网络连接模块;103地址存储模块;201节点信息模块;202节点共识模块;203节点扩展模块;301路由表模块;302路径规划模块;303数据转发模块
具体实施方式
下面结合附图和具体实施例对本发明作进一步详述。在此需要说明的是,下面所描述的本发明各个实施例中所涉及的技术特征只要彼此之间未构成冲突就可以相互组合。
如图1所示,当移动区块链开始普及时,这一现状将成为制约区块链发展的重要因素,因为如果区块链上的节点无法访问局域网内的节点,那么就意味着只有局域网外的节点能成为区块链的节点,这将极大提高区块链节点的接入门槛,和限制区块链节点的普及,为了解决在既不用降低安全性设置特殊网络参数,又能让各种大小局域网之间的节点可以互联,本发明提出一种用于p2p网络的跨网穿透方法。
在进行本发明方法的阐述之前先对“p2p网络”定义进行阐述,所谓的“p2p网络”也叫对等网络,即对等计算机网络,是一种在对等者(peer)之间分配任务和工作负载的分布式应用架构,是对等计算模型在应用层形成的一种组网或网络形式,在p2p网络环境中,彼此连接的多台计算机之间都处于对等的地位,各台计算机有相同的功能,无主从之分,一台计算机既可作为服务器,设定共享资源供网络中其他计算机所使用,又可以作为工作站,整个网络一般来说不依赖专用的集中服务器,也没有专用的工作站。网络中的每一台计算机既能充当网络服务的请求者,又对其它计算机的请求做出响应,提供资源、服务和内容。通常这些资源和服务包括:信息的共享和交换、计算资源(如cpu计算能力共享)、存储共享(如缓存和磁盘空间的使用)、网络共享、打印机共享等。
本发明所提及的跨网穿透方法包括:
(1)内网发送数据至外网:当内网节点需要发送数据到外网节点时,内网节点通过探测外网节点是否可以访问,若能访问则发送数据,若不能访问则将中继节点的ip地址附加到交易数据的通信报文中并完成发送;
(2)外网发送数据至内网:当外网节点需要发送数据到内网节点时,通过ip地址搜索获取内网节点ip地址和其他外网节点ip地址,通过与内网节点建立连接关系进行数据传输,若外网节点与之建立连接关系的内网节点不是所要建立连接关系的目标节点,则通过中继节点将包含通信请求的通信报文附加到区块交易中,经过交易处理的环节提取通信报文并按照报文内容进行处理,完成外网发送数据至内网的过程,
所述内网发送数据至外网的过程和外网发送数据至内网的过程两者是互相交叉叠加,可实现内网对内网,外网对内网,内网对外网,跨网穿透过程还包括由内网传输数据至内网。
优选的,所述外网发送数据至内网的具体过程包括:
s1、外网节点搜索附近网络获取可连接节点,当外网节点接收到目标节点发送的数据,外网节点需要向目标节点反馈数据时,若可连接节点包括外网节点所要建立连接关系的目标节点,则直接连接并完成跨网穿透,若可连接节点未包括目标节点则进入s2;
s2、外网节点提取目标节点发来的附加通信报文进而获取中继节点的ip地址并进行连接,若无法完成连接则继续搜索网络或等待目标节点的下一次主动报告,若可以建立连接则创建含有将数据传输至目标节点的通信报文附加到交易中并发送至中继节点;
s3、中继节点接收从外网节点发送的数据后提取通信报文,根据通信报文内容判断数据是否发送至本身,若是则直接处理,若不是则提取通信报文的终点ip地址并建立连接关系;
s4、中继节点与目标节点若不能连接则继续搜索网络直到找到目标节点并与之建立连接关系,若目标节点处于更深网络时循环s1-s4步骤直至与中继节点进行连接;
s5、中继节点与目标节点建立连接关系后,目标节点接收来自中继节点的数据,并提取数据内容,目标节点判断是发送给自己的数据后并判定数据的原始发送者为外网节点,完成外网数据发送至内网的过程。
为了更好对上述跨网方法进行具体阐述,本发明优选出以abc为三个在一个局域网的节点,de为两个在公网或者说是处于外网的节点,c节点处于局域网和外网的交叉处,属于既可以被ab两节点访问,也可以被de两节点所访问的中继节点,在互联网通信领域里面,绝大多数用户的需求都是向外连接的,也就是说a节点可以给d节点主动发送消息,但是当d节点有信息发送到a节点时将无法送达或者说是发送目标错误,信息发送失败,这样导致d节点无法知道a节点的存在,a节点也很难加入到节点网络中,事实上,在底层通信中,a节点在给d节点发送数据时,是通过c节点的网关发送出去的,数据在发送时会指定发送的源地址以及目标地址,但是a节点在局域网内的ip地址为192.168.0.*,而d节点在公网地址为202.202.0.*,对于a节点来说,d节点的位置是明确的,因为公网只有一个ip是这个地址,但是ip地址为192.168.0.*是一个局域网地址,当d节点需要给a节点发送数据时,不确定一个最终的局域网ip地址,根据不同的接入场景,无法定位其所在局域网是哪一个,也就很难完成数据的准确发送。
在上述s1-s5的过程中很关键的一步就是在中继节点c处建立中转穿透的协议,在中转协议里面设定当d节点有数据要发送给a节点时,d节点把数据转换为发送到c节点,当c节点收到数据时再发给a节点,因为在网络通信协议层已经存在nat地址转换,此处的地址转换在应用层完成,不需要去网关、路由器等设备做特定配置,从而大大节省区块链网络中跨网穿透的算力,方便更多的轻量节点参与整个网络的通信。
由于区块链网络具有去中心的特性,c节点不一定能稳定的提供中转服务,因为有时候c节点的算力或者权益没有达到可以工作的固定配置,所以c节点的中继节点的角色可能由a节点提供,也可能由b节点提供,这需要根据网络的规模以及网络内能建立双向连接节点的性能决定,而在建立双向连接的节点也并不是通过配置网关或路由器获得,依然是在应用层实现的,这也是比通信协议中设置固定的特殊网关或路由配置实现网络穿透更灵活也更强大的地方。
如图2-5所示,本发明在上述跨网穿透方法的基础上延伸提出一种用于p2p网络的跨网穿透系统,包括网络探测器100、节点管理器200、数据中继器300,网络探测器100是用于扫描发现局域网内的节点以及公网中的节点,并对网络的基本情况进行分析,所述基本情况包括但不限于网速、延迟情况;节点管理器200是用于管理已扫描到的节点,并比较已扫描到节点所处的ip地址位置,根据所处的位置划分已扫描到的节点是在外网或内网;而数据中继器300则是用于生成数据发出节点到目标节点的路由规则,并按照路由规则转发数据;在该系统中,网络探测器100搜索局域网并发现若干个节点,当节点管理器200创建完交易数据后,局域网外的节点需要将该交易数据发送到局域网内的节点时,通过节点管理器200将中继节点的地址附加到交易数据的通信报文中,然后进行发送,数据中继器300通过提取交易数据中的附加通信报文,将附加通信报文里面指定的目标地址传达至下一个节点,直到整个交易数据到达目标节点,所述网络探测器100、节点管理器200以及数据中继器300三者互相交叉网状连接,可以互相进行数据访问。
优选的,所述网络探测器100包括:
地址生成模块101:用于根据当前节点所在的网络环境生成等待搜索的网络地址列表,如果当前节点所处网络为局域网将以局域网为主,如果当前节点所处网络为公网将以公网为主,如果局域网和公网都有则优先扫描所在局域网并找到已存的双向可通信节点;
网络连接模块102:用于尝试向指定地址的指定端口发起连接请求,并根据上层应用协议校验连接的合法性,以及所述指定地址是否为合法地址,并将合法有效的地址记录下来;
地址存储模块103:用于将有效地址保存下来,并记录在公网的位置以及所在的局域网地址,对采用统一出口的局域网地址进行分组,以标示出局域网区域。
优选的,所述节点管理器200包括:
节点信息模块201:用于记录节点的基本信息,根据上层应用的不同,对应记录的信息也不同,所述信息包括但不限于区块的高度,节点对应的网络信息,根据节点所在的网络深度不同也包含至少两个以上的ip地址,用于在数据转发时可以一层层的转发到最终内部的接收地址;
节点共识模块202:用于对节点的有效性进行共识,在区块链的环境中,根据共识机制判断出节点的有效性,对于多数数据一致的节点被判定为有效节点,不一致的节点需要等待下一轮共识后再判定是否有效;
节点扩展模块203:用于根据其它节点的节点清单扩展自己的节点清单,进而将节点清单作为网络探测器的搜索地址列表使用,快速扩展可用节点范围后再根据扩展后的节点列表进一步扩展节点列表。
优选的,所述数据中继器300包括:
路由表模块301:用于分析提取各局域网的中继节点,以及所述中继节点的网络分布情况;
路径规划模块302:用于计算从指定网址到另一网址时需要经历的最佳中继节点;
数据转发模块303:用于对不属于节点自身的数据进行转发,按照路径规划模块规划的路径发送至下一个节点,并在接收到他人的转发时,将数据进一步的转发至下一个节点,直至目标节点接收到数据。
本发明重点是借助路由的原理获得附近局域网与外网建立连接的代理节点,通过代理节点进行网络层的通信地址转换,从而完成局域网与公网的数据信息传输。
以上所述,仅是本发明的较佳实施例而已,并非对本发明的技术范围作任何限制,故但凡依本发明的权利要求和说明书所做的变化或修饰,皆应属于本发明专利涵盖的范围之内。
1.一种用于p2p网络的跨网穿透方法,其特征在于,所述方法包括:
内网发送数据至外网:当内网节点需要发送数据到外网节点时,内网节点通过探测外网节点是否可以访问,若能访问则发送数据,若不能访问则将中继节点的ip地址附加到交易数据的通信报文中并完成发送;
外网发送数据至内网:当外网节点需要发送数据到内网节点时,通过ip地址搜索获取内网节点ip地址和其他外网节点ip地址,通过与内网节点建立连接关系进行数据传输,若外网节点与之建立连接关系的内网节点不是所要建立连接关系的目标节点,则通过中继节点将包含通信请求的通信报文附加到区块交易中,经过交易处理的环节提取通信报文并按照报文内容进行处理,完成外网发送数据至内网的过程,
所述内网发送数据至外网的过程和外网发送数据至内网的过程两者是互相交叉叠加,可实现内网对内网,外网对内网,内网对外网,跨网穿透过程还包括由内网传输数据至内网。
2.根据权利要求1所述的一种用于p2p网络的跨网穿透方法,其特征在于,所述外网发送数据至内网的具体过程包括:
s1、外网节点搜索附近网络获取可连接节点,当外网节点接收到目标节点发送的数据,外网节点需要向目标节点反馈数据时,若可连接节点包括外网节点所要建立连接关系的目标节点,则直接连接并完成跨网穿透,若可连接节点未包括目标节点则进入s2;
s2、外网节点提取目标节点发来的附加通信报文进而获取中继节点的ip地址并进行连接,若无法完成连接则继续搜索网络或等待目标节点的下一次主动报告,若可以建立连接则创建含有将数据传输至目标节点的通信报文附加到交易中并发送至中继节点;
s3、中继节点接收从外网节点发送的数据后提取通信报文,根据通信报文内容判断数据是否发送至本身,若是则直接处理,若不是则提取通信报文的终点ip地址并建立连接关系;
s4、中继节点与目标节点若不能连接则继续搜索网络直到找到目标节点并与之建立连接关系,若目标节点处于更深网络时循环s1-s4步骤直至与中继节点进行连接;
s5、中继节点与目标节点建立连接关系后,目标节点接收来自中继节点的数据,并提取数据内容,目标节点判断是发送给自己的数据后并判定数据的原始发送者为外网节点,完成外网数据发送至内网的过程。
3.一种用于p2p网络的跨网穿透系统,其特征在于,所述系统包括:
网络探测器:用于扫描发现局域网内的节点以及公网中的节点,并对网络的基本情况进行分析,所述基本情况包括但不限于网速、延迟情况;
节点管理器:用于管理已扫描到的节点,并比较已扫描到节点所处的ip地址位置,根据所处的位置划分已扫描到的节点是在外网或内网;
数据中继器:用于生成数据发出节点到目标节点的路由规则,并按照路由规则转发数据;
在该系统中,网络探测器搜索局域网并发现若干个节点,当节点管理器创建完交易数据后,局域网外的节点需要将该交易数据发送到局域网内的节点时,通过节点管理器将中继节点的地址附加到交易数据的通信报文中,然后进行发送,,数据中继器通过提取交易数据中的附加通信报文,将附加通信报文里面指定的目标地址传达至下一个节点,直到整个交易数据到达目标节点,所述网络探测器、节点管理器以及数据中继器三者互相交叉网状连接,可以互相进行数据访问。
4.根据权利要求3所述的一种用于p2p网络的跨网穿透系统,其特征在于,所述网络探测器包括:
地址生成模块:用于根据当前节点所在的网络环境生成等待搜索的网络地址列表,如果当前节点所处网络为局域网将以局域网为主,如果当前节点所处网络为公网将以公网为主,如果局域网和公网都有则优先扫描所在局域网并找到已存的双向可通信节点;
网络连接模块:用于尝试向指定地址的指定端口发起连接请求,并根据上层应用协议校验连接的合法性,以及所述指定地址是否为合法节点,并将合法有效的地址记录下来;
地址存储模块:用于将有效地址保存下来,并记录在公网的位置以及所在的局域网地址,对采用统一出口的局域网地址进行分组,以标示出局域网区域。
5.根据权利要求3所述的一种用于p2p网络的跨网穿透系统,其特征在于,所述节点管理器包括:
节点信息模块:用于记录节点的基本信息,根据上层应用的不同,对应记录的信息也不同,所述信息包括但不限于区块的高度,节点对应的网络信息,根据节点所在的网络深度不同也包含至少两个以上的ip地址,用于在数据转发时可以一层层的转发到最终内部的接收地址;
节点共识模块:用于对节点的有效性进行共识,在区块链的环境中,根据共识机制判断出节点的有效性,对于多数数据一致的节点被判定为有效节点,不一致的节点需要等待下一轮共识后再判定是否有效;
节点扩展模块:用于根据其它节点的节点清单扩展自己的节点清单,进而将节点清单作为网络探测器的搜索地址列表使用,快速扩展可用节点范围后再根据扩展后的节点列表进一步扩展节点列表。
6.根据权利要求3所述的一种用于p2p网络的跨网穿透系统,其特征在于,所述数据中继器包括:
路由表模块:用于分析提取各局域网的中继节点,以及所述中继节点的网络分布情况;
路径规划模块:用于计算从指定网址到另一网址时需要经历的最佳中继节点;
数据转发模块:用于对不属于节点自身的数据进行转发,按照路径规划模块规划的路径发送至下一个节点,并在接收到他人的转发时,将数据进一步的转发至下一个节点,直至目标节点接收到数据。
技术总结