嵌入式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 协议 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所采用的应用层协议要求不同,而且应用层的协议还要和链路层实现的协议相对应。因此,系统要根据自己的需要和链路层协议的实现来选择和简化应用层的协议。 传输层主要为两台主机上的应用程序提供端到端的通信。传输层有两种不同的传输协议:面向连接的TCP(传输控制协议>和无连接的UDP(用户数据报协议>。TCP是面向接入即传输前必须先通过“三重握手”在主机间建立TCP接入,它所传数据流采用了顺序号和应答措施,可以发现数据的丢失、段的失序和对传输错误的排除,所以TCP协议提供的是数据流的可靠传输。但相对于UDP,它的可靠性是以复杂性为代价的,需要复杂庞大的程序来实现。UDP提供的是无连接的不可靠的服务,可能出现数据包的丢失,重复和连接失败等错误。但是正因没有接入机制,它可以实现高速发送,充分发挥物理传输设备的速度。UDP适合用在通信介质十分可靠的情况,例如以太网等。 网络层处理分组在网络中的活动。其协议包括IP协议<网际协议)、ARP协议<地址解读协议)、ICMP协议