断开连接分为主动断开和被动断开,从安全性的角度考虑,本设计仅实现主动断开连接。当服务器发送完数据时,向客户机发送关闭连接请求。
通过以上分析,根据特定的应用不失一般性的裁减掉复杂和冗余的机制,除去标准状态机中的客户端部分,简化连接的建立和关闭过程,就得到如图2所示的简化的TCP状态机模型。
3.4.3 简化的窗口机制
标准的TCP协议使用慢启动的滑动窗口机制[5],它允许发送方在等待一个确认之前发送多个窗口。其确认是一种批量的确认,处理器要对多个数据报连续传输进行维护和处理,困难较大。
而滑动窗口的一个极限情况,是只使用单个窗口,这就变成了一种简单确认的处理方法。只是对于单个数据报的发送和确认,虽然节约了系统的资源,也使维护更加方便,但是却降低了效率。
系统采用了一个折中的办法,适当调整窗口的大小,限制连续发送报文段的个数来实现了一个简化的窗口机制,如图3所示。在这里,设置窗口大小(snd_wnd)为4个最大报文段长度(MSS),可以适当提高数据传输效率。
4 协议栈的移植和测试
在完成双协议栈的设计调试后,将此协议栈移植到基于ARM7TDMI核的AT91M40800开发板上,使用其中内嵌的10Mbps以太网控制器 RTL8019AS作为网络接口。在该平台上实现了一个简单的Web Server。通过构建提供IPv4地址和IPv6地址访问的网络拓扑结构进行测试,该双协议栈运行稳定、正常。
www.55dianzi.com
同时,在相同环境下将此协议栈与开源的协议栈LwIP作了吞吐率性能方面的比较,如图4所示。可知,本协议栈有较好的吞吐率,在连接数达到3条以后,平均吞吐率达到了460kB/s。
5 结语
本文主要介绍了一种嵌入式双协议栈的实现,实践证明它是一个符合TCP/IP协议规范的,高性能,低开销,可移植的IPv4/IPv6双协议栈。本协议栈仅实现了基本的IPv4和IPv6通信功能,还有需多需要改进和增强的地方,扩展IPv6的移动功能是此协议栈下一步的研究重点。
本文作者创新点:嵌入式双协议栈的实现独立于操作系统内核和硬件平台。设计了具有较高处理效率的缓冲区管理机制,对IPv6功能模块进行了裁减,对TCP模块中的运行状态机和滑动窗口机制进行了简化。
参考文献:
[1] OKABEN. Mininum Requirement of IPv6 for Low Cost Network Appliance[EB/OL]. INTERNET- DRAFT,2001-2002.
[2]张杰.一种Web服务中IPv4/IPv6兼容的实现方案[J].微计算机信息,2006,10-3:31-72.
[3] CONTA A, DEERING S.Internet Control Message Protocol(ICMPv6),RFC 2463[S].Internet Engineering Task Force,1998.
[4] NARTENT. Neighbor Discovery for IP Version 6 (IPv6), RFC2461[S].1998.
[5] STEVENSWR.TCP/IP详解(卷1:协议)[M].范建华,胥光辉,张涛,等译.北京:机械工业出版社,1999.209-224.
本文关键字:嵌入式 嵌入式系统-技术,单片机-工控设备 - 嵌入式系统-技术