一种基于配电房采集数据的NAT穿透系统及方法
技术领域
本发明属于网络通讯技术领域,尤其涉及电力行业的一种基于配电房采集数据的NAT穿透系统及方法。
技术背景
随着基于TCP/IP的互联网不断发展、普及,其规模越来越大。互联网主要提供两种服务:TCP(Transmission Control Protocol,传输控制协议)和UDP(User Data Protocol,用户数据报协议)。这两种服务是互联网中私网设备可以访问私网外部资源的基础技术。为了让这些私网中配电房应用设备可以互相访问通讯,SIP和NAT技术应运而生。
通常情况下,在网络通讯中配电房的采集数据发送端和接收端作为两个SIP(会话起始协议)客户端,通过服务器进行通讯传输。如果是同一个私网,则可以很正常通讯。但两个客户端不在同一个私网时,网络就不能够对采集数据发送到哪里的地址信息进行转换,导致私网内的设备对外网不可见,从而无法接收外网发来的请求。这种问题被统称为NAT问题。
NAT(netword address transporter,网络地址转换器)是通过修改UDP或TCP的报文头的地址和端口信息,来实现网络层地址转换的。这种现象称为NAT穿透。目前,NAT穿透技术主要是通过以下几个方面来实现:
(1)ALG(应用层网关);
(2)MIDCOM(中间件通讯);
(3)STUN(Simple Traversal of UDP over NATs,UDP的简单NAT穿透);
(4)PROXY(代理)。
STUN是解决NAT穿透问题的一种最基本方法,主要实现原理是:STUN服务器接收到包含客户端请求信息的SIP数据包请求之后,解析数据包取得客户端出口NAT上的对外IP地址和端口号,然后把取得客户端出口NAT上的对外IP地址和端口号直接填写在净载中的地址信息栏中,这样净载中的内容在经过NAT时就不需要修改了,只需按普通NAT流程转换封包文件的IP地址和端口号即可,最后将客户请求的配电房采集数据发送到客户端。
随着智能电网和物联网的兴起和发展,配电房中的用户设备和采集数据也输越来越多需要接入到互联网中进行通讯交互,为了解决这些用户设备之间的互联互通会采用更多的NAT设备,所以必须要考虑NAT问题,因此急需提供一种基于配电房采集数据的NAT穿透系统及方法。
发明内容
本发明目的提供一种基于配电房采集数据的NAT穿透系统及方法。利用STUN服务器识别外网的客户端的IP地址和端口号,明确通讯中设备的NAT穿透流程,有效解决了配电房中采集数据通过服务器顺利发送到客户端。
为实现上述目的,本发明提供的一种基于配电房采集数据的NAT穿透系统,包括私网中的STUN客户端1(配电房用户设备)、网络地址转换装置NAT、至少一个UDP的简单NAT穿透STUN服务器以及DNS/DHCP服务器。
上述私网中的配电房用户设备(STUN客户端1)通过网络地址转换装置NAT从STUN服务器上获取其对应的NAT出口的对外地址信息、端口信息和所访问客户端的地址信息。
上述私网中的STUN客户端1(配电房用户设备)将其获取的NAT出口的对外地址信息、端口号信息承载于SIP控制消息的负载中,同时根据所访问客户端地址信息将SIP控制消息通过NAT设备传输给所访问客户端。
上述私网中的STUN客户端1(配电房用户设备)包括:
获取STUN服务器地址信息模块:通过与域名服务器/动态主机配置协议DNS/DHCP服务器的信息交互获取STUN服务器的地址信息,并将其传输至获取对外地址端口模块。
获取对外地址端口模块:根据其接收的STUN服务器的地址信息来请求私网中的用户设备对应的NAT出口的对外地址、端口信息和所访问客户端地址信息的消息通过NAT设备传输至STUN服务器,并将其接收的、STUN服务器传输来的NAT出口的对外地址、端口信息和所访问客户端地址信息传输至SIP控制消息传输模块。
SIP控制消息传输模块:将其接收的NAT出口的对外地址信息、端口号信息承载于SIP控制消息的负载中,并根据其接收的所访问客户端地址信息将SIP控制消息通过NAT设备传输至所访问客户端。
上述STUN服务器包括:
获取所访问客户端地址信息模块:在STUN服务器接收到私网中的用户设备(STUN客户端1)通过NAT设备传输来的请求信息时,从DNS/DHCP服务器处获取用户设备(STUN客户端1)对应的所访问客户端地址信息,并将其传输至响应模块。
响应模块:从STUN服务器接收的请求信息中获取NAT出口的对外地址信息、端口号信息,并将NAT出口的对外地址信息、端口号信息和所访问客户端地址信息承载于响应消息中,通过NAT设备传输至相应的用户设备。
本发明另一目的提供了一种基于配电房采集数据的NAT穿透方法,包括以下步骤:
(a)用户设备(STUN客户端1)通过NAT设备从STUN服务器处获取其对应的NAT出口的对外地址信息、端口号信息和所访问客户端地址信息。
(b)用户设备(STUN客户端1)将获取的NAT出口的对外地址信息、端口号信息承载于SIP控制消息的负载中,并根据所访问客户端地址信息将SIP控制消息通过NAT设备传输至所访问客户端。
上述步骤(a)具体包括:
(a1)、用户设备获取STUN服务器的地址信息;
(a2)、用户设备(STUN客户端1)中将请求用户设备(STUN客户端1)对应的NAT出口的对外地址信息、端口号信息和所访问客户端地址信息的消息通过NAT设备传输至STUN服务器;
(a3)、STUN服务器在接收到请求消息后,获取用户设备(STUN客户端1)对应的NAT出口的对外地址信息和端口号信息,并从DNS/DHCP服务器处获取用户设备(STUN客户端1)对应的所访问客户端地址信息;
(a4)、STUN服务器将其获取的NAT出口的对外地址信息、端口号信息和所访问客户端地址信息承载于响应消息中,并通过NAT设备传输至用户设备。
上述步骤(a1)具体为:
用户设备通过与DNS/DHCP服务器的信息交互获取STUN服务器的地址信息。
上述步骤(a2)具体为:
用户设备将用户数据报协议的请求消息传输至NAT设备;
NAT设备将请求消息中的端口号信息变换为NAT设备的端口信息,并将请求消息传输至STUN服务器。
上述步骤(a3)具体为:
STUN服务器从NAT设备传输来的请求消息中获取用户设备(STUN客户端1)对应的NAT出口的对外地址、端口号信息,并通过与DNS/DHCP服务器的信息交互获取用户设备(STUN客户端1)对应的所访问客户端地址信息。
上述步骤(a4)具体为:
STUN服务器将NAT出口的对外地址和端口号信息承载于STUN响应消息的“映射地址”属性中,将所访问客户端地址信息承载于扩展设置的所访问客户端地址信息属性中,并将STUN响应消息传输至用户设备。
上述步骤(b)中SIP控制消息的负载包括:SIP控制消息的SIP负载。
上述一种基于配电房采集数据的NAT穿透方法还包括:
在用户设备的会话描述协议SDP报文中承载实时传输控制协议RTCP的端口属性信息。
本发明还需要一种基于配电房采集数据的NAT穿透系统中的用户设备,本用户设备是作为UDP简单的NAT穿透STUN客户端1。
用户设备将其获取的NAT出口的对外地址、端口号信息承载于SIP控制消息的负载中,并根据所访问客户端地址信息将SIP控制消息通过NAT设备传输至所访问客户端。
根据上面技术方案的描述可知,本发明的有益效果是在配电房采集数据上传通讯过程当中,通过在通讯网络中设置STUN服务器、将配电房用户设备作为STUN客户端1,使STUN协议适用于配电房采集数据通讯网络中的NAT穿透流程,明确了配电房采集数据通讯网络中用户设备(STUN客户端1)的NAT穿透流程,使用户设备(STUN客户端1)对外网是可见的,有效解决了配电房采集数据通讯网络中的NAT穿透问题。本发明可以在不对目前其它行业现有的NAT设备的地址转换处理流程进行任何改动的情况下,通过对STUN协议中的消息进行简单扩展即可使用户设备(STUN客户端1)获得NAT出口的对外地址信息、端口号信息和所访问客户端地址信息,由此可见本发明的技术方案易实现、适应性强、扩展好;通过本发明提供的方案流程可实现配电房采集数据的NAT穿透的目的。
附图说明
图1为本发明基于配电房采集数据的NAT穿透系统示意图;
图2为本发明基于配电房采集数据的NAT穿透方法的流程图。
具体实施方式
下面结合附图对本发明做进一步的说明。
本发明的结构示意图如图1所示,本发明是基于配电房采集数据通讯网络的NAT穿透系统和方法的核心在于:在通讯网络中设置至少一个STUN(UDP的简单NAT穿透)服务器,将用户设备作为STUN客户端1,用户设备通过NAT设备从STUN服务器处获取其对应的NAT出口的对外地址信息、端口号信息和所访问客户端地址信息,用户设备将其获取的NAT出口的对外地址信息、端口号信息承载于SIP控制消息的负载如SIP负载中,并通过NAT设备将SIP控制消息传输至所访问客户端。
本发明的网络地址转换穿透系统如附图1所示,下面结合附图1对本发明基于配电房采集数据通讯网络的NAT穿透系统和方法进行说明。
本发明基于配电房采集数据的NAT穿透系统包括:私网中的STUN客户端1(配电房用户设备)、网络地址转换装置NAT、至少一个UDP的简单NAT穿透STUN服务器以及DNS/DHCP服务器。
STUN客户端1,STUN客户端1为配电房采集数据模块的用户设备。相应的,在通讯网络中有STUN服务器和DNS/DHCP服务器。STUN客户端1可以通过与DNS/DHCP(域名服务器/动态主机配置协议)服务器的信息交互获得与之通讯的STUN服务器地址,这部分功能由STUN客户端1中获取STUN服务器地址信息模块来实现。本发明可以不对现有的NAT设备的地址转换处理流程做任何改动,从而使本发明的技术方案易于实施、适用性好,但是,由于现有NAT设备实现地址转换处理流程的差异,本发明也不排除对部分现有NAT设备的地址转换处理流程进行改进的可能性。
用户设备(STUN客户端1)在获得STUN服务器的地址信息、并需要通过SIP进行呼叫时,通过NAT设备向STUN服务器发送STUN请求消息,以获取其对应的NAT出口的对外地址信息、端口号信息及所访问客户端地址信息。这部分功能由用户设备中(STUN客户端1)的获取对外地址端口模块来完成,即获取STUN服务器地址信息模块将其获取到的STUN服务器地址信息传输至获取对外地址端口模块,获取对外地址端口模块根据其接收的STUN服务器的地址信息将请求用户设备(STUN客户端1)对应的NAT出口的对外地址信息、端口号信息和所访问客户端地址信息的请求消息通过NAT设备传输至STUN服务器。
NAT设备接收到用户设备(STUN客户端1)传输来的STUN请求消息后,对STUN请求消息中的地址信息进行转换,本发明中的NAT设备的地址信息转换过程遵循现有的地址信息转换过程,如转换过程可以为:NAT设备将STUN请求消息中的源地址信息转换为其上用户设备(STUN客户端1)对应的端口信息。NAT设备将地址信息转换后的请求消息传输至STUN服务器。
STUN服务器主要用于接收用户设备(STUN客户端1)通过NAT设备传输来的STUN请求消息,并通过与DNS/DHCP服务器的信息交互获取用户设备(STUN客户端1)对应的NAT出口的对外地址信息、端口号信息和所访问客户端地址信息,并将这些信息承载于STUN响应消息中通过NAT设备传输至对应的用户设备(STUN客户端1)。
STUN服务器的功能主要由获取所访问客户端地址信息模块和响应模块来实现。
获取所访问客户端地址信息模块主要用于在STUN服务器接收到用户设备(STUN客户端1)通过NAT设备传输来的STUN请求消息时,通过向DNS/DHCP服务器发送请求消息,并与DNS/DHCP服务器进行一系列的信息交互,以实现从DNS/DHCP服务器处获得用户设备(STUN客户端1)对应的所访问客户端地址信息;获取所访问客户端地址信息模块接收DNS/DHCP服务器返回的携带有所访问客户端地址信息,并从DNS/DHCP服务器返回的消息中获取用户设备(STUN客户端1)对应的所访问客户端地址信息,并将所访问客户端地址信息传输至响应模块。
用户设备(STUN客户端1)中的获取对外地址端口模块从STUN响应消息中获取NAT出口的对外地址信息、端口号信息和所访问客户端地址信息,并将其传输至SIP控制消息传输模块。此时,用户设备(STUN客户端1)进入激活状态。这样,用户设备(STUN客户端1)在向所访问客户端发送SIP控制消息时,通过将NAT出口的对外地址信息、端口号信息承载于SIP控制消息的SIP负载中,就能够使SIP控制消息的IP地址信息和SIP负载中的地址信息一致,从而使用户设备(STUN客户端1)对于外网可见,实现了NAT穿透。用户设备(STUN客户端1)发送SIP控制消息的功能由SIP控制消息模块来实现。
下面结合附图对本发明的通讯网络中NAT穿透方法进行说明。
如图2所示:在步骤2-1,UE(用户设备)通过与DNS/DHCP服务器的一系列信息交互后,得到STUN服务器的地址信息。
在步骤2-2,UE通过UDP发送STUN请求消息给通讯网络的STUN服务器,STUN请求消息首先传输至NAT设备。
到步骤2-3,NAT设备将其接收的STUN请求消息的IP地址信息进行地址转换,具体的地址转换过程为:将STUN请求消息中的源地址信息转换为其上与用户设备(STUN客户端1)对应的出口的地址信息,将STUN请求消息中的端口信息转换为其上与用户设备(STUN客户端1)对应的端口信息。在地址转换完成后,NAT设备将STUN请求消息传输至STUN服务器。
到步骤2-4,STUN服务器接收到STUN请求消息后,经过与DNS/DHCP服务器一系列的信息交互,得到UE对应的所访问客户端的地址信息。
步骤2-5至步骤2-6,STUN服务器在得到所访问客户端的地址信息后,产生STUN响应消息,STUN响应消息中的“映射地址”属性携带有其接收到的STUN请求消息中的源地址信息和端口号信息,即UE在NAT上对应的外部地址信息和端口信息,如图2中,外部地址信息为:210.123.34.12,端口信息为:5678.另外,STUN响应消息的“客户端地址”属性中还携带有所访问客户端地址信息,如图2中,所访问客户端地址信息为:xx.xx.xx.xx。“客户端地址”属性是STUN响应消息的扩展属性。STUN响应消息通过NAT设备传输至UE。具体的地址转换过程为:将STUN请求消息中的源地址信息转换为其上与用户设备(STUN客户端1)对应的出口的地址信息,将STUN请求消息中的端口信息转换为其上与用户设备(STUN客户端1)对应的端口信息。在地址转换完成后,NAT设备将STUN请求消息传输至STUN服务器。
到步骤2-7,UE通过STUN响应消息中承载的信息得知其在NAT上的外部地址信息、端口号信息和所访问客户端的地址信息,将NAT上的外部地址信息和端口号信息填入SIP控制消息的SIP负载中,并根据所访问客户端的地址信息将SIP控制消息通过NAT设备传输至所访问客户端。图2中,SIP控制消息的SIP负载的地址信息、端口号信息为:210.123.33.10:3456。
到步骤2-8,NAT设备接收SIP控制消息,转换SIP控制消息中的IP地址信息,并将SIP控制消息传输至所访问客户端,这样,SIP控制消息中的IP地址信息和SIP负载中IP地址信息一致,如均为图2中的210.123.33.10:3456,使UE对外网是可见的,实现了NAT穿透。
到步骤2-9至步骤2-10,所访问客户端将响应成功的1000K消息通过NAT设备传输至UE。
虽然通过实施例描绘了本发明,本领域普通技术人员知道,本发明有许多变形和变化而不脱离本发明精神,本发明的申请文件权利要求包括这些变形和变化。