CN104917725A - 一种跨nat的串口服务器与网络设备的通信方法及系统 - Google Patents
一种跨nat的串口服务器与网络设备的通信方法及系统 Download PDFInfo
- Publication number
- CN104917725A CN104917725A CN201410088010.5A CN201410088010A CN104917725A CN 104917725 A CN104917725 A CN 104917725A CN 201410088010 A CN201410088010 A CN 201410088010A CN 104917725 A CN104917725 A CN 104917725A
- Authority
- CN
- China
- Prior art keywords
- virtual program
- server
- nat
- client
- program module
- 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.)
- Granted
Links
Landscapes
- Computer And Data Communications (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提供一种跨NAT的串口服务器与网络设备的通信方法及系统,串口服务器与NATA相连,网络设备与NATB相连,NATA与NATB通过中间服务器进行第一协议通信相连,该系统包括:运行在NATB网络内模拟串口服务器的第一虚拟程序模块;运行在NATA网络内模拟网络设备的第二虚拟程序模块;第一虚拟程序模块和第二虚拟程序模块均具有自己的IP和端口;客户端虚拟程序模块具有一个唯一的ID;第一虚拟程序模块和第二虚拟程序模块一方作为客户端虚拟程序模块,另一方作为服务器端虚拟程序模块通信。本发明使得不同局域网中的网络设备和串口服务器在保持原有协议不变和无需修改自身任何软件的情况下,实现如在同一个局域网内部一样通信。
Description
技术领域
本发明属于计算机通信技术领域,涉及一种串口服务器与网络设备的通信方法及系统,特别是涉及一种跨NAT的串口服务器与网络设备的通信方法及系统。
背景技术
串口服务器或串口服务器模块是一个将串口数据和TCP/IP数据相互转化的转换器,如图1所示,广泛地应用于网络化的控制、网络化的数据采集系统中。串口服务器一般通过TCP/IP(包括UDP)和网络设备(包括计算机、手机、PAD等设备)通信。通信时必须一方是客户端,另一方为服务器端;作为客户端的一方必须知道对方(即服务器端)的IP地址和端口,然后才能向服务器端的IP地址中的端口发送数据实现通信。
NAT(Network Address Translation,网络地址转换)是一种将内网和外网隔离开的网络设备,例如一般家用的路由器都是一个NAT设备。NAT负责将内网的多个IP(如192.168.1.200和192.168.1.201)映射到一个公网IP(如116.11.12.13)上。如图2所示,内网IP为192.168.1.200,端口为1000(以下用192.168.1.200:1000表示)在公网上看来可能是从116.11.12.13:2000过来的;同样的一台内网IP为192.168.1.201:1001的计算机在公网看来可能是从116.11.12.15:2001过来的。现在最大的问题在于,无论是串口服务器还是计算机作为客户端,首先需要知道对方的IP和端口;但是跨了NAT之后对方的IP和端口都是随机的,事先并不知道,这样就无法实现当两个设备都在NAT内网时的通信。
为了解决跨NAT的应用,目前已有一些解决方法,其中用得最多的是端口映射+动态域名方法。如图3所示,具体做法是:在作为服务器端的一方所属的NAT上做好端口映射,例如将外网的2001端口映射到内网192.168.1.201:1001上。这样,客户端只要访问外网IP的2001端口,NAT就自动将其转发到内网的192.168.1.201:1001上。由于NAT每天开机的时候,电信运营商会随机分配一个IP给NAT,因此服务端的外网IP相当于是未知的。为此需要在服务器端的网络中的任何一台网络设备(可以是计算机,也可以是NAT)上登录动态域名软件,比如登录名为acb.gicp.net,则客户端就可以通过域名解析abc.gicp.net获得服务器端的IP地址。通过以上方法可以顺利实现NAT下的串口服务器的通信。但是以上方法存在以下缺陷:1)不是所有NAT都允许做端口映射的。特别是目前很多电信安装的路由器,只有登录超级用户才能够做端口映射,但是超级用户密码一般使用者不具有。2)动态域名软件有时候也不稳定,会出现无法成功解析正确IP的情况。
为了克服图3所示方法的缺陷,提出了一种如图4所示的中间服务器或P2P方法。中间服务器方法是在Internet上租赁一台具有固定IP的计算机,然后NAT下的计算机和串口服务器都作为客户端去连接这台中间服务器,由中间服务器负责在中间转发计算机和串口服务器之间的数据。P2P技术其实也是类似的,只不过在后续的实际数据传输阶段不需要经过中间服务器转发,但是在刚开始的时候也需要中间服务器作为媒介进行信息传递。图4所示方法也存在如下问题:
1)计算机和串口服务器都需要改为客户端的方式,否则无法连接中间服务器。但是某些时候计算机上的软件只能作为服务器使用,软件是现成,修改将需要重新制作软件。而且软件修改后无法兼容在本地局域网中直接对连使用。
2)必须有一套机制让中间服务器能够知道计算机需要和哪台串口服务器通信。即中间媒介如何搭线、搭桥的问题。这就需要一个协议来和中间服务器协商。但是原有的串口服务器或者计算机协议是固定的,换为新的和中间服务器通信的协议,就需要重新改写软件。
发明内容
鉴于以上所述现有技术的缺点,本发明的目的在于提供一种跨NAT的串口服务器与网络设备的通信方法及系统,用于解决现有跨NAT的网络设备与串口服务器通过中间服务器实现通信时需要修改串口服务器和网络设备各自的原有软件,实际操作复杂应用不便的问题。
为实现上述目的及其他相关目的,本发明提供一种跨NAT的串口服务器与网络设备的通信方法,其中,所述串口服务器与NAT A相连,网络设备与NAT B相连,NAT A与NAT B通过中间服务器进行第一协议通信相连,所述跨NAT的串口服务器与网络设备的通信方法包括:运行在NAT B网络内用以模拟串口服务器的第一虚拟程序;运行在NAT A网络内用以模拟网络设备的第二虚拟程序;所述第一虚拟程序和第二虚拟程序均具有自己的IP和端口;所述第一虚拟程序和第二虚拟程序中的一方作为客户端虚拟程序,另一方作为服务器端虚拟程序;所述客户端虚拟程序具有一个唯一的ID;所述客户端虚拟程序时刻保持与所述中间服务器之间基于第一协议的第一通信链路畅通,并通过第一通信链路向中间服务器报告自己的ID号;所述服务器端虚拟程序将自己和预连接的客户端虚拟程序的ID绑定,通过第二协议向中间服务器发送连接请求,请求中间服务器打通自身与所述预连接的客户端虚拟程序之间的第二通信链路;所述中间服务器解析所述连接请求,获得预连接的客户端虚拟程序的ID,建立预连接的客户端虚拟程序与服务器端虚拟程序之间基于第二协议的第二通信链路;所述客户端虚拟程序将服务器端协议数据转换成第二协议数据发送到所述第二通信链路上,或将通过所述第二通信链路接收的第二协议数据转换成服务器端协议数据发送给服务器端设备;即:所述客户端虚拟程序负责第二协议数据和服务器端协议数据的互相转化;所述服务器端设备是与所述客户端虚拟程序运行在同一NAT网络下的网络设备或串口服务器;所述服务器端虚拟程序将通过所述第二通信链路接收的第二协议数据转换成客户端协议数据发送给客户端设备,或将客户端协议数据转换成第二协议数据发送到所述第二通信链路上;即:所述服务端虚拟程序负责第二协议数据和客户端协议数据的互相转化;所述客户端设备是与所述服务器端虚拟程序运行在同一NAT网络下的串口服务器或网络设备。
优选地,所述第二协议和第一协议是同时并存的,但负责的内容不同;所述第一协议负责保持所述客户端虚拟程序和中间服务器之间的第一通信链路通畅;所述第二协议负责建立并保持所述第二通信链路以及第二通信链路上的数据通信通畅;所述第二协议是与所述第一协议不同的数据通信协议。
优选地,当所述第一虚拟程序为客户端虚拟程序,第二虚拟程序为服务器端虚拟程序时,客户端设备为所述串口服务器,服务器端设备为所述网络设备;所述客户端虚拟程序直接运行在所述网络设备上,或运行在所述NAT B网络下的除所述网络设备外的其他任一设备上;所述服务器端虚拟程序直接运行在所述串口服务器上,或运行在所述NAT A网络下的除所述串口服务器外的其他任一设备上。
优选地,当所述第二虚拟程序为客户端虚拟程序,第一虚拟程序为服务器端虚拟程序时,客户端设备为所述网络设备,服务器端设备为所述串口服务器;所述服务器端虚拟程序直接运行在所述网络设备上,或运行在所述NAT B网络下的除所述网络设备外的其他任一设备上;所述客户端虚拟程序直接运行在所述串口服务器上,或运行在所述NAT A网络下的除所述串口服务器外的其他任一设备上。
优选地,所述网络设备包括计算机、手机、平板电脑、或PAD。
本发明还提供一种跨NAT的串口服务器与网络设备的通信系统,其中,所述串口服务器与NAT A相连,网络设备与NAT B相连,NAT A与NAT B通过中间服务器进行第一协议通信相连,其特征在于,所述跨NAT的串口服务器与网络设备的通信系统包括:运行在NAT B网络内用以模拟串口服务器的第一虚拟程序模块;运行在NAT A网络内用以模拟网络设备的第二虚拟程序模块;所述第一虚拟程序模块和第二虚拟程序模块均具有自己的IP和端口;所述第一虚拟程序模块和第二虚拟程序模块以一方作为客户端虚拟程序模块,另一方作为服务器端虚拟程序模块的方式通信;所述客户端虚拟程序模块具有一个唯一的ID;所述客户端虚拟程序模块与服务器端虚拟程序模块的通信方式包括:所述客户端虚拟程序模块时刻保持与所述中间服务器之间基于第一协议的第一通信链路畅通,并通过第一通信链路向中间服务器报告自己的ID号;所述服务器端虚拟程序模块将自己和预连接的客户端虚拟程序模块的ID绑定,通过第二协议向中间服务器发送连接请求,请求中间服务器打通自身与所述预连接的客户端虚拟程序之间的第二通信链路;所述中间服务器解析所述连接请求,获得预连接的客户端虚拟程序模块的ID,建立预连接的客户端虚拟程序模块与服务器端虚拟程序模块之间基于第二协议的第二通信链路;所述客户端虚拟程序模块将服务器端协议数据转换成第二协议数据发送到所述第二通信链路上,或将通过所述第二通信链路接收的第二协议数据转换成服务器端协议数据发送给服务器端设备;即:所述客户端虚拟程序负责第二协议数据和服务器端协议数据的互相转化;所述服务器端设备是内置所述客户端虚拟程序模块的设备;所述服务器端虚拟程序模块将通过所述第二通信链路接收的第二协议数据转换成客户端协议数据发送给客户端设备,或将客户端协议数据转换成第二协议数据发送到所述第二通信链路上;即:所述服务端虚拟程序负责第二协议数据和客户端协议数据的互相转化;所述客户端设备是内置所述服务器端虚拟程序模块的设备。
优选地,所述第二协议和第一协议是同时并存的,但负责的内容不同;所述第一协议负责保持所述客户端虚拟程序和中间服务器之间的第一通信链路通畅;所述第二协议负责建立并保持所述第二通信链路以及第二通信链路上的数据通信通畅;所述第二协议是与所述第一协议不同的数据通信协议。
优选地,当所述第一虚拟程序模块为客户端虚拟程序模块,第二虚拟程序模块为服务器端虚拟程序模块时,客户端设备为所述串口服务器,服务器端设备为所述网络设备。
优选地,当所述第二虚拟程序模块为客户端虚拟程序模块,第一虚拟程序模块为服务器端虚拟程序模块时,客户端设备为所述网络设备,服务器端设备为所述串口服务器。
优选地,所述网络设备包括计算机、手机、平板电脑、或PAD。
如上所述,本发明所述的跨NAT的串口服务器与网络设备的通信方法及系统,具有以下有益效果:
通过本发明所述的客户端虚拟程序和服务器端虚拟程序,使得位于不同NAT局域网中的计算机和串口服务器在保持原有协议不变和无需修改自身任何软件的情况下,实现如在同一个NAT局域网内部一样通信。
附图说明
图1为串口服务器的应用结构示意图。
图2为跨NAT的串口服务器的应用结构示意图。
图3为基于端口映射+动态域名的跨NAT的串口服务器的通信结构示意图。
图4为基于中间服务器的跨NAT的串口服务器的通信结构示意图。
图5为本发明所述的跨NAT的串口服务器与网络设备的通信方法的应用结构示意图。
图6为本发明所述的客户端虚拟程序与服务器端虚拟程序的通信方法的流程示意图。
图7为本发明所述的客户端虚拟程序与服务器端虚拟程序的通信方法的第一种实现结构示意图。
图8为本发明所述的客户端虚拟程序与服务器端虚拟程序的通信方法的第二种实现结构示意图。
图9为本发明所述的跨NAT的串口服务器与网络设备的通信系统的结构示意图。
元件标号说明
900 跨NAT的串口服务器与网
络设备通信系统
910 第一虚拟程序模块
920 第二虚拟程序模块
具体实施方式
以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。
请参阅附图。需要说明的是,本实施例中所提供的图示仅以示意方式说明本发明的基本构想,遂图式中仅显示与本发明中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。
下面结合实施例和附图对本发明进行详细说明。
实施例
本发明提供一种跨NAT的串口服务器与网络设备的通信方法,如图5所示,串口服务器与NAT A相连,网络设备与NAT B相连,NAT A与NAT B通过中间服务器进行第一协议通信相连,所述跨NAT的串口服务器与网络设备的通信方法包括:
运行在NAT B网络内用以模拟串口服务器的第一虚拟程序;其中,所述网络设备包括计算机、手机、平板电脑、或PAD。本发明的保护范围不限于本实施例列举的几种,凡是能够实现网络通信的设备都包括在本发明所述网络设备的范围内。
运行在NAT A网络内用以模拟网络设备的第二虚拟程序;所述第一虚拟程序和第二虚拟程序均具有自己的IP和端口;所述第一虚拟程序和第二虚拟程序以一方作为客户端虚拟程序,另一方作为服务器端虚拟程序的方式通信;所述客户端虚拟程序具有一个唯一的ID。
本发明的主要思想是(如图5所示)用二个虚拟程序在本地网络中,分别模拟出远端跨NAT网络中的网络设备和串口服务器的行为,让串口服务器或网络设备在和虚拟程序通信时,会感觉似乎是在和本地局域网内的网络设备或串口服务器通信一样,且虚拟程序负责通过中间服务器建立二个虚拟程序的跨NAT通信(即如第二通信链路的直接通信),同时负责两端数据的转发。
如图6所示,所述客户端虚拟程序与服务器端虚拟程序的通信方式包括以下步骤:
S61,所述客户端虚拟程序时刻保持与所述中间服务器之间基于第一协议的第一通信链路畅通,并通过第一通信链路向中间服务器报告自己的ID号。
S62,所述服务器端虚拟程序将自己和预连接的客户端虚拟程序的ID绑定,通过第二协议向中间服务器发送连接请求,请求中间服务器打通自身与所述预连接的客户端虚拟程序之间的第二通信链路。其中,所述第二协议和第一协议是同时并存的,但负责的内容不同;所述第一协议负责保持所述客户端虚拟程序和中间服务器之间的第一通信链路通畅;所述第二协议负责建立并保持所述第二通信链路以及第二通信链路上的数据通信通畅。所述第二协议是与所述第一协议不同的数据通信协议。
S63,所述中间服务器解析所述连接请求,获得预连接的客户端虚拟程序的ID,建立预连接的客户端虚拟程序与服务器端虚拟程序之间基于第二协议的第二通信链路。
S64,所述客户端虚拟程序将通过所述第二通信链路接收的第二协议数据转换成服务器端协议数据发送给服务器端设备,或将来自服务器端设备的服务器端协议数据转换成第二协议数据发送到所述第二通信链路上;所述服务器端设备是与所述客户端虚拟程序运行在同一NAT网络下的网络设备或串口服务器;
所述服务器端虚拟程序将通过所述第二通信链路接收的第二协议数据转换成客户端协议数据发送给客户端设备,或将来自客户端设备的客户端协议数据转换成第二协议数据发送到所述第二通信链路上;所述客户端设备是与所述服务器端虚拟程序运行在同一NAT网络下的串口服务器或网络设备。
在实际应用中,所述第一协议为串口服务器与虚拟程序、网络设备与虚拟程序、中间服务器与客户端虚拟程序之间原有的通信协议,如Modbus TCP、FTP、Telnet、透明传输等协议。第二协议是与第一协议不同的通信协议,第二协议将第一协议的数据重新打包和封装,使得客户端虚拟程序和服务器端虚拟程序之间能够实现P2P传输,比如网络聊天的QQ协议、Msn协议等。
进一步,所述网络设备和串口服务器中任一方都可作为客户端,相应地另一方就应作为服务器端。
当所述第一虚拟程序为客户端虚拟程序,第二虚拟程序为服务器端虚拟程序时,客户端设备为所述串口服务器,服务器端设备为所述网络设备。如图7所示,以所述网络设备为计算机为例,在NAT A的网络中运行所述服务器端虚拟程序,在NAT B的网络中运行所述客户端虚拟程序,跨NAT的计算机与串口服务器的具体通信过程包括:
S71,安装于计算机上的客户端虚拟程序时刻保持与所述中间服务器之间基于第一协议的第一通信链路畅通,并通过第一通信链路向中间服务器报告自己的ID号;所述客户端虚拟程序具有唯一的ID。
S72,安装于串口服务器上的服务器端虚拟程序将自己和预连接的客户端虚拟程序的ID绑定,通过第二协议向中间服务器发送连接请求,请求中间服务器打通自身与所述预连接的客户端虚拟程序之间的第二通信链路。其中,所述第二协议是与所述第一协议不同的数据通信协议。
S73,所述中间服务器解析所述连接请求,获得预连接的客户端虚拟程序的ID,建立预连接的客户端虚拟程序与服务器端虚拟程序之间基于第二协议的第二通信链路,此时所述客户端虚拟程序与计算机建立连接。
S74,所述客户端虚拟程序通过所述第二通信链路接收第二协议数据(该第二协议数据在第二通信链路不畅通时也可以由中间服务器转发),并将第二协议数据转换成服务器端协议数据(即计算机协议数据)发送给计算机;
所述服务器端虚拟程序通过所述第二通信链路接收第二协议数据(该第二协议数据在第二通信链路不畅通时也可以由中间服务器转发),并将第二协议数据转换成客户端协议数据(即串口服务器协议数据)发送给串口服务器。其中,因客户端虚拟程序模拟的是串口服务器,所以相当于在NAT B网络内计算机与串口服务器直接相连;因服务器端虚拟程序模拟的计算机,所以相当于在NAT A网络内串口服务器与计算机直接相连。本发明所述的客户端虚拟程序或服务器端虚拟程序并不一定需要在一台独立的计算机上运行,即图7所示的服务器端虚拟程序可以在NAT A网下的任意一台计算机内运行,或者直接在串口服务器内运行。同理,服务器端虚拟程序也可以在NAT B网下的任意一台计算机内运行。
当所述第二虚拟程序为客户端虚拟程序,第一虚拟程序为服务器端虚拟程序时,客户端设备为所述网络设备,服务器端设备为所述串口服务器。如图8所示,以所述网络设备为计算机为例,在NAT A的网络中运行所述客户端虚拟程序,在NAT B的网络中运行所述服务器端虚拟程序,跨NAT的计算机与串口服务器的具体通信过程包括:
S81,安装于串口服务器上的客户端虚拟程序时刻保持与所述中间服务器之间基于第一协议的第一通信链路畅通,并通过第一通信链路向中间服务器报告自己的ID号;所述客户端虚拟程序具有唯一的ID。
S82,安装于计算机上的服务器端虚拟程序将自己和预连接的客户端虚拟程序的ID绑定,通过第二协议向中间服务器发送连接请求。其中,所述第二协议是与所述第一协议不同的数据通信协议。
S83,所述中间服务器解析所述连接请求,获得预连接的客户端虚拟程序的ID,建立预连接的客户端虚拟程序与服务器端虚拟程序之间基于第二协议的第二通信链路,此时所述客户端虚拟程序与串口服务器建立连接。
S84,所述客户端虚拟程序通过所述第二通信链路接收第二协议数据(该第二协议数据可以是由中间服务器转发的,也可以是由服务器端虚拟程序直接发出的),并将第二协议数据转换成服务器端协议数据(即串口服务器协议数据)发送给串口服务器;
所述服务器端虚拟程序通过所述第二通信链路接收第二协议数据(该第二协议数据可以是由中间服务器转发的,也可以是由客户端虚拟程序直接发出的),并将第二协议数据转换成客户端协议数据(即计算机协议数据)发送给计算机。其中,因客户端虚拟程序模拟的是计算机,所以相当于在NAT A网络内串口服务器与计算机直接相连;因服务器端虚拟程序模拟的是串口服务器,所以相当于在NAT B网络内计算机与串口服务器直接相连。本发明所述的客户端虚拟程序或服务器端虚拟程序并不一定需要在一台独立的计算机上运行,即图8所示的客户端虚拟程序可以在NAT A网下的任意一台计算机内运行,或者直接在串口服务器内运行。同理,服务器端虚拟程序也可以在NAT B网下的任意一台计算机内运行。
本发明提供一种跨NAT的串口服务器与网络设备的通信系统,该系统可以实现本发明所述的跨NAT的串口服务器与网络设备的通信方法,但该方法的实现装置包括但不限于本发明所述的跨NAT的串口服务器与网络设备的通信系统。
如图9所示,所述跨NAT的串口服务器与网络设备的通信系统900包括:用以模拟串口服务器的第一虚拟程序模块910和用以模拟网络设备的第二虚拟程序模块920。所述通信系统900的应用环境如图9所示,第一虚拟程序模块910运行在NAT B网络下,第二虚拟程序模块920运行在NAT A网络下,串口服务器与NAT A相连,网络设备与NAT B相连,NAT A与NAT B通过中间服务器通过第一协议通信相连。所述第一虚拟程序模块910可以运行在NAT B网络下的任意一个网络设备(包括计算机、手机、平板电脑、或PAD)上,所述第二虚拟程序模块920可以运行在NAT A网络下的任意一个设备(包括串口服务器)上;所述第一虚拟程序模块911和第二虚拟程序模块921均具有自己的IP和端口;所述客户端虚拟程序模块具有一个唯一的ID。所述第一虚拟程序模块910和第二虚拟程序模块920以一方作为客户端虚拟程序模块,另一方作为服务器端虚拟程序模块的方式通信;这样位于NAT A网络下的串口服务器就能够与位于NAT B网络下的网络设备(包括计算机、手机、平板电脑、或PAD)就实现了跨NAT通信。
下面以用以模拟串口服务器的第一虚拟程序模块910内置在网络设备中,用以模拟网络设备的第二虚拟程序模块920内置在串口服务器中为例,对第一虚拟程序模块910和第二虚拟程序模块920以一方作为客户端虚拟程序模块,另一方作为服务器端虚拟程序模块的方式的通信过程进行描述,具体包括:
所述客户端虚拟程序模块时刻保持与所述中间服务器之间基于第一协议的第一通信链路畅通,并通过第一通信链路向中间服务器报告自己的ID号;其中,所述第二协议是与所述第一协议不同的数据通信协议;
所述服务器端虚拟程序模块将自己和预连接的客户端虚拟程序模块的ID绑定,通过第二协议向中间服务器发送连接请求,请求中间服务器打通自身与所述预连接的客户端虚拟程序之间的第二通信链路;
所述中间服务器解析所述连接请求,获得预连接的客户端虚拟程序模块的ID,建立预连接的客户端虚拟程序模块与服务器端虚拟程序模块之间基于第二协议的第二通信链路;
所述客户端虚拟程序模块将服务器端协议数据转换成第二协议数据发送到所述第二通信链路上,或将通过所述第二通信链路接收的第二协议数据转换成服务器端协议数据发送给服务器端设备;所述服务器端设备是内置所述客户端虚拟程序模块的设备,即网络设备或串口服务器;
所述服务器端虚拟程序模块将通过所述第二通信链路接收的第二协议数据转换成客户端协议数据发送给客户端设备,或将客户端协议数据转换成第二协议数据发送到所述第二通信链路上;所述客户端设备是内置所述服务器端虚拟程序模块的设备,即串口服务器或网络设备。
当所述第一虚拟程序模块为客户端虚拟程序模块,第二虚拟程序模块为服务器端虚拟程序模块时,客户端设备为所述串口服务器,服务器端设备为所述网络设备。
当所述第二虚拟程序模块为客户端虚拟程序模块,第一虚拟程序模块为服务器端虚拟程序模块时,客户端设备为所述网络设备,服务器端设备为所述串口服务器。
本发明所述的跨NAT的串口服务器与网络设备的通信方法解决了在跨NAT时串口服务器使用不便的问题,利用串口服务器远程虚拟技术设计了安装于网络设备上用以模拟串口服务器的第一虚拟程序,以及安装在串口服务器上用以模拟网络设备的第二虚拟程序。其中,第一虚拟程序和第二虚拟程序之间是通过中间服务器建立的P2P通信链路(即第二通信链路)实现通信的。第一虚拟程序和第二虚拟程序都有自己的IP和端口,在程序实现上实际上是一个套接字(socket)。客户端虚拟程序通过绑定的ID,经由中间服务器牵线、搭桥,找到这个ID对应的服务端虚拟程序,并建立通信链路。
通过本发明所述的客户端虚拟程序和服务器端虚拟程序,使得位于不同NAT局域网中的计算机和串口服务器在保持原有协议不变和无需修改自身任何软件的情况下,实现如在同一个NAT局域网内部一样通信,即网络设备和第一虚拟程序通信时,在网络设备看来似乎是在和串口服务器通信;第二虚拟程序和串口服务器通信时,串口服务器以为是网络设备在和它在通信。所述的客户端虚拟程序和服务器端虚拟程序建立了一个隧道(即第二通信链路),不管中间协议如何复杂,两端的计算机和串口服务器都实现了透明数据的传输。
目前,手机、计算机、和串口服务器都很少具有公网IP,基本都在NAT内网工作,因此必须解决跨NAT通信的问题。原有的“端口映射+动态域名”方法局限性很大。而“中间服务器或P2P”方法则需要修改原有的串口服务器和计算机/手机软件。但是计算机/手机软件的种类千差万别,而且很多都是现成的,修改这些软件在实际操作中是不切实际的。与现有的跨NAT通信方法相比,本发明所述的跨NAT的串口服务器与网络设备的通信方法及系统具备以下优点:
1、无需修改用户的计算机软件,也无需做端口映射就能够实现跨NAT访问串口服务器。即不需要对现有计算机或串口服务器做任何改变。
2、用户开发新的计算机/手机软件时,无需关心“中间服务器”的通信协议细节,按照标准的与串口服务器通信设计即可。因为服务器端虚拟程序和客户端虚拟程序会代为完成与中间服务器的通信细节,使得用户开发程序非常简单。例如:在用户手机(本示例以下称本机)上运行一个远端的模拟串口服务器的客户端虚拟程序端口为1001,这样手机软件不需要修改,只要连接到本机IP的1001端口就可以实现跨NAT的手机与串口服务器通信。
综上所述,本发明有效克服了现有技术中的种种缺点而具高度产业利用价值。
上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何熟悉此技术的人士皆可在不违背本发明的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡所属技术领域中具有通常知识者在未脱离本发明所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本发明的权利要求所涵盖。
Claims (10)
1.一种跨NAT的串口服务器与网络设备的通信方法,其中,所述串口服务器与NAT A相连,网络设备与NAT B相连,NAT A与NAT B通过中间服务器进行第一协议通信相连,其特征在于,所述跨NAT的串口服务器与网络设备的通信方法包括:
运行在NAT B网络内用以模拟串口服务器的第一虚拟程序;运行在NAT A网络内用以模拟网络设备的第二虚拟程序;所述第一虚拟程序和第二虚拟程序均具有自己的IP和端口;
所述第一虚拟程序和第二虚拟程序中的一方作为客户端虚拟程序,另一方作为服务器端虚拟程序;所述客户端虚拟程序具有一个唯一的ID;
所述客户端虚拟程序时刻保持与所述中间服务器之间基于第一协议的第一通信链路畅通,并通过第一通信链路向中间服务器报告自己的ID号;
所述服务器端虚拟程序将自己和预连接的客户端虚拟程序的ID绑定,通过第二协议向中间服务器发送连接请求,请求中间服务器打通自身与所述预连接的客户端虚拟程序之间的第二通信链路;
所述中间服务器解析所述连接请求,获得预连接的客户端虚拟程序的ID,建立预连接的客户端虚拟程序与服务器端虚拟程序之间基于第二协议的第二通信链路;
所述客户端虚拟程序将通过所述第二通信链路接收的第二协议数据转换成服务器端协议数据发送给服务器端设备,或将来自服务器端设备的服务器端协议数据转换成第二协议数据发送到所述第二通信链路上;即:所述客户端虚拟程序负责第二协议数据和服务器端协议数据的互相转化;所述服务器端设备是与所述客户端虚拟程序运行在同一NAT网络下的网络设备或串口服务器;
所述服务器端虚拟程序将通过所述第二通信链路接收的第二协议数据转换成客户端协议数据发送给客户端设备,或将来自客户端设备的客户端协议数据转换成第二协议数据发送到所述第二通信链路上;即:所述服务端虚拟程序负责第二协议数据和客户端协议数据的互相转化;所述客户端设备是与所述服务器端虚拟程序运行在同一NAT网络下的串口服务器或网络设备。
2.根据权利要求1所述的跨NAT的串口服务器与网络设备的通信方法,其特征在于:所述第二协议和第一协议是同时并存的,但负责的内容不同;所述第一协议负责保持所述客户端虚拟程序和中间服务器之间的第一通信链路通畅;所述第二协议负责建立并保持所述第二通信链路以及第二通信链路上的数据通信通畅;所述第二协议是与所述第一协议不同的数据通信协议。
3.根据权利要求1所述的跨NAT的串口服务器与网络设备的通信方法,其特征在于:当所述第一虚拟程序为客户端虚拟程序,第二虚拟程序为服务器端虚拟程序时,客户端设备为所述串口服务器,服务器端设备为所述网络设备;所述客户端虚拟程序直接运行在所述网络设备上,或运行在所述NAT B网络下的除所述网络设备外的其他任一设备上;所述服务器端虚拟程序直接运行在所述串口服务器上,或运行在所述NAT A网络下的除所述串口服务器外的其他任一设备上。
4.根据权利要求1所述的跨NAT的串口服务器与网络设备的通信方法,其特征在于:当所述第二虚拟程序为客户端虚拟程序,第一虚拟程序为服务器端虚拟程序时,客户端设备为所述网络设备,服务器端设备为所述串口服务器;所述服务器端虚拟程序直接运行在所述网络设备上,或运行在所述NAT B网络下的除所述网络设备外的其他任一设备上;所述客户端虚拟程序直接运行在所述串口服务器上,或运行在所述NAT A网络下的除所述串口服务器外的其他任一设备上。
5.根据权利要求1所述的跨NAT的串口服务器与网络设备的通信方法,其特征在于:所述网络设备包括计算机、手机、平板电脑、或PAD。
6.一种跨NAT的串口服务器与网络设备的通信系统,其中,所述串口服务器与NAT A相连,网络设备与NAT B相连,NAT A与NAT B通过中间服务器进行第一协议通信相连,其特征在于,所述跨NAT的串口服务器与网络设备的通信系统包括:
运行在NAT B网络内用以模拟串口服务器的第一虚拟程序模块;
运行在NAT A网络内用以模拟网络设备的第二虚拟程序模块;所述第一虚拟程序模块和第二虚拟程序模块均具有自己的IP和端口;所述第一虚拟程序模块和第二虚拟程序模块以一方作为客户端虚拟程序模块,另一方作为服务器端虚拟程序模块的方式通信;所述客户端虚拟程序模块具有一个唯一的ID;所述客户端虚拟程序模块与服务器端虚拟程序模块的通信方式包括:
所述客户端虚拟程序模块时刻保持与所述中间服务器之间基于第一协议的第一通信链路畅通,并通过第一通信链路向中间服务器报告自己的ID号;
所述服务器端虚拟程序模块将自己和预连接的客户端虚拟程序模块的ID绑定,通过第二协议向中间服务器发送连接请求,请求中间服务器打通自身与所述预连接的客户端虚拟程序之间的第二通信链路;
所述中间服务器解析所述连接请求,获得预连接的客户端虚拟程序模块的ID,建立预连接的客户端虚拟程序模块与服务器端虚拟程序模块之间基于第二协议的第二通信链路;
所述客户端虚拟程序模块将通过所述第二通信链路接收的第二协议数据转换成服务器端协议数据发送给服务器端设备,或将来自服务器端设备的服务器端协议数据转换成第二协议数据发送到所述第二通信链路上;即:所述客户端虚拟程序负责第二协议数据和服务器端协议数据的互相转化;所述服务器端设备是内置所述客户端虚拟程序模块的设备;
所述服务器端虚拟程序模块将通过所述第二通信链路接收的第二协议数据转换成客户端协议数据发送给客户端设备,或将来自客户端设备的客户端协议数据转换成第二协议数据发送到所述第二通信链路上;即:所述服务端虚拟程序负责第二协议数据和客户端协议数据的互相转化;所述客户端设备是内置所述服务器端虚拟程序模块的设备。
7.根据权利要求6所述的跨NAT的串口服务器与网络设备的通信系统,其特征在于:所述第二协议和第一协议是同时并存的,但负责的内容不同;所述第一协议负责保持所述客户端虚拟程序和中间服务器之间的第一通信链路通畅;所述第二协议负责建立并保持所述第二通信链路以及第二通信链路上的数据通信通畅;所述第二协议是与所述第一协议不同的数据通信协议。
8.根据权利要求6所述的跨NAT的串口服务器与网络设备的通信系统,其特征在于:当所述第一虚拟程序模块为客户端虚拟程序模块,第二虚拟程序模块为服务器端虚拟程序模块时,客户端设备为所述串口服务器,服务器端设备为所述网络设备。
9.根据权利要求6所述的跨NAT的串口服务器与网络设备的通信系统,其特征在于:当所述第二虚拟程序模块为客户端虚拟程序模块,第一虚拟程序模块为服务器端虚拟程序模块时,客户端设备为所述网络设备,服务器端设备为所述串口服务器。
10.根据权利要求6所述的跨NAT的串口服务器与网络设备的通信系统,其特征在于:所述网络设备包括计算机、手机、平板电脑、或PAD。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410088010.5A CN104917725B (zh) | 2014-03-11 | 2014-03-11 | 一种跨nat的串口服务器与网络设备的通信方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410088010.5A CN104917725B (zh) | 2014-03-11 | 2014-03-11 | 一种跨nat的串口服务器与网络设备的通信方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104917725A true CN104917725A (zh) | 2015-09-16 |
CN104917725B CN104917725B (zh) | 2018-02-16 |
Family
ID=54086438
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410088010.5A Active CN104917725B (zh) | 2014-03-11 | 2014-03-11 | 一种跨nat的串口服务器与网络设备的通信方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104917725B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109587204A (zh) * | 2017-09-29 | 2019-04-05 | 中兴通讯股份有限公司 | 一种访问公网的方法、装置和电子设备 |
CN110493351A (zh) * | 2019-08-28 | 2019-11-22 | 视联动力信息技术股份有限公司 | 一种视联网接入方法、装置、设备及存储介质 |
CN110620783A (zh) * | 2019-09-26 | 2019-12-27 | 成都博高信息技术股份有限公司 | 一种基于nat内网穿透的互联网络串口透传通信方法 |
CN110971498A (zh) * | 2018-09-30 | 2020-04-07 | 北京京东尚科信息技术有限公司 | 通信方法、通信装置、电子设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070283192A1 (en) * | 2006-02-08 | 2007-12-06 | Sergei Shevchenko | Automated threat analysis |
CN101442492A (zh) * | 2008-12-26 | 2009-05-27 | 中国科学院计算技术研究所 | 一种p2p网络中实现nat穿越的方法和系统 |
CN101599998A (zh) * | 2009-07-24 | 2009-12-09 | 东北电网有限公司 | 一种远动数据专用通道传输方法 |
CN101800652A (zh) * | 2010-02-04 | 2010-08-11 | 深圳市金宏威实业发展有限公司 | 串口与以太网方式转换的方法、系统及工业以太网交换机 |
-
2014
- 2014-03-11 CN CN201410088010.5A patent/CN104917725B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070283192A1 (en) * | 2006-02-08 | 2007-12-06 | Sergei Shevchenko | Automated threat analysis |
CN101442492A (zh) * | 2008-12-26 | 2009-05-27 | 中国科学院计算技术研究所 | 一种p2p网络中实现nat穿越的方法和系统 |
CN101599998A (zh) * | 2009-07-24 | 2009-12-09 | 东北电网有限公司 | 一种远动数据专用通道传输方法 |
CN101800652A (zh) * | 2010-02-04 | 2010-08-11 | 深圳市金宏威实业发展有限公司 | 串口与以太网方式转换的方法、系统及工业以太网交换机 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109587204A (zh) * | 2017-09-29 | 2019-04-05 | 中兴通讯股份有限公司 | 一种访问公网的方法、装置和电子设备 |
CN109587204B (zh) * | 2017-09-29 | 2021-11-02 | 中兴通讯股份有限公司 | 一种访问公网的方法、装置和电子设备 |
CN110971498A (zh) * | 2018-09-30 | 2020-04-07 | 北京京东尚科信息技术有限公司 | 通信方法、通信装置、电子设备及存储介质 |
CN110971498B (zh) * | 2018-09-30 | 2022-09-30 | 北京京东尚科信息技术有限公司 | 通信方法、通信装置、电子设备及存储介质 |
CN110493351A (zh) * | 2019-08-28 | 2019-11-22 | 视联动力信息技术股份有限公司 | 一种视联网接入方法、装置、设备及存储介质 |
CN110620783A (zh) * | 2019-09-26 | 2019-12-27 | 成都博高信息技术股份有限公司 | 一种基于nat内网穿透的互联网络串口透传通信方法 |
CN110620783B (zh) * | 2019-09-26 | 2022-03-25 | 成都博高信息技术股份有限公司 | 一种基于nat内网穿透的互联网络串口透传通信方法 |
Also Published As
Publication number | Publication date |
---|---|
CN104917725B (zh) | 2018-02-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103051737B (zh) | 提供融合互联架构上的网络能力的方法和系统 | |
CN105376299B (zh) | 一种网络通信方法、设备及网络附属存储设备 | |
US9146826B2 (en) | Method and apparatus for scaling network simulation | |
CN105159256B (zh) | 一种基于Web服务的智能家居控制系统 | |
CN104836863B (zh) | 实现tcp反向端口映射的系统和方法 | |
CN103650458A (zh) | 媒体流的传输方法、装置与系统 | |
CN105323310B (zh) | 网络通信方法、设备及网络附属存储设备 | |
CN104917725A (zh) | 一种跨nat的串口服务器与网络设备的通信方法及系统 | |
CN110572484A (zh) | 一种基于容器的生产环境仿真方法 | |
CN104506573B (zh) | 点对点装置与点对点联机方法 | |
CN107580011A (zh) | 一种数据共享方法及桌面云服务端 | |
CN103095850B (zh) | 一种移动终端通过计算机共享网络的方法和系统 | |
CN104363306A (zh) | 一种企业私有云管理控制方法 | |
Singh et al. | IoT standardization efforts—An analysis | |
CN102821020B (zh) | 通过复制中转ip包来透传vpn通信的方法 | |
CN103401954B (zh) | 虚拟dhcp的实现方法 | |
CN102983988B (zh) | 一种设备代理装置以及网络管理装置 | |
CN104506405B (zh) | 跨域访问的方法及装置 | |
CN108351798A (zh) | 用于虚拟机的可扩展寻址机制 | |
CN104486459A (zh) | 一种双ip双线的服务器及服务方法 | |
CN105429884A (zh) | 通过终端来管理不同网络中路由器的方法和系统 | |
CN104954260A (zh) | 一种基于数据链路层的点对点vpn路由方法及系统 | |
CN104506425A (zh) | 基于家庭云主机的即时通讯系统及其方法 | |
CN105338131B (zh) | 一种dhcp服务器地址池容量的测试方法及系统 | |
CN104852832A (zh) | 用于插座集群中stun服务器性能测试的方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |