实现“无固定IP”远程通讯的秘密!
这是许多厂家头疼的问题!因有幸参与一项欧洲工程中获得一些技术资料及经验,今公开与大家分享!
要克服”变动IP”,或是”无法得知IP”状况,要能实现远程测控通讯,设备能直接如同ICQ、MSN、Messenger一样方便直接互连传送数据有3种方式。
1. 使用Dynamic DNS
2. 透过Link server
3. 使用data hosting主机
分别说明如下:
动态网域名称服务器 (Dynamic DNS)
Dynamic DNS概论
一般当您的数据采集设备(内置TCP/IP)透过ADSL(Asymmetric Digital Subscriber Line,异步数字用户专线)进入Internet时,经常会面临到IP地址自动变换的问题,而dDNS提供您一个解决的方案。大部份ADSL 服务的方式如下:当一个ADSL调制解调器登入时,ISP(Internet Server Provider,互联网服务提供商)会自动从“可用的IP地址”中指定一个IP地址以供使用。当调制解调器注销时,该IP地址会被“释放”至可用的区域,而且可以再度被其它ADSL 所使用。
在“可供使用区域内的IP地址”通常都是“真实IP” , 这只有当您知道目前所使用的IP地址的情况下,才可以在任何地方上互联网与您的设备连接上。而不幸的是,没有任何方式可以事先得知该“真实IP”地址。当然,大部份的互联网服务提供商也能够提供给您一个“固定的真实IP”地址,但是这样的费用通常相当昂贵。
一个最经济有效的解决方式是利用某些厂家所提供的动态网域名称服务器(Dynamic DNS)服务。它的服务方式如下:
· 当您打开您”采集设备(RTU/SCADA/PLC等具备TCP/IP功能)”的电源,并已设置到所属的IP地址,它就会立即登录到dDNS服务器。
· 对于每一个登录者,dDNS服务器将接收到来自设备服务器的“外部的”和“内部的”IP地址。(请参考下列“外部的”和“内部的”IP地址说明)
· 一旦登录完成,您就可以利用下列的URLs(User Requirements Language)来操作个别的设备服务器。
外部的IP地址: DeviceID.UniqueID.dev.tibbo.net
内部的IP地址: DeviceID.UniqueID.int.tibbo.net

Fig.1. Dynamic DNS运作图
独一性的公司ID (在Device server设定的使用者名称 (Owner Name,简称ON)) 是您在dDNS服务器登录时所选用的帐号名称。通常它会是您的公司名称(必要时可用简称)。
设备ID名 (在Device server设定的设备名称(Device Name,简称DN)) 是您所拥有的个别的Device server名称,而这也是您在dDNS所登录的。所有的Device server都将透过它们的独有的公司ID 和设备 ID 的组合来做识别。
例如:如果您帐号的独有的公司 ID = abccorp ,而设备服务器的设备 ID = testdev,那幺这两个URLs 将会是:
外部的IP地址: testdev.abccorp.dev.tibbo.net
内部的IP地址: testdev.abccorp.int.tibbo.net
最重要的是这些URLs和您所曾经使用过的任何URL没有差别。只要在可以连接上您的Device server的任何软件中,将它们设为目标地址,这些URLs将会自动连接这个Device server的IP地址!
何时使用Dynamic DNS服务器
和中转服务器服务(Link Server Service)比较起来,动态网域名称服务器更加经济而且提供更好的数据处理能力,因为您的计算机和设备服务器将直接做资料交换(而不是透过中转服务器)。
唯一需注意的 (在WAN(Wide Area Network,广域网络)安装时)是该设备服务器本身对于计算机必须是“有形的”。有形的意思是网络的设备(例如路由器)和设备服务器需被装置在计算机能对该设备服务器做连结(直接或透过路由器的转递地址)的方式上。显然的,这个意思是必须要有一个“真实的IP”(但不必是固定的) 地址在设备服务器的某一端(经由设备服务器本身或经由路由器)。 而透过中转服务器服务(Link Server Service), 则不需要“真实的IP”地址。
结论:在设备服务器的一端有“真实IP”地址时,使用Dynamic DNS(动态网域名称服务器);而在设备服务器的一端没有真实IP地址时,使用Link Server Service(中转服务器服务)。
“外部的”和“内部的”URLs之不同
内部的IP地址是实际使用在Device server者(如IP地址设定之定义)。外部的IP地址是能在网域外使用该设备服务器的地址。这是典型经由路由器 (ADSL调制解调器)连接局域网络至Internet之组合。
以下所示是两个网域,两者皆透过路由器/ ADSL调制解调器连接到Internet。PC #1位于第一个网域,并且需要连接两个Device server- #1 (和PC #1位于同一网域)和#2 (位于不同网域)。当要呼叫Device server#1,计算机必须要使用这个Device server的IP地址。因此,假如PC #1想使用URL,它要用testdev.abccorp.int.tibbo.net来找到该Device server。

