随着物联网技术与移动互联网的发展,基于Web的应用正逐渐成为个人业务的主流选择。随着嵌入式芯片的处理能力不断提升,移动嵌入式Web服务器占据了一定的市场,在中小型系统方面,传统的基于PC端的Web服务器在成本及网络架构上逊于嵌人式Web服务器,利用嵌入式设备的硬件资源,在嵌入式设备上建立HTTP服务器及Web页面,远程用户通过浏览器实现对嵌入式设备的远程查看、管理和控制。
目前移动嵌入式Web服务器应用广泛,特别是家庭网络、环境监测、物联网农业,甚至是电力行业,例如Web服务器在光伏发电监控系统中的应用¨1,基于嵌入式处理器的Web服务器在网络监控系统中的应用旧1。除此之外,移动嵌入式Web服务器特别适合以个人轻量级业务为主的应用场景,大型业务系统可以考虑使用分布式的移动嵌入式Web服务器系统。
用户访问Web服务器,一般都会直接输入服务器域名进行站点访问,而根据移动嵌入式Web服务器应用场景的特点,接人Internet的IP地址大多不是固定的,而是采用拨号方式连接上网,特别是以3G通信方式接人Internet网络,均采用拨号方式接入公网,而每次拨号,电信运营商分配的IP地址都有变化,因此公网中原来的IP地址与域名对应的关系应及时更新,否则用户无法通过域名访问Web服务器,将新的IP地址与域名进行更新则是由DDNS模块来完成。DDNS模块将更新请求发送至DDNS服务器,DDNS服务器将最新的IP地址与域名映射关系发送给DNS更新,如此新的IP地址与域名对应关系便在公网登记,以便公网用户时刻都能通过域名访问Web服务器。
目前,移动嵌入式Web服务器方面的研究更偏向于Web实现及服务器数据处理,文献[3]就是对Web实现所做的研究,而对Web服务器接入网络方面所做研究甚少。本文研究DDNS在移动嵌入式Web服务器中的应用,解决远程用户访问动态IP移动嵌入式Web服务器的问题。
1、移动嵌入式Web服务器优势
1.1移动嵌入式Web服务器优势
移动嵌入式Web服务器相比于PC端服务器,充分利用嵌入式设备的硬件条件,建立Web服务器,节省了硬件成本,不必再为建立Web服务器准备硬件资源。优化网络结构,传统的嵌入式设备只是作为数据汇聚和转发的功能,起着网关作用,上层建立了专门的服务器系统,嵌入式设备需将数据上传至服务器供服务器管理,而访问者不直接访问嵌入式设备,而是直接访问服务器获取数据信息。现采用移动嵌人式Web服务器,访问者直接高效可靠地通过嵌人式设备上的Web服务器实现远程网管信息的传送、控制、展示和管理。在很大程度上简化了网络结构”。
移动嵌入式Web服务的便捷性更高,应用更加广泛,嵌入式网络结构灵活,静态移动嵌入式Web服务器在一定程度上限制了嵌入式网络的组建与扩展。
当嵌入式网络结构改变时,服务器节点有可能变动,此时不需要知道服务器IP地址,只需要采用DDNS服务器将域名与新IP更新。又比如搭建个人智能家居系统,一般而言,运营商分配个人的是动态IP地址,用户在远程无法通过域名访问建立智能家居Web服务器,而需要采用DDNS服务器来完成定期的动态域名与IP更新。
1.2 DDNS技术在移动嵌入式Web服务器的优势
移动嵌入式Web服务器、DDNS服务器、DNS服务器及用户端具体网络结构图如图1所示。
用户端通过域名访问移动嵌人式Web服务器,域名通过DNS服务器解析得到IP地址,实际上用户是根据IP地址实现对Web服务器的访问,通信流程如图1实线所示。当域名与IP地址对应关系保持不变时,公网的DNS服务器一直保存着这对映射关系,用户可以轻松实现通过域名访问移动嵌入式Web服务器,但若IP地址有变化时,而DNS服务器不对最新IP与域名映射关系进行更新,用户便无法通过域名访问服务器,解决这一关键问题就是DDNS,通信流程参考图1虚线所示。
利用DDNS技术来保证域名与IP地址映射关系正确比使用静态IP地址服务器具有明显的优势。IP地址有限,而且电信运营商分配静态IP地址的数目特别少,大多是分配的动态IP地址,设备的每一次拨号都可能分配到一个不同的IP地址,因此采用DDNS技术很好地解决了IP地址数目有限的问题。
从成本方面来说,分配静态IP地址比拨号动态分配IP地址价格要昂贵得多,拥有静态IP地址不适合轻量级业务的嵌人式应用场合。
目前,DDNS技术越来越成熟,国内外的DDNS服务供应商也层出不穷,比如国外的DynDNS.org和国内的花生壳等,都能很好地满足中小企业在DDNS上的需求。
2、移动嵌入式Web服务器接入方案设计
2.1 扩展DDNS的嵌入式服务器架构
对于移动嵌入式Web服务器而言,与不具有Web服务器嵌入式模块最大的区别就是包含HTTP服务器,HTTP服务器作为嵌入式设备的扩展模块,可根据需求来定制,这也是嵌入式系统的优点之一,方便模块定制和裁剪。HTTP服务器模块主要负责自身任务管理,同时提供HTTP对Web页面请求做出响应,并且接受远程访问者的数据请求,这主要是完成HTTP协议的解析,即将远程访问者的HTTP报文解析并做出相应的回复。
如图2所示,嵌入式设备软件根据功能需求各有区别,尤其是扩展模块,都是量体裁衣,图2描述了保护DDNS功能的移动嵌入式Web服务器共有的模块,主要有Web页面、HTTP服务器、网络通信模块、数据存储区,网络通信模块既包括有线通信也包括3G或者WiFi等无线通信,本文扩展了DDNS模块,其他通用模块未在图2中列出。
Web界面将请求发至HTTP服务器,HTTP服务器Hand request接收到请求,一方面将数据存储,另一方面将消息发送至主控软件采取相应动作完成功能。将请求数据存储的目的是为了保证各进程模块共享数据内存,采用开锁、存取、关锁的机制,保证数据能在不同进程之间共享。比如界面有一条配置温度传感器告警阈值的请求,HTTP服务器将阈值存人数据存储区,同时又发消息至主控软件中的控制温度传感器进程,提示有阈值更新,告诉该进程读取最新阈值判断是否超过阈值,有温度告警。HTTP服务器与主控软件及数据存储区均是双向通信。HTTP服务器与网络通信模块之间的双向通信是远程客户通过网络通信模块访问Web页面,并产生Web请求,同时HTTP服务器将响应通过Web页面反馈给客户。DDNS守护进程根据IP地址的变动发送DNS更新消息至通信模块到DNS服务器,更新现在的IP,服务商将新IP地址及域名更新后,回复给DDNS。DDNS采用客户端/服务器模式,在此,DDNS客户端即嵌入式设备,最主要的作用即向DDNS服务器发送更新域名和IP地址对应关系的DDNS更新请求,当服务器的IP地址发生变化时,它们将作为DDNS客户端,需要动态更新域名和IP地址对应关系的设备。DDNS服务器负责通知DNS服务器动态更新域名和IP地址之间的对应关系。接收到DDNS客户端的更新请求后,DDNS服务器通知DNS服务器重新建立域名和IP地址之间的对应关系。从而保证即使DDNS客户端的IP地址改变,Internet用户仍然可以通过同样的域名访问DDNS客户端。
通过DDNS技术,嵌入式设备将拨号上网获得的IP与自己的域名绑定,从而保证远端用户能够通过域名访问移动嵌入式Web服务器。
2.2 DDNS工作流程
DDNS的主要职责是将网络拨号电信运营商分配的新IP地址与域名发送给远端DDNS服务器,DDNS服务器将IP与域名对应关系更新后传送给DNS服务器,这样域名与新IP地址映射关系就在公网中进行了登记,远程用户就可以根据域名访问拥有新IP地址的移动嵌入式Web服务器。DDNS工作流程如图3所示。
当移动嵌入式Web服务器上电后,系统先进行硬件初始化及主控软件初始化,然后开启DDNS模块的守护进程,在守护进程中开启一条线程监控网络拨号状态,如果有网络拨号动作发生,则取得最新口地址与原IP地址进行判断;若发现电信运营商分配的IP地址有改变,则将DDNS缓冲区初始化,并在time_to_quit时间内与第一个DDNS服务器发起连接请求,time_to_quit为移动嵌入式Web服务器与DDNS服务器连接成功的最大时间,否则连接超时;连接成功后调用更新程序,根据供应商提供的报文格式填充报文并用socket发送出去;等待服务器回应,DDNS服务器若将新的IP地址与域名更新成功,返回request successful。若返回失败,则依次选择第2个DDNS服务器发起连接请求直至新的IP地址与域名在公网登记成功。
2.3报文结构分析
2.3.1发送报文填充
发送报文的填充格式与DDNS服务供应商有直接关系,每个DDNS服务供应商都有不同的DDNS请求报文格式,但就Linux平台来说,大体格式基本一致,都需要填充服务器域名地址、主机设备用户名及密码、用户代码等信息。
本文主要使用3个DDNS供应商,分别是DynDNS.org、3322服务器和oray服务器。
DynDNS.org的报文格式为:
GET /nic/update? system=statDNS&hostname = XXX.dynDNS.orgdmaylP=1.1.1.1&wildeard=ON HTTP/1.0
Authorization:Basic usemme&password
User-Agent:bcm-daemon-0.1[Linux]
Host:members.dynDNS.org
members.3322.org的报文格式为:
GET/dynDNS/update?system=dynDNS&hostname=XXX.3322.org&mylP=1.1.1.1&wildeard=OFF&mx=mail.icg.com&backmx=NO&off]ine=NO HTTP/1.1 \r
Host:members.3322.org
Authorization:Basic username&password
User-Agent:icg gw DDNS client 1.0
花生壳oray服务器供应商DDNS.oray.COB供应商报文格式为:
GET/ph/update? Hostname=yourhostname&myIP=1.1.1.1 HTTP/1.0
Host:DDNS.oray.com
Authorization:Basic base -64- authorization
User-Agent:Oray
发送消息之间,严格按照报文格式组建报文,否则报文在DDNS服务器端将不被识别。
2.3.2返回代码解析
DDNS更新请求发送至DDNS服务器后,等待从DDNS服务器响应的返回值及返回代码,根据返回值与返回代码,判断新IP地址与域名更新情况。
代码返回值为-1,且会返回strange server response,are you connecting to the right server表示服务器域名不正确。返回401表示认证失败,花生壳DDNS服务供应商返回401表示未付费用户访问了付费DDNS服务器供应商。返回值为200表示发送至服务器成功,且服务器返回相应代码,具体代码列表如表1所示。
3、功能验证
打开嵌入式网关,连接好设备,在串口设备里可以看到DDNS模块所发报文信息,嵌入式网关设备串口为COM9,打开串口设备,可以查看到DDNS发送报文。如图4所示。
报文结构如图4所示,返回成功后,收到request successful,表示花生壳域名服务器已经将目前的IP地址更新,域名ht825.oicp.net对应的IP地址是124.42.77.160,这样直接访问域名ht825.oicp.net就可以直接访问124.42.77.160了。如果由于网络重新拨号,运营商分配的IP地址不是固定的,分配的IP地址有了变化,此时DDNS模块便会将新的IP地址填进报文并发送至花生壳服务器,服务器更新域名与IP地址映射,保证外网用户可以根据域名访问服务器。
验证返回200,同时返回request success。能根据域名ht825.oicp.net解析到IP地址,但免费的花生壳服务器出现了偶尔不稳定的情况。
验证方法可以通过ping域名的方式验证,也可以通过HTTP的方式验证,如图5所示。
在浏览器中输入:http://ht825:raisecomht825@ddns.oray.com/ph/update?hostname=ht825.oicp.net&myip=,即输入用户名和密码、域名服务器、域名,就可以更新网络上的域名及IP最新的映射关系,上文访问域名ht825.oicp.net返回的是本主机入公网的IP地址。
本文的研究重点并不是建立Web服务器,而是在讨论DDNS的应用,做了一个简单网页,作为Web服务器来验证DDNS功能,在远程任意一台可以连入Internet的计算机访问ht825.oicp.net便可以访问所建的Web浏览器。如图6所示。
远程用户在浏览器输入Web服务器域名后,就可以访问移动嵌入式Web服务器,该服务器的主页显示是一个登录页面,输入用户名和密码登录即可。本文所建Web网站仅为远程访问嵌入式Web实验测试,并没有太多的功能,在实际的应用中,应根据嵌人式模块的功能需求来建立嵌入式web页面,比如智能家居嵌入式Web页面、环境监测嵌入式Web页面等。
4、小结
本文将DDNS技术运用于移动嵌入式Web服务器,解决了远程用户访问动态IP移动嵌入式Web服务器的问题,将DDNS模块作为独立模块可加载到任何需要使用Web服务器的嵌入式设备上,具有一定的通用性。物联网技术的快速发展,传感器节点的增多,移动嵌入式Web服务器将有更多的用武之地,DDNS技术将在移动嵌入式Web服务器的搭建中起到重要作用。
下一步研究应重点考虑建立通用的DDNS模块,可以独立配置加载,这样只需要在嵌入式系统整个软件编译的时候,将DDNS模块加载进去即可,增加了DDNS模块的配置性及适用性;同时应当增加更多的DDNS服务器供应商,增强DDNS模块解析功能,保证DDNS模块解析的速度。
核心关注:拓步ERP系统平台是覆盖了众多的业务领域、行业应用,蕴涵了丰富的ERP管理思想,集成了ERP软件业务管理理念,功能涉及供应链、成本、制造、CRM、HR等众多业务领域的管理,全面涵盖了企业关注ERP管理系统的核心领域,是众多中小企业信息化建设首选的ERP管理软件信赖品牌。
转载请注明出处:拓步ERP资讯网http://www.toberp.com/