最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

嵌入式TCP_IP协议栈的简化和优化

来源:动视网 责编:小OO 时间:2025-10-02 09:45:39
文档

嵌入式TCP_IP协议栈的简化和优化

嵌入式TCP/IP协议栈的精简和优化处理摘要:嵌入式TCP/IP协议网络是嵌入式系统的典型应用.其网络协议必须进行适当的简化和优化,以适应在可靠性、成本、功耗等方面的严格要求。结合嵌入式系统的一般特点,分析TCP/IP协议栈,提出在特定应用中嵌入式网络中如何选择TCP/IP协议栈的关键协议,进而提出协议栈的简化和优化方法。关键词:嵌入式网络;TCP/IP:Nagle算法1引言嵌入式系统是一种基于以应用为中心、以计算机技术为基础的专用计算机系统、其具有软件硬件可剪裁的特点,可适用于应用系统对功能
推荐度:
导读嵌入式TCP/IP协议栈的精简和优化处理摘要:嵌入式TCP/IP协议网络是嵌入式系统的典型应用.其网络协议必须进行适当的简化和优化,以适应在可靠性、成本、功耗等方面的严格要求。结合嵌入式系统的一般特点,分析TCP/IP协议栈,提出在特定应用中嵌入式网络中如何选择TCP/IP协议栈的关键协议,进而提出协议栈的简化和优化方法。关键词:嵌入式网络;TCP/IP:Nagle算法1引言嵌入式系统是一种基于以应用为中心、以计算机技术为基础的专用计算机系统、其具有软件硬件可剪裁的特点,可适用于应用系统对功能
嵌入式TCP/IP协议栈的精简和优化处理

摘 要:嵌入式TCP/IP协议网络是嵌入式系统的典型应用.其网络协议必须进行适当的简化和优化,以适应在可靠性、成本、功耗等方面的严格要求。结合嵌入式系统的一般特点,分析TCP/IP协议栈,提出在特定应用中嵌入式网络中如何选择TCP/IP协议栈的关键协议,进而提出协议栈的简化和优化方法。

关键词:嵌入式网络;TCP/IP:Nagle算法

1  引言

嵌入式系统是一种基于以应用为中心、以计算机技术为基础的专用计算机系统、其具有软件硬件可剪裁的特点,可适用于应用系统对功能、可靠性、成本、体积、功耗等严格要求的场合。随着嵌入式系统的广泛使用和对嵌人式系统信息交互要求的迫切。人们提出了利用TCP仃P协议在嵌入式系统中实现嵌入式网络的方案。作为一种TCP/IP协议的嵌人式应用.嵌入式互联网的功能必定属于嵌入式系统的定义范畴之内。所以在实际设计应用中,必须根据特定的嵌入式系统应用需要而决定实现哪些关键协议以及如何优化协议。这成为了构造嵌入式网络的关键所在。

2  嵌入式网络协议栈的精简

TCP/IP是一个协议族。它由几百种网络通信协议组成,这些协议用于组织计算机网络中的数据通信TCP/IP通常被认为是一个四层协议系统。包括链路层、网络层、传输层和应用层的协议。

嵌入式系统的应用环境决定了其数据交互方式简洁、数据流量较小,可靠性要求比较高而TCP/IP协议族涵盖了计算机通信中可能存在的绝大多数情况。比较复杂由于嵌入式系统硬件条件的。在嵌入式网络中实现所有的协议是相当困难的。同时嵌入式互联网络的特点也决定了其实现只需要TCP仃P族的一个子集而不是所有的TCP/IP协议。因而在实际应用中,需要对TCP/IP协议栈进行简化。

2.1  链路层协议的简化

链路层主要实现硬件接口、ARP协议以及RARP协议。主要作用是为其上层协议发送和接收数据包在硬件接El上,根据物理层采用的标准不同。链路层有多种协议可以选择嵌入式网络如果要接入以太网就必须实现IEEE 802.3规定的CSMMCD协议。而实现该协议一般可以采用通用的NICf网络接口控制1芯片。

