嵌入式TCP/IP协议的分析与研究摘要:嵌入式TCP/IP协议不同于应用在PC机上的TCP/IP协议,Internet上面的各种通信协议对于计算机存储器、运算速度等的要求比较高,而嵌入式系统中大量存在的是8位和16位MCU,支持TCP/IP等Internet协议将占用大量系统资源,或根本不可能。
为了既实现相应的功能又节省系统资源,需要对协议进行有针对性的模块化裁剪,在单片机上嵌入TCP/IP协议簇的一个子集。
文章根据各种MCU自身的特性,实现TCP/IP协议的方法和实现嵌入式Internet的方案及TCP协议的机制裁减方法,同时用设计实例证明了嵌入式TCP/IP的可行性。
关键词:嵌入式TCP/IP;嵌入式Internet;TCP协议的机制裁减1绪论在Internet日益普及,信息共享程度不断提高的今天,人们的工作和生活方式发生了根本性的变化。
单片机或微控制器(MCU>已经在家庭和工业的各个领域得到了应用,通称嵌入式系统。
但目前大多数嵌入式系统还处于单独应用的阶段,一般都是孤立于Internet以外。
如果嵌入式系统能够连接到Internet上面,则可以方便、低廉地将信息传送到几乎世界上的任何一个地方。
于是嵌入式Internet 技术就应运而生。
将嵌入式系统与Internet结合起来的想法其实很早以前就有了,主要的困难在于,Internet上面的各种通信协议对于计算机存储器、运算速度等的要求比较高,而嵌入式系统中大量存在的是8位和16位MCU,支持TCP/IP等Internet协议将占用大量系统资源,或根本不可能。
为了既实现相应的功能又节省系统资源,需要对协议进行有针对性的模块化裁剪,在单片机上嵌入TCP/IP协议簇的一个子集。
2TCP/IP协议分析TCP/IP通常被认为是一个四层协议系统, 分别为:链路层、网络层、传输层、应用层,每一层都有相应的协议集合来实现不同的功能,其层次结构和主要的网络协议如图 3.1所示。
2.1链路层协议分析链路层的主要作用是为上层协议发送和接收数据包。
链路层中重点分析的为ARP协议。
以太网上数据报的传输是采用网络的MAC地址来进行识别的,这就要求系统有实现IP地址到MAC地址的转换的功能,即ARP(地址解读>协议。
ARP协议可以分成ARP请求协议和ARP响应协议。
系统要同其它计算机通信,就必须要实现ARP响应协议。
ARP请求协议建立了一个IP地址到MAC地址的映射。
如果嵌入式系统的资源有限,可使用以太网广播帧发送数据分组,也可以把数据分组发往固定的路由器,由路由器转发数据分组。
RARP(逆地址解读协议>主要用于无盘工作站中,嵌入式Internet中无须实现此协议。
图2.1 TCP/IP层次结构图2.2网络层协议分析网络层处理分组在网络中的活动。
其协议包括IP协议<网际协议)、ICMP 协议<Internet互联网控制报文协议)以及IGMP协议<Internet组管理协议)。
IP协议是TCP/IP族的核心协议,它使异构网络之间的通信成为可能。
因此,如果嵌入式Internet,需要跨越不同的网络进行通信就必须要实现IP协议。
所以IP协议需要完整实现。
要特别注意IP包最大可以为65k,可以分段传输,而在嵌入式系统中根本无法容纳如此大的数据包,因此一般不支持分段。
单片机一般采用发送小数据包的方式,以避免分段。
ICMP协议主要用来传递差错报文以及其他需要注意的信息。
我们通常使用的应用程序Ping就是采用ICMP协议来测试网络的连通情况。
对于普通的嵌入式Internet的应用而言,在ICMP协议中能够测试网络的连通情况即可,因此只需实现ICMP中类型号为0、代码为0的Ping应答协议即可。
通常嵌入式Internet不考虑ICMP协议。
2.3 传输层协议分析传输层主要为两台主机上的应用程序提供端到端的通信。
传输层有两种不同的传输协议:面向连接的TCP(传输控制协议>和无连接的UDP(用户数据报协议>。
TCP是一种面向连接的协议,它提供高可靠性服务。
TCP在传输前必须先通过“三重握手”在主机间建立TCP接入,它所传数据流采用了顺序号和应答措施,可以发现数据的丢失、段的失序和对传输错误的排除,所以TCP协议提供的是数据流的可靠传输。
但相对于UDP,它的可靠性是以复杂性为代价的,需要复杂庞大的程序来实现。
UDP提供的是无连接的不可靠的服务,可能出现数据包的丢失、重复和连接失败等错误。
但是正因为没有保证可靠性的机制,它可以实现高速发送,充分发挥物理传输设备的速度。
UDP适合用在通信介质十分可靠的情况,例如以太网等。
传输层有两个可选择的协议,所以就应该考虑该用那个协议传输数据报。
下面用例子来说明:对楼宇散布各处的温度和湿度传感器的每秒一次地集中监控来说,选用UDP或TCP都关系不大;而对独立的、又不太重要的传感器监控,选用UDP也够了。
而进入数据库的传感器监控结果,因其可靠性要求,则需用TCP。
另外,Web和Email也采用的是TCP。
2.4应用层协议分析应用层协议是TCP/IP协议族中最大的一个子集,其种类非常繁多。
最常用的有Telnet<远程登录协议)、FTP<文件传输协)、SMTP<简单邮件传送协议)、HTTP<超文本传输协议)等。
在设计中用到哪个应用程序,主要是根据嵌入式系统的用途来确定。
如果系统要求采用Email来发送信息,就需要针对SMTP协议来实现;如果系统要求通过浏览器的方式来访问,那么系统就应该实现嵌入式Web Server的相应协议。
3嵌入式TCP/IP协议概述传输控制协议/网间协议 <TCP/IP)是构建Internet的标准协议,它最早是在PC机上实现的。
由于嵌入式系统与PC机的差别很大,因此在嵌入式系统中实现TCP/IP协议与PC机操作系统中的实现有很大的不同。
由于嵌入式系统没有一个多任务的操作系统,而且又是直接面对硬件,所以嵌入式TCP/IP协议在应用层上要求简单。
同时,不同嵌入式系统对嵌入式Internet所采用的应用层协议要求不同,而且应用层的协议还要和链路层实现的协议相对应。
因此,系统要根据自己的需要和链路层协议的实现来选择和简化应用层的协议。
传输层主要为两台主机上的应用程序提供端到端的通信。
传输层有两种不同的传输协议:面向连接的TCP(传输控制协议>和无连接的UDP(用户数据报协议>。
TCP是面向接入即传输前必须先通过“三重握手”在主机间建立TCP接入,它所传数据流采用了顺序号和应答措施,可以发现数据的丢失、段的失序和对传输错误的排除,所以TCP协议提供的是数据流的可靠传输。
但相对于UDP,它的可靠性是以复杂性为代价的,需要复杂庞大的程序来实现。
UDP提供的是无连接的不可靠的服务,可能出现数据包的丢失,重复和连接失败等错误。
但是正因没有接入机制,它可以实现高速发送,充分发挥物理传输设备的速度。
UDP适合用在通信介质十分可靠的情况,例如以太网等。
网络层处理分组在网络中的活动。
其协议包括IP协议<网际协议)、ARP协议<地址解读协议)、ICMP协议<Internet互联网控制报文协议)以及IGMP协议<Internet组管理协议)。
IP协议是TCP/IP族的核心协议,它使异构网络之间的通信成为可能。
因此如果嵌入式Internet,需要跨越不同的网络进行通信就必须要实现IP协议。
ARP协议实现将逻辑IP地址映射为物理地址。
ICMP协议主要用来传递差错报文以及其他需要注意的信息。
我们通常使用的应用程序PING就是采用ICMP协议来测试网络的连通情况。
对于普通的嵌入式Internet的应用而言,在ICMP协议中能够测试网络的连通情况即可,因此只需实现ICMP中类型号为0、代码为0的PING应答协议即可。
通常嵌入式Internet不考虑IGMP。
链路层主要作用是为其上层协议发送和接收数据包,根据物理层的不同,主要协议有以太网、令牌环网、FDDI<光纤分布式数据接口)及RS232串行线路协议等。
可由选择的网络接口芯片完成。
4嵌入式Internet技术原理及方案嵌入式Internet技术,也就是将嵌入式系统与Internet结合起来实现系统网络化,涉及的两个关键问题即传送信息的媒质和采用的协议。
与Internet相联接的途径可以是以太网或者电话线等媒介。
而在大多数工作场地都配有以太网,电子装置通过集线器<HUB)可以随时插接。
在家庭中,也有电力线和电话线等载体可以利用。
如果是与局域网连接,只需要为该装置设置硬的或软的IP地址就可。
如果是利用电话线路,可以使用电话用户的ID。
现在实现嵌入式电子装置的访问连通,几乎不成问题。
所以嵌入式Internet技术的关键问题在于如何在MCU中实现Internet上被广泛使用的TCP/IP通信协议。
但是TCP/IP通信协议对于计算机存储器、运算速度等的要求比较高,普通单片机无法达到其要求。
4.1实现TCP/IP协议的方法4.1.1高档MCU芯片采用ARM内核的系列处理器或者386EX等高档MCU,其运算速度快,性能高,在芯片上可以运行实时操作系统(RTOS>,同时也可以嵌入完整的TCP/IP 协议。
4.1.2 32位MCU芯片32位机也有足够的资源和能力运行TCP/IP协议和一些嵌入式操作系统。
所以原则上讲,实现思路和高档机一样。
4.1.3 8/16位MCU芯片由于8位和16位MCU的处理能力和存储问题,要实现TCP/IP协议是比较困难的。
因此要根据其特点,对TCP/IP协议进行简化,保留其最基本的东西。
同时,上层协议可不用或者简单实现。
即将原来的TCP/IP协议转变成嵌入式TCP/IP协议,我们随后会具体介绍。
4.2 实现嵌入式Internet的方案4.2.1通过专用的WEB服务器实现在现有的嵌入式系统中大量使用的是8位或16位MCU,并不要求每个设备都直接连到Internet上,用户可以通过Internet接近设备,然后再用轻量级网络扩展到多个设备上。
如电力线、RS-485、RS-232、I2C等。
专用WEB服务器作为子网设备路由器来转换和实现嵌入式系统与外部网的通信。
比如EmWare公司专门为嵌入式微控制器设备设计的网络服务器。
4.2.2通过专用的嵌入式网关(emgateway>相联即嵌入式系统使用轻网络通讯技术与专用嵌入式网关连接,运行TCP/IP协议,并提供TCP/IP到用户的轻型网络的连接和路由功能。
4.2.3把标准网络技术一直扩展到嵌入式设备由嵌入式系统自身实现WEB服务器功能,每个设备都可与Internet相连。
这种方法是目前最佳的解决方案,也是未来电器、设备的发展方向。