Fig.2. “外部的”和“内部的”URLs之不同
对于位在不同网域的Device server#2就不同了。这个Device server对于在网域#2中,透过路由器/ADSL调制解调器真实IP地址的PC #1而言是有形的。这个路由器是以传输在它对外的IP地址(由ISP所指定)上所接受到的所有通讯,至网域内的Device server的方式来设置。因此, PC #1 必须以“对外的”USL(testdev.abccorp.dev.tibbo.net)来呼叫Device server#2。
中转服务器 (Link Server)
对具有真实IP 的 Device Servers而言. 理论上来看采用动态 DNS 应是最佳解决方案,但遇到远程节点无真实IP地址时或实务上从管理角度, 安全性考量或工作原理不可行时,就要另寻解决方式
因此最佳方案且唯一能跟Device Servers联机又不需具真实 IP 解决方式就是透过专业厂商 的Link Server (中转服务器)
相同于在市面上普遍使用的实时通通讯服务如 ICQ, MSN Messenger 或其它”聊天室系统”服务, Link Server主要扮演Device Server与 PC之间 或跟另一Device Server之间的沟通代理.两者实际上并未真正连接而是让两设备分别跟Link Server连通,也就像是一个存在Internet上具有实体 IP 地址的中转站, 一旦两设备跟中转站接通 就可互相传讯交换资料. 好象是直接连接原理

图标 一. 经由中转服务器连接
以上所提原理主要关键点在任何一方不需去接受直接连接, 因此是否具真实 IP 地址也就不是必要条件. 以下就是 Link Sever 运作方式:
· 首先先到中转服务器注册您的Device Server. 注册所需的资料包含拥有者ID("Owner Name" , 登入密码与Device名称("Password").
· 注册完成后, 会取得来自中转服务器授权的通讯端口, 未来任何系统均透过此通讯端口沟通
· 此Device Server已被设定为与 Link Sever 连接, (视为维持永远在线),每当一开机就确保是在线登入了
· 当您的 PC 或任一客户端需跟Device Server交换资料时, 只要与Link sever 建立TCP 连接 选择所注册时指定的IP & 通讯端口,从此通讯端口接收到的数据都会传送至Device Server, 同时Device Server也会将数据传送至此通讯端口
这种关键点是已克服为任何软件或设备具能透过Link sever相互连通的通讯功能. 那是因为连网下客户端并不需要任何登录要求或程序来取得连网.对客户端来说这还是属标准 TCP 方式来连接通讯端口. 您只要做的是更改目的地 IP 地址与注册时指定通讯端口的目的通讯接口.
数据主机服务 ( Hosting Services)
Device Servers 经常应用到的功能之一就是从各地采集远程资料.实际上这样的资料收集系统只完成了一半的工作. 您还需要把资料集中到一处具有运行特别软件的计算机主机或 web-site系统(请参考图标一) 供资料储存与分析用.此资料中心必需具有高度安全,稳定,容易管理与符合经济效益.

图标 Fig.1.远程数据采集及数据库中心软件运行
就像是自行建置有 PHP MySQL数据库空间主机架构一样 ,专业厂家提供的 Data hosting可集中做资料存取,进一步简化您的这项工作.主要不同的是有一组特别 PHP extension 来让Device Servers跟 Link Server 间连接容易些.请参考演示文稿图标二.

图标 Fig.2. 基于专业厂家网络数据中心的远程数据采集
Data Hosting 整合了资料收集与整理, 不单您可使用任何第三者主机服务 或者您自行架设主机来运作. 这种架构只需有特定用语可收集来自Device Severs资料与能储存这些data至data hosting的数据库,你的应用软件或web系统(位于另一部独立计算机 ) 可透过 TCP/IP 通讯方式存取数据库。如简图标三建置

Fig.3.另一控制中心主机可以在任何位置连网
最近已经有专门厂商免费提供给主要有兴趣的客户资料储存空间服务, 如果您对此项服务有兴趣, 请自行连络。