以太网上数据的传输是采用网络MAC地址来进行识别的,所以要求通信系统必须涵盖具有IP地址到MAC地址转换功能的ARP协议。它包括ARP回应协议和ARP请求协议。若要求其他计算机能与嵌入式系统进行主动通信。那么嵌入式系统就应该实现ARP响应协议:如果嵌入式系统的资源有限。其向其他计算机发送信息可使用以太网广播帧发送资料,那么就可以不用实现ARP请求协议.同时这样也不需维护IP地址到MAC地的映射 RARP协议用于实现从其他服务器中把MAC地址转换成IP地址的功能。而在嵌入式网络中可以把IP地址存储于本地内存中,这样就不要求实现RARP协议。

2.2  网络层协议的简化

网络层主要负责处理数据报在网络中的活动,包括IP协议,ICMP协议和IGMP协议等。IP协议是TCP/IP族协议中的核心协议,它使异构网络之间的通信成

为可能,因此如果嵌入式网络需要跨越不同的网络进行通信就必须要实现IP协议。但是在实际的嵌入式网络应用中,由于传输层协议的应用都比较固定,其交给IP层处理的数据量往往也比较小。同时如果嵌入式系统的远程控制信息不大,嵌入式系统可以不支持IP协议定义的复杂机制(例如分段机制以及各种附加选项),而只使用IP协议提供的最基本的路由功能。

ICMP协议主要用来传递差错报文以及其他需要注意的信息。该协议规定了多种协议类型和代码,实现完整的ICMP协议将耗费不少的系统资源对于普通的嵌入式网络的应用而言。只需在ICMP协议中实现能够测试网络连通情况的Ping应答协议即可

IGMP协议主要用于支持主机和路由器进行组播。嵌入式网络很少需要采用组播的方式进行通信。因此在通常的嵌入式网络设计中可以不考虑实现IGMP协

议。

2.3  传输层协议的简化

传输层主要是为两台主机上的应用程序提供端到端的通信。传输层有两种不相同的传输协议:TCP和UDP TCP在TCP/IP协议族的所有协议里是最复杂的,它为两个具有任意处理速率、使用不可靠IP连接机制的机器之间通信提供了具有流量控制、端到端的可靠数据流服务。像大多数可靠传输协议一样,TCP使用超时重传机制以实现其可靠性。UDP没有保证可靠性的机制,同时也没有其他关卡机制,所以可以实现数据的高速传输。由于UDP的开销很小,对于使用低速处理器的嵌入式系统。采用UDP能得到比采用TCP高出很多的传输速率。因此,微处理器性能有限、实时性要求较高而可靠性要求不高的传输应用就应当使用无连接的UDP协议:而对实时性要求相对不高且要保证数据传输可靠性的应用。则应当使用面向连接、可靠性高的TCP协议。

2.4  应用层协议的简化

应用层为通信进程提供了端到端的、与网络无关的传输服务 不同嵌人式系统对嵌入式网络所采用的应用层协议的要求都不同。系统如果要求采用Email来发送自己的信息。那么就需要SMTP协议来实现传输。如果系统要求可以通过浏览器方式来访问,那么系统就应该实现嵌入式H1tI1P协议。另外,由于设计中对传输层协议也进行了子集划分,因此应用层协议也必须和传输层所实现的协议相适应。例如运输层只实现了UDP协议,没有实现TCP协议,那么在应用层就无法实现与TCP有关的例如HTTP、FTP、SMTP等协议。应用层协议缤纷复杂.嵌入式系统必须根据自己的应用需要和传输层协议实现来选择应用层协议。

3  嵌入式网络协议栈的优化

如上所述.在嵌入式网络中实现TCP/IP协议时,设计者应当结合应用要求和嵌入式系统的特点,合理简化网络协议。简化后的协议栈大大地减少了TCP/IP协议族的复杂性。因而在嵌入式系统中比较容易实现。但是相对嵌入式系统的需求来说,还可以对协议栈进行优化,从而进一步减小嵌入式系统的硬件开销。

3.1  TCP状态机的优化

