2007-08-29嵌入式系统中TCP/IP协议的精简与实现
发布时间:2008/8/20 0:00:00 访问次数:519
1、引言
嵌入式网络系统就是在嵌入式设备上实现了网络互联功能的系统,一般要求嵌入式设备在软件上支持tcp/ip协议栈,实现有关的以太网通信协议。如何实现tcp/ip协议是嵌入式网络系统的关键技术之一,在嵌入式系统中应用tcp/ip协议的关键是,如何设计出精简、高效的tcp/ip协议子集,以此来减少对系统资源的占用。
目前使用广泛的tcp/ip协议栈有lwip(light weight)、uip、linux ip等,这些协议栈具有一定的通用性,包含的协议内容比较全,同时也比较复杂。具体在移植到应用系统的时候要考虑的问题较多,各个库文件和全局变量相互交叉引用,若要针对特定系统进行精简,则牵一发而动全身,尤其是存储器的管理及上层协议与底层网络驱动的接口是两个最大的移植难题。
为了能对tcp/ip协议有较深的了解,又利于后期进行深入研究,我们在实现一具体的internet网络报警系统时,进行自主的嵌入式tcp/ip协议开发。下文所介绍的tcp/ip协议系统由于精简而利于实现,且无需进行内存管理,适合传送数据量不大的嵌入式系统。在实现时,只要根据相应的数据帧格式,在各层完成相应的功能即可。非常适合研究学习之用,为嵌入式网络系统的开发提供一个较为可行且简单的思路。
2、协议的分析与选择
众所周知,tcp/ip是一个协议族,是几百种网络协议的集合。通用计算机系统有足够的资源支持通信协议在内核实现,但是嵌入式系统则不同,因为其cpu处理能力和系统存储能力都受到成本限制,充分利用资源、提高系统性价比是开发嵌入式应用的根本特点。所以要对tcp/ip协议进行精简以适应嵌入式系统。
下面我们以实际的internet网络报警系统为例,设计一个较为精简的tcp/ip协议子系统。此系统采用32位arm结构的三星s3c440bx处理器,加smsc公司的以太网控制芯片lan91c113,以及另外一些外围芯片组成。此系统要求经internet传送一些现场采集的报警数据到远程站点,要求实时性好、传输速度快,但每次传输的数据量很少,只是简单的报警信息。根据这些要求,再经详细分析tcp/ip各协议层实现的功能,精简出的协议子集如图1:
层次 |
需要实现的协议 |
应用层 |
无 |
传输层 |
udp |
网络层 |
ip、icmp中的ping响应协议 |
链路层 |
arp应答协议 |
图1 精简的tcp/ip协议子集
首先在链路层上,由于采用以太网的接入方式,系统必须要实现ieee802.3所规定的cdma/cd协议。cdma/cd协议不需用户实现,此协议只要采用通用的以太网接口芯片就可支持。其次,为了保证系统在以太网中的通信,系统还需实现arp应答协议,该协议用于将ip地址映射成以太网mac地址。arp的执行依靠维持一张表来完成ip地址和mac的地址的映射。
在网络层,由于系统要求能够在internet进行通信,因此系统要实现ip协议。ip层的代码有两个功能:验证到来的ip报文报头的正确性,并且对tcp和icmp报文实行分流。因为不考虑ip的分片和重组,所以 ip层的代码非常的精简。为了能够测试系统与网络的连接,系统需要实现icmp协议中的ping应答协议,ping应答协议主要是检查网络是否连通
在传输层, tcp为两台主机提供面向连接的、可靠的、无重复的双向数据流传输服务,tcp协议设计了严格的3次建立连接握手过程、4次关闭连接握手过程,这些过程的实现对系统资源的耗费非常大。而udp的实现比较简单,它在某些嵌入式internet的应用场合可以很好地应用。考虑到系统的简化及速度的要求,采用了udp协议,为了确保udp数据的到达,在应用程序中采用了重复发送、回复确认的方式来保证数据的正确性。
由于本嵌入式系统无http、ftp等应用,所以应用层中的协议无需实现。
3、协议的实现
本系统由于协议比较精简,只保留了必须使用的一些协议,所以实现过程相对简单。实现过程中的一个总目标是系统开销要少,每一层之
1、引言
嵌入式网络系统就是在嵌入式设备上实现了网络互联功能的系统,一般要求嵌入式设备在软件上支持tcp/ip协议栈,实现有关的以太网通信协议。如何实现tcp/ip协议是嵌入式网络系统的关键技术之一,在嵌入式系统中应用tcp/ip协议的关键是,如何设计出精简、高效的tcp/ip协议子集,以此来减少对系统资源的占用。
目前使用广泛的tcp/ip协议栈有lwip(light weight)、uip、linux ip等,这些协议栈具有一定的通用性,包含的协议内容比较全,同时也比较复杂。具体在移植到应用系统的时候要考虑的问题较多,各个库文件和全局变量相互交叉引用,若要针对特定系统进行精简,则牵一发而动全身,尤其是存储器的管理及上层协议与底层网络驱动的接口是两个最大的移植难题。
为了能对tcp/ip协议有较深的了解,又利于后期进行深入研究,我们在实现一具体的internet网络报警系统时,进行自主的嵌入式tcp/ip协议开发。下文所介绍的tcp/ip协议系统由于精简而利于实现,且无需进行内存管理,适合传送数据量不大的嵌入式系统。在实现时,只要根据相应的数据帧格式,在各层完成相应的功能即可。非常适合研究学习之用,为嵌入式网络系统的开发提供一个较为可行且简单的思路。
2、协议的分析与选择
众所周知,tcp/ip是一个协议族,是几百种网络协议的集合。通用计算机系统有足够的资源支持通信协议在内核实现,但是嵌入式系统则不同,因为其cpu处理能力和系统存储能力都受到成本限制,充分利用资源、提高系统性价比是开发嵌入式应用的根本特点。所以要对tcp/ip协议进行精简以适应嵌入式系统。
下面我们以实际的internet网络报警系统为例,设计一个较为精简的tcp/ip协议子系统。此系统采用32位arm结构的三星s3c440bx处理器,加smsc公司的以太网控制芯片lan91c113,以及另外一些外围芯片组成。此系统要求经internet传送一些现场采集的报警数据到远程站点,要求实时性好、传输速度快,但每次传输的数据量很少,只是简单的报警信息。根据这些要求,再经详细分析tcp/ip各协议层实现的功能,精简出的协议子集如图1:
层次 |
需要实现的协议 |
应用层 |
无 |
传输层 |
udp |
网络层 |
ip、icmp中的ping响应协议 |
链路层 |
arp应答协议 |
图1 精简的tcp/ip协议子集
首先在链路层上,由于采用以太网的接入方式,系统必须要实现ieee802.3所规定的cdma/cd协议。cdma/cd协议不需用户实现,此协议只要采用通用的以太网接口芯片就可支持。其次,为了保证系统在以太网中的通信,系统还需实现arp应答协议,该协议用于将ip地址映射成以太网mac地址。arp的执行依靠维持一张表来完成ip地址和mac的地址的映射。
在网络层,由于系统要求能够在internet进行通信,因此系统要实现ip协议。ip层的代码有两个功能:验证到来的ip报文报头的正确性,并且对tcp和icmp报文实行分流。因为不考虑ip的分片和重组,所以 ip层的代码非常的精简。为了能够测试系统与网络的连接,系统需要实现icmp协议中的ping应答协议,ping应答协议主要是检查网络是否连通
在传输层, tcp为两台主机提供面向连接的、可靠的、无重复的双向数据流传输服务,tcp协议设计了严格的3次建立连接握手过程、4次关闭连接握手过程,这些过程的实现对系统资源的耗费非常大。而udp的实现比较简单,它在某些嵌入式internet的应用场合可以很好地应用。考虑到系统的简化及速度的要求,采用了udp协议,为了确保udp数据的到达,在应用程序中采用了重复发送、回复确认的方式来保证数据的正确性。
由于本嵌入式系统无http、ftp等应用,所以应用层中的协议无需实现。
3、协议的实现
本系统由于协议比较精简,只保留了必须使用的一些协议,所以实现过程相对简单。实现过程中的一个总目标是系统开销要少,每一层之