在ASIX OS上实现VVDTU的DNS功能
扫描二维码
随时随地手机看文章
引 言
WDTU是一种实现无线数据传输的终端设备,目前在工业控制、监控、安保等领域应用广泛。现有的WDTU实现了将采集到的数据通过GPRS/CDMA网络接入到Internet,最终将数据传送到以太网内的数据中心。但是对数据中心有特别的要求:该数据中心必须具有公网的IP或是被上一级路由器/交换机映射成具有特定的端口。这使该设备的适用要求提高,降低了产品的适用范围。为了提高产品的实用性,更加方便用户使用,笔者在原有系统上,利用ASIX OS丰富的协议资源,对当中的DNS协议部分作适当的移植和修改,基于ASIX OS设计和添加了DNS功能。本文将重点介绍DNS实现的相关内容,其他部分只作简单说明。
1 背景知识
WDTU系统主要有处理器、串口、电源、无线模块、以太网口等组成。以太网口是为了功能扩展的需要而设置的,便于接入以太网。在本设计中只简单说明以太网 DNS,目的是为了与无线设备的DNS功能相区别。本设计重点讨论无线DNS功能的实现。系统的硬件结构如图1所示。
UART2是数据接收端口,与外设数据源设备相连。而UART1是作为无线模块的接口,与无线模块的子板相连。系统的工作原理是:系统上电启动以后,使用 PPP协议拨号上线,与运营商服务中心建立连接,然后服务中心的网关连接到指定IP或域名的数据中心主机上,此时就可以实现UART 2与以太网上的数据中心的数据传输。ASIX OS是基于μITRON3.0,为16/32位Garfield微处理器家族开发的实时操作系统。它包含了丰富的操作系统内核和协议簇的多种API,能满足用户基本的网络应用需求。
2 DNS功能的设计方案
DNS(Domain Name Server)用于实现Internet上IP地址与域名的一一对应。域名使用方便,而计算机内部只处理IP地址,所以必须由域名服务器来进行两者的转换,这一过程就称为域名解析。本设计中使用的是花生壳(Peanut Hull)的一款完全免费的客户端软件,它提供了桌面域名管理和动态域名解析的功能。首先在花生壳网站上注册域名,然后在主机上运行该客户端软件,这样就将用户注册的域名与该主机的IP地址绑定,形成映射。该软件实现了特定的域名与变化的主机IP地址间的实时映射,为网外设备方便地访问该主机提供了可能。
由DNS协议的要求知道:一个域名服务器负责一个或多个区域,而每个区域的管理者必须为该区域提供一个主域名服务器和至少一个从域名服务器,且两者必须是独立和冗余的。在实际使用中,由于受条件、实用性、成本等的限制,不使用主、从服务器。如果直接接入以太网,则没有可用的DNS服务器,那么就使得第一级的域名解析不能进行,从而使最终的域名解析失败。而本设计是基于无线网络的,网络接口层是通过串行通信协议:PPP(点对点协议)接入运营商的服务中心,再接入互联网。
PPP协议本身分为3个子协议:LCP(Link ControlProtocol)、NCP(Net Control Protocol)、PPP扩展协议(用于身份验证),而与网络设置相关的主要是NCP协议。NCP协议用于终端设备连接到运营商的中心服务器,若终端设置了固定的有效IP,则终端将设定的IP封装在配置请求数据包里,告知运营商端的服务器,建立连接;否则将IP设为全0,则服务器端随机为WDTU终端设备分配一个动态IP,该IP每次复位后将改变。NCP的一个独特之处是,它可以向服务器申请动态分配DNS服务器。由于没有人工添加DNS解析的服务器,所以正是利用NCP的该功能,获得实现DNS功能必需的DNS解析服务器。这也正是本设计的一大特点。
3 DNS功能的实现
3.1 必要的初始化
系统首先要完成一系列必要的初始化,包括协议栈和设备的初始化。对DNS的初始化主要包括:一,创建DNS服务器链表(服务器链表的大小可以根据实际需要开辟,本设计中使用5个),此时该链表是空的;二,创建DNS主机缓存,可以将一些常用的域名与IP映射信息存放在缓存中,供终端设备直接查找。
当完成上述的初始化以后,接下来进行PPP拨号,向运营商的服务中心发送LCP、NCP连接配置请求的数据包。其中NCP向服务中心发送请求分配DNS解析服务器的配置请求数据包,根据NCP的帧格式进行封装。代码实现的流程如图2所示。
3.2 域名解析的实现
最终WDTU连接到登录花生壳客户端的主机,与之实现数据传输。花生壳客户端会将登录主机的IP与申请的该域名的映射信息返回给花生壳公司的DNS服务器。而运营商与这些提供域名解析服务的公司之间建立联系,提供DNS服务的公司通过直接或间接的连接,将本公司的DNS服务器域名信息系统与运营商的服务中心相连接,这样,运营商就使得移动终端实现了域名的解析。DNS功能有多种类型,但主要的是两种:由域名得到IP地址和根据IP地址得到相映射的域名。实际应用中主要是需要根据域名查找到与之相对应的IP地址。因此,本设计也是针对这种类型介绍的。
该过程分为两个阶段:查找终端的缓存,如果终端本身的缓存中已经有该域名的信息,则该过程完成,不需要后续的操作;若没有该域名的信息,则需要进一步向上一级的DNS解析服务器查询该域名的信息,即DNS解析(resolve)。域名解析的核心正是在于向上一级的DNS解析器发出解析请求,解析器得到相匹配的IP以后,返回给终端设备,从而整个过程完成。由DNS协议的特点可知,为了方便后续域名查询,提高后续的域名解析的效率,该协议规定,将新解析到的映射信息加入到高速缓存中。下列部分代码说明了。DNS解析的过程:
DNS解析的功能是向上一级的DNS服务器(运营商服务中心动态分配的DNS服务器)发出请求,令其帮助查找该域名的映射信息。在DNS协议里,查询信息的方法有两种:递归查询和迭代查询。大多数情况下,为了使用上的方便,默认的都是递归查询。这样对于运营商的DNS服务器而言,其解析域名的过程跟 WDTU终端查询域名的方法相同:先查询服务器自身的缓存,若查到则过程完成,否则再向服务器的上一级DNS服务器查询域名信息。而花生壳公司的服务器地址会直接或间接地存放在运营商的服务器链表中(这一部分由运营商和花生壳公司合作实现),从而可以从花生壳公司的服务器数据系统中得到该域名的映射IP。运营商的DNS服务器得到花生壳返回的数据包以后,过程完成。最后再从运营商动态分配的DNS服务器返回的DNS应答数据包中提取IP地址信息。DNS系统整体的工作原理如图3所示。
结 语
由于工业对于借助无线网络实现远距离数据传输的要求和应用越来越多,而传统的数据传输必须有固定的公网IP,这使得成本要求较高,限制了产品的使用范围。本设计的创新点在于,使WDTU无线终端实现了DNS功能,这样任意一台主机都可作为“具有公网IP”的传统数据中心主机使用,使产品的应用成本降低,对于提高产品的整体功能,促进产品的推广具有重要的现实意义。