TCP协议的数据传输可分为三个阶段:建立连接、传输数据和断开连接.其通常采用状态机实现。为了保证状态机状态转换的正确性,在实现中不同状态的相关信息需要进行存储。状态机越复杂。对处理器的存储能力和运算能力的要求就越高。而就嵌入式系统的存储能力、运算能力来说,实现标准的状态机是十分困难的。所以需要对状态机进行优化。在标准状态机中,建立连接有两种方法。即主动打开和被动打开若系统中的上层应用主要是诸如嵌入式Web Server等服务器端程序。状态机中关于主动打开的部分即可省略:同理。若应用为客户端,则服务器端被动打开的实现可省略。断开连接有两种方式.即主动断开和被动断开,从安全性的角度考虑,服务器端主动断开连接的方式将更加安全可靠。

3.2  短报文段传输的避免

TCP协议在传输数据时将对资料进行缓冲处理。其原理描述为:连接建立之后,接收方TCP软件将申请缓冲空间,并在确认报文字段的过程中使用窗El字段通告对方可用的缓冲区大小:若发送方生成数据较为快速。其传送的资料就将会装满整个缓冲区。最终发送方将会收到确认信息,被告知这个接收窗口己经饱和而无法发送后续数据:当接收方取走部分数据而使缓冲区具有可用空间的时候,接收方TCP软件将会使用带有窗口字段赋值的确认报文段去通知发送方:当发送方得知以后,将会继续发送数据段直到接收到零窗口通告。在实际网络通信中,这种机制常常会造成了一系列的短报文段,而传输短报文段将严重地浪费网络带宽,带来了不必要的计算负荷

为了避免出现这种小的数据分组,接收方可以采用以下策略:当通告零窗El之后。接收方必须等到缓冲区可用空间至少达到总空间的一半或最大报文段长度之后,才发送更新后的窗口通告;该策略一般采用推迟确认技术实现,通常TCP发送端中避免短报文段的技术具有自适应能力。将根据互联网的当前性能而决定延迟而并不计算延迟,并使用到达确认来触发其余数据的传输。发送方的策略可用Nagle算法的改进算法来描述:如果TCP有不到一个完整大小的数据包数据要发送,并且如果任何一个过去发送的、不到完整大小的数据包没有得到接收方的确认。那么将不发送这个数据包。使用该改进算法后,由于只关心不到完整大小的数据包的确认情况,所以这个时候若有完整大小的数据包未得到确认,改进算法并不会被调用。发送端也就不会延时。

4  嵌入式网络协议栈层协议处理与实现

4.1  协议栈的硬件接口

在该协议栈中,物理网络硬件的设备驱动可通过一个与BSD相似的网络接口结构来表示。网络接口保存在一个全局链表中,它们可通过结构体中的next指针连接。

4.2  协议栈的网络接口层

以太网接口层实际上是ARP、IP协议层与驱动之间的一个接口层,它对上层(ARP层及IP层)屏蔽RTL8019AS的接收/发送驱动的实现,对下屏蔽数据包类型的不同而采用统一的接收/发送函数接口。

ARP协议可以细分为ARP请求协议和ARP响应协议2种。考虑到通用性,实现系统的主动请求和被动请求,ARP协议必须要实现ARP响应协议和实现ARP请求协议。为了保证系统在对外通信时能够迅速地填充以太帧的目的MAC地址,可以让嵌入式ARP的请求协议在本地建立并维护一个ARP缓存表J,用该表来保存IP地址到MAC地址的映射。

4.3  协议栈的网络层

该协议栈只实现了网络层两个部分:IP模块和ICMP模块。IP是一个无连接协议,主要负责主机间寻址和数据报包设定路由。设计的IP模块只完成IP数据包的接收、发送和转交,由函数IP-Input()和IP—Output()实现。它不处理带IP选项的数据包和IP分片数据包,因为在嵌入式系统中,没有必要容纳巨量数据包,并且IP包重组需要浪费宝贵的RAM空间,系统需要通过高层发送的数据包大小来避免IP包被分片。设计时,考虑到系统的需求,IP模块的分层并不严格,这虽然降低了层与层之间的性,但提高了数据的处理速度,对系统的网络通信并无影响。由于底层网络硬件接口为以太网接口,所以应用网络为以太网,因此虽未实现IP层的分片与重装等功能,但简化TCP/IP协议栈同样可以工作。

4.4  协议栈的传输层

