用W5500构成的低成本嵌入式Web服务
2016-08-31茅胜荣肖家文乔东海
茅胜荣,肖家文,乔东海
(苏州大学 电子信息学院,苏州215006)
茅胜荣,肖家文,乔东海
(苏州大学 电子信息学院,苏州215006)
在HTML5的时代下,随着Web服务器的数量与日俱增,B/S(Browser/Server)模型得到了更加广泛的应用。在嵌入式领域,客户端可以实现远程监控服务器的功能,这不仅需要服务器解析用户请求,而且需要对用户指令作出快速准确的响应。本文在OSI互联参考模型的基础上,深入研究HTTP通信机制,抛弃了现有复杂的Web服务器框架,自主搭建了一个在单片机上运行的Web服务器,它能即时响应HTML网页、JavaScript脚本和CSS样式的请求,且具有占用资源少、运行效率高、安全性好、低功耗、低成本的特点。
Web服务器;W5500;嵌入式以太网;DHCP协议;HTTP协议
引 言
在PC上搭建Web服务器的主流做法是LAMP(Linux+Apache+MySQL+PHP)或者LNMP(Linux+Nginx+MySQL+PHP),这两种方式都需要底层操作系统的支持。而在一些点对点通信的物联网情境中,如果用户想通过浏览器或者App向节点发送请求,那么前面两种框架就显得冗余、复杂且成本高。本文通过对HTTP通信机制的研究,在MSP430单片机和W5500以太网芯片上搭建了一个精简、安全的Web服务器。
1 W5500芯片介绍
传统的以太网芯片例如ENC28J60、DM9000,仅封装了PHY(物理层)和MAC(介质访问控制层),从网络层开始都需要软件实现,如LwIP协议栈。软件协议栈占用的系统资源是非常可观的,如果运行在低性能的处理器上,处理器将无法及时响应用户的请求。而本文采用的W5500芯片不仅集成了PHY和MAC层,内部的逻辑门电路还实现了TCP/IP协议栈里的传输层和网络层,如TCP、UDP、ICMP、IPv4、IGMP等协议[1],这样主控芯片只需要承担TCP/IP应用层控制信息的逻辑任务,大大提高了系统效率。此外硬件TCP/IP的不可攻击性,保证了在此基础上搭建的Web服务器的安全性。W5500对外接口为通用的80 MHz高速SPI,但是高速信号在受电磁串扰和长信号线的影响下会失真,所以本文采用具有稳定波形的10 MHz同步时钟。图1展示了W5500内部结构图。
图1 W5500内部结构图
1.1PHY
W5500的物理层支持全/半双工的10BaseT和100BaseTX的标准,支持自动协商,不支持Auto MDI/MDIX(自动极性变换),因此用户需要使用直通线与交换机或路由器连接,使用交叉线与终端设备相连接,如果对方设备支持自动极性变换,则可选用任何一种网线。配置W5500的PHYCFGR寄存器来设置网卡的工作模式,在默认情况下,W5500执行100BaseTX标准的全双工通信。
1.2MAC
数据链路层实际上由两个独立的部分组成:介质存取控制(MAC)和逻辑链路控制(LLC)。其中MAC确保信息跨链路的可靠传输、同步数据传输、识别错误和控制数据流方向。以太网数据帧必须获取接收方的MAC地址才能成功发送,通过读/写W5500的SHAR寄存器,可以获取/修改MAC地址信息。W5500内部集成MAC,能够自动实现以太网数据帧的解析和打包并以广播的方式发送帧,数据链路层便能在多个网络节点间传送数据。
1.3网络层
网络层负责在源和终点之间建立连接、网络寻址、流量控制、错误检查等。相同MAC标准的不同网段之间的数据传输一般只涉及到数据链路层,而不同的MAC标准之间的数据传输则涉及到网络层。W5500内部集成IPv4,其中GAR、SUBR、SIPR寄存器分别用来配置网关、子网掩码和本地IP地址的信息。
1.4传输层
传输层向高层提供可靠的端到端网络数据流服务,包括流控、多路传输、虚电路管理以及差错校验和恢复。数据包中必须包含端口信息才能实现端到端的通信,典型的传输层协议有UDP和TCP协议。UDP是最简单的传输层协议,绑定端口号便能发送请求,而TCP需要经过三次握手后才能建立可靠稳定的连接。W5500内部集成了这两种传输层协议,可以通过配置Sn_MR寄存器来进行选择。不同的上层应用需要绑定不同的端口号,配置W5500的Sn_PORT和Sn_DPORT寄存器可以分别指定源与目标的端口号。
2 系统硬件电路
基于W5500的Web服务器的硬件电路图略——编者注。为了降低系统功耗,本文采用低功耗主控芯片MSP430。RJ45插座需要连接以太网变压器,但是实际采用的HR911105A已经将两者封装在一起。W5500与MSP430采用四线制的SPI通信,同步时钟速率为10 MHz。
3 动态IP地址分配
为了实现即插即用,物联网中每个节点的IP地址是动态分配的,即节点需要实现DHCP协议的功能。DHCP是建立在UDP协议之上的应用层协议,客户端与服务器的端口号分别是68和67,协议的具体细节参考RCF2131[2]。W5500作为DHCP的客户端,向DHCP服务器发出请求,请求的过程主要分4个阶段:发现阶段、提供阶段、选择阶段和确认阶段。图2为W5500上电后通过DHCP协议获取IP地址的软件流程图。
图2 DHCP软件流程图
W5500广播发送DHCPDISCOVER消息(IP地址租赁申请),DHCP服务器收到后广播回应DHCPOFFER消息(IP地址租赁提供),W5500接收后向该服务器发送DHCPREQUEST消息以确认分配到的IP地址,最后DHCP服务器将会发送DHCPACK消息来通知客户端可以使用该IP地址。
4 Web服务器搭建
Web服务器是遵循HTTP协议标准的上层应用软件,传输层采用TCP协议,可靠性高,通信端口为80。
4.1报文格式
HTTP消息是由客户端请求和服务器响应组成的,图3为HTTP报文的格式。其中,请求方法主要有两种:GET和POST。GET是向服务器索取数据的一种请求,POST是向服务器提交数据的一种请求,提交的数据位于请求头后面的数据实体中。报文中具体字段的含义与取值参考RFC2616[3]。
4.2HTTP Server软件流程
HTTP Server软件流程略——编者注。主程序首先为HTTP Server分配socket,socket数越多,服务器处理并发情况的能力越强,W5500最多支持8个socket同时运行。而后服务器端底层的操作(如软件重启、关看门狗等)将以回调函数的形式注册在HTTP Server中。请求访问的网页数据以字符串的形式保存在Flash中,并把地址注册至服务器。启动某一个HTTP Server进程,监听客户端对80端口的TCP连接请求,经过“三次握手”,服务器与客户端建立可靠的端到端连接。当服务器接收到来自客户端的数据请求后,会根据URI地址信息判断请求内容的类型,并解析出其请求方式,主要可以分为GET方式的CGI请求、POST方式的CGI请求和GET方式的其他请求。
服务器若收到GET方式的CGI请求,则返回一段包含服务器当前的信息的JavaScript代码。若收到GET方式的普通请求,则返回客户端请求的文本内容。若收到POST方式的CGI请求,其请求中通常包含客户端提交的表单数据,服务器须接收、解析并保存用户提交的信息。
4.3网页设计
在网页三要素中,HTML用来构建网页的框架,CSS样式表在框架的基础上丰富网页的表现力,JavaScript脚本让整个网页实现了动态的效果[4]。本文设计的网页能够动态显示W5500服务器的基本信息,并能够对服务器进行一些简单的配置。在index.html中,为body注册onload监听函数,指向getNetinfo()函数:"
"。getNetinfo函数创建一个AJAX(Asynchronous JavaScript And XML)对象,设置好该对象的监听事件以及监听函数,然后以GET的方式发送请求:"oUpdate=new AJAX('get_netinfo.cgi', function (responseText))”,"oUpdate.doGet();"。由function去执行AJAX对象接收到的JavaScript脚本:"eval(responseText) "。AJAX能够让阻塞UI的任务在后台运行,提高了网页浏览的流畅度。Mao Shengrong,Xiao Jiawen,Qiao Donghai
(School of Electronic Information,Soochow University,Suzhou 215006,China)
In the era of HTML5,the B/S(Browser/Server) model has been applied in many applications with the number of Web server increasing.In the embedded field,if the client wants to realize the function of the remote monitoring server,the Web server not only need to parse the user requests,but also need to make a quick and accurate response to the commands.Based on the OSI reference model and the HTTP communication,a Web server is established,which can run in a microcontroller,without any complex web server framework.It can give a real-time response to the traditional requests like HTML,JavaScript and CSS,and has the characteristics such as low resource consumption,high efficiency,good security,low power consumption and low cost.
Web server;W5500;embedded Ethernet;DHCP protocol;HTTP protocol
图3 HTTP报文格式
TP393.1
A