嵌入式WEB服务器中TCP/IP协议栈的设计与实现
随着因特网的迅速发展,Web应用越来越广泛。由于Web技术的开放性和独立平台特性,大大降低了软件系统和通信系统的设计、维护工作量,节省了人员培训费用,提高了现场测试和控制设备的管理水平。而嵌入式Web服务器将Web服务器引入到现场测试和控制设备中,在相应的硬件平台和软件系统的支持下,使传统的测试和控制设备转变为具备了以TCP/IP为底层通信协议,Web技术为核心的基于互联网的网络测试和控制设备,有着一般Web服务器所不具有优势。本文就嵌入式Web服务器在通信协议的选择方面做了具体的研究。
1 嵌入式Web服务器的结构分析
嵌入式Web服务器运行的目标系统大多是各类专用设备,内存资源和存储器资源非常有限,它通常作为一种监控、管理手段去控制和配置各种电子设备,实现设备的智能化和信息化。嵌入式Web服务器的应用系统框架如下图所示:
图1 嵌入式Web服务器的应用系统框架
图1虚线框中的是嵌入式Web服务器的框架结构,用户接口库是嵌入式Web服务器和其他设备的控制接口。内嵌于设备的Web服务器可以向任何接入它所在网络的合法用户提供统一的基于浏览器方式的操作和控制界面,浏览器成了设备的前端控制板。而HTTP引擎是Web服务器的核心,Web服务器同Web 浏览器之间的通信是通过HTTP协议进行的,这一通用的、无状态的、面向对象的协议是Web浏览器和Web服务器之间的应用层协议,是建构在TCP/IP 协议基础之上的。因此在嵌入式Web服务器中,TCP/IP协议栈的实现是整个系统的基石。
2 嵌入式Web服务器的TCP/IP协议栈设计
嵌入式系统最先利用轻型工业网络进行互连,比如CAN,PROFIBUS,MODBUS等组织的工业网络能够进行各工业设备间的互访和信息交流,但是这些工业网络协议之间标准不统一,通信半径也比较短,推广的前景不乐观。TCP/IP协议作为一种成熟的网际互联手段和事实标准,毫无疑问成为了嵌入式系统连入互联网的首选协议。但是在嵌入式系统中,硬件资源较少,通常缺乏足够的处理器和存储器资源以支持整个TCP/IP协议族,因此嵌入式的TCP /IP技术与常规的TCP/IP实现有很大的不同。
2.1 嵌入式TCP/IP协议栈概述
嵌入式系统中实现的协议要根据系统自身的特点及功能来设计自己的协议族,因此,在嵌入式Web服务器中并非TCP/IP协议族中所有的协议都要实现,必须针对不同的网络应用对协议栈进行删减,保留其基本功能,以满足网络应用的需要。
考虑到嵌入式Web服务器的硬件处理速度慢并且存储容量相对较小的条件限制,在TCP/IP协议栈中主要能够实现ARP,IP,ICMP,TCP协议即可。具体分析如下:以太网数据的传输是采用MAC地址来识别的,而ARP协议提供IP地址和数据链路层使用的MAC地址之间的转换功能,为了保证系统在以太网的通信,首先要实现ARP协议;由于嵌入式Web服务器要能在Internet上通信,在网络层一定要实现IP协议,还要实现能报告数据传送差错等情况的ICMP协议;同时,Web服务器同Web浏览器之间的通信是通过HTTP协议进行的,在传输层采用TCP协议,能保证可靠的数据传输,进而实现其基础之上的HTTP协议。
嵌入式TCP/IP协议栈结构如图2所示。
图2 嵌入式TCP/IP协议栈
2.2 嵌入式TCP/IP协议栈数据处理流程
嵌入式TCP/IP协议栈处理数据流程如图3所示。
系统初始化后,进入主程序循环部分。主程序循环包括两大部分:对接收到的以太网数据帧进行解包和对欲发送的数据进行封装并发送。对接收到的以太网数据帧进行解包,供应用程序使用;对欲发送的数据进行打包,将数据以以太网数据帧的格式发送出去,使采用TCP/IP协议的以太网内所有计算机能收到此数据帧。
详细过程为:先检查是否收到以太网数据帧,若己收到以太网数据帧,则检测以太网数据帧首部,判断所载数据类型,然后对接收到的数据进行相应处理:若接收到的以太网数据帧中包含ARP数据,则调用ARP处理程序;若接收到的以太网数据帧中包含IP数据报,则针对其是否为ICMP、TCP协议格式分别进行相应的解包处理。若不包含IP数据报,则丢弃此数据帧。
若未收到以太网数据帧,此时若有数据要发送,则对数据进行打包,将数据以以太网数据帧的格式发送出去。若无数据要发送,则回到主程序循环。
图3 嵌入式TCP/IP协议栈主流程图
3 嵌入式Web服务器中TCP/IP栈的实现
3.1 ARP协议实现
嵌入式Web服务器中ARP协议主要功能是进行IP地址与以太网地址之间的转换,当系统收到发送数据请求时,协议栈就需要返回IP数据报,所有的 IP数据报都要进一步封装成以太网帧才能发送给网络控制器,而所加的以太网首部中就包含了由ARP协议解析目的IP地址所得来的对应
- Linux嵌入式系统开发平台选型探讨(11-09)
- 基于Winodws CE的嵌入式网络监控系统的设计与实现(03-05)
- 嵌入式系统实时性的问题(06-21)
- 嵌入式实时系统中的优先级反转问题(06-10)
- 嵌入式Linux系统中MMC卡驱动管理技术研究(06-10)
- FPGA的DSP性能揭秘(06-16)