TCP用于向应用层提供一种面向连接的、可靠的字节流服务。对于标准的TCP/IP协议来讲,TCP层会实现滑动窗口协议、流量控制、拥塞控制、TCP计时、重传、TCP连接状态等机制 。但由于设计的协议栈以Atmegal6为处理机,其存储资源相对有限。所以结合系统本身特点,对TCP层的功能进行了简化,未实现其滑动窗口协议、流量控制和拥塞控制机制。设计中,未对TCP有限状态简化,这样有利于协议栈的扩展。系统同样实现了TCP定时重传的机制,但如果应用系统只用于与标准的TCP/IP系统通信,这一功能可以不实现,因为通信对方会实现超时重传。设计的TCP层进行数据传输时,每次只接收和发送一个数据包。接收数据时,IP层将TCP报文段交给TCPInput()函数处理,该函数主要实现TCP连接判断和状态转移。如果TCP报文为网络数据报,函数TCP—Re2ceive()将会被调用,它将数据传给应用程序。应用程序发送数据时,调用函数TCP—Send(),其对数据进行处理后,将数据交给函数TCP-Output(),该函数将数据组装成可以发送TCP报文段后,交给IP层。

基本的TCP处理过程被分割为六个功能函数来实现。其中tcp—input()、tcp—process()及tcp—receive()函数与TCP输入有关,而tcp—write()、tcp—enqueue()及tep—output()则用于TCP输出。时将数据分割为适当大小的TCP段,然后再把这些TCP段放到所属连接的传输队列中。这时,tcp—output()函数会检查此时是不是能够发送数据,也就是判断接收器窗口是否拥有足够大的空间,阻塞窗口是否也足够大,如果条件满足,则使用ip—route()及ip—output—if()函数发送数据。

UDP虽然和TCP共用网络层,但UDP并不向应用层提供可靠性服务。UDP是用于在不同进程间分解信息包的一个简单协议。每一个UDP会话状态都应保存在一个PCB结构体中,UDP PCBs应保存在一个链表中。当一个UDP数据包到达时,还应对这个链表进行匹配检索。

UDP PCB结构体中包含有一个指向UDP PCBs全局链表中下一个PCB的指针。一个UDP会话可由终端IP地址和端口号来定义,这些信息保存在local—ip,dest—ip,local—port以及dest—port字段中。flags字段标识的UDP校验和策略应该用于这个会话,当然,也可以完全关闭UDP校验和,或者使用UDP简化版(UDP Lite)校验和来覆盖数据包的一部分。但如果使用UDP Lite,chksum—len字段,则应指出应该进行校验和计算的数据段的长度。

4.5  协议栈的应用层

而对一个嵌入式Web服务器来说,为了给客户端提供基本的网页信息,它必须支持GET方法;再者为了能够让客户端管理员远程控制此系统,它必须能够接收客户端上传的信息,这里可以采用最常见的POST方法来实现。也就是说,嵌入式Web服务器没有必要支持所有的HTYP方法,只需要处理常用的GET及POST方法即可。使用TCP/IP协议栈提供的服务有两种方法:一是直接调用TCP与UDP模块的函数;二是使用LWIP API函数。对于第一种方法,由于调用要涉及到回调函数问题,而要求编程者具有比较高编程技巧,所以使用最多的是第二种方法。在第二种方法下,LWIP API通常使用两种数据类型:其一是netbuf(描述网络缓存的数据类型),二是netconn(描述网络连接的数据类型)。每一种数据类型均可以C结构体的方式实现。由于应用程序不能直接使用结构体的内部构造,因此,作为替代,API提供了编辑和提取结构体内必要字段的函数。

文档

嵌入式TCP_IP协议栈的简化和优化

嵌入式TCP/IP协议栈的精简和优化处理摘要:嵌入式TCP/IP协议网络是嵌入式系统的典型应用.其网络协议必须进行适当的简化和优化,以适应在可靠性、成本、功耗等方面的严格要求。结合嵌入式系统的一般特点,分析TCP/IP协议栈,提出在特定应用中嵌入式网络中如何选择TCP/IP协议栈的关键协议,进而提出协议栈的简化和优化方法。关键词:嵌入式网络;TCP/IP:Nagle算法1引言嵌入式系统是一种基于以应用为中心、以计算机技术为基础的专用计算机系统、其具有软件硬件可剪裁的特点,可适用于应用系统对功能
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top