IP协议栈简化实现

上传人:冷*** 文档编号:23870239 上传时间:2021-06-12 格式:DOCX 页数:5 大小:16.82KB
返回 下载 相关 举报
IP协议栈简化实现_第1页
第1页 / 共5页
IP协议栈简化实现_第2页
第2页 / 共5页
IP协议栈简化实现_第3页
第3页 / 共5页
点击查看更多>>
资源描述
基于ARM核的嵌入式TCP/IP协议栈简化实现 摘 要:结合具体的工程实例,通过分析嵌入式TCP/IP协议栈的设计原理,研究并简化了嵌入式TCP/IP协议栈的通信模型、体系结构和实现方案。开发出基于SAMSUNG S3C44B0X微处理器和RTL8019AS以太网物理层接口的低功耗网络控制器,并通过Socket编程在嵌入式CLinux系统上实现了网络通信,达到系统设计目标。 下载论文网关键词:嵌入式;TCP/IP;套接字;ARM中图法分类号:TP39304 文献标识码:A 文章编号:1001-3695(2006)10-0251-03Simplified Realization of Embedded TCP/IP Protocol Stack Based on ARM CoreXU Hai?jun1,3,LIU Jin?gang1,2,3,WANG Yi?hua1,3(1.United Research Institute of Computer Sciences, Beijing 100037, China;2. Institute of Computing Technology, Chinese Academy of Sciences, Beijing 100080, China;3.Capital Normal University, Beijing 100037, China)Abstract:Joining an engineering example,by analysing Embedded TCP/IP protocol stack designing principle, research and simplify the protocol stacks communication model,architecture,scheme. And then, this paper gives a low consuming circuit of network communication based on the microprocessor of Samsung S3C44B0X,which takes RTL8019AS as physical layer interface. Finally successfully porting the embedded CLinux on the microprocessor and realizes rightly network communicating by Socket programming, it achieve the design goal by testing.Key words:Embedded System;TCP/IP;Socket; ARM1 引言随着计算机技术的发展,嵌入式系统已成为计算机领域的一个重要组成部分。嵌入式系统中的网络应用也越来越广泛,几乎所有设备均需要有Internet连接能力。支持嵌入式系统上网的标准大部分仍然是TCP/IP协议,包括TCP,IP,ARP等协议。但是传统的TCP/IP协议在实现实时性方面做得不够好,它把大量的精力花在保证数据传送的可靠性以及数据流量的控制上,而在实时性要求比较高的嵌入式领域中,传统的TCP/IP不能满足其实时要求。因此研究并改进嵌入式TCP/IP协议栈以满足嵌入式系统的高性能要求具有重要的现实意义。2 嵌入式TCP/IP协议栈的基本特征传统TCP/IP协议栈的实现过于复杂,需占用大量系统资源,而嵌入式应用系统的资源往往都非常有限。因此,需要将传统的TCP/IP协议栈在不违背协议标准的前提下加以改进,使其实现性得到提高,占用的存储空间尽可能少,以满足嵌入式应用的要求。通常为了解决存储能力不足的问题,采取在嵌入式系统的缓冲区内开辟较少字节的固定存储空间,而不是动态分配,若一旦出现大流量数据包时就会导致缓冲区溢出。因此在设计嵌入式TCP/IP协议栈时要合理地控制中断处理程序大小,使运行时间尽可能地缩短。3 嵌入式TCP/IP协议栈体系结构按照OSI层次结构思想,在标准的TCP/IP协议栈中有很多处理协议,如ARP,IP,ICMP,TCP,UDP等协议。在本文设计过程中考虑到嵌入式设备资源有限和对网络要求程度不高,经设计简化后的嵌入式TCP/IP协议栈体系结构如图1所示。整个协议栈采用模块化设计思想,主要模块是ARP协议处理模块、IP协议处理模块、TCP协议处理模块等。同时为每个模块设计良好的通信接口,保证上层、下层协议的系统调用。由图1可知,TCP/IP协议栈及以太网中数据传送的层次关系:当在应用程序(一般应用有HTTP,FTP等协议)中将应用数据(包括用户数据和应用首部)向网络传送,它首先到达TCP层,TCP协议根据应用层的要求在TCP首部填写好各个字段,如端口号、序号、标志等。重要的是填写数据校验和到校验和的字段,然后将包括TCP首部的段(数据包在TCP协议层称为段Segment)向协议栈的下一层即IP层传送。IP层则与TCP层一样,填写IP首部的各个字段,如地址、协议类型等,然后将在头部包括IP首部和TCP首部的整个数据报(数据包在IP协议层称为数据报Datagram)向下传送;到了以太网驱动程序,继续进行封装工作,将以太网首部和以太网尾部添加到从IP层传下来的数据报上。4 嵌入式TCP/IP协议处理流程嵌入式TCP/IP协议接收数据包的实现过程就是在解析数据包。首先由以太网帧处理模块解析数据包,根据其类型,将去掉以太网帧首部的数据包分配到IP缓存或者ARP缓存;接着,由IP协议处理模块或ARP处理模块继续解析。ARP协议根据数据包的类型,或者更新ARP地址映射表或者发送ARP应答。IP协议处理模块对数据包解析后,将数据包交给TCP协议处理模块。嵌入式TCP/IP协议发送数据包的实现过程可以认为是在封装数据包,数据包经过某层协议的处理,将上层协议传来的数据包封装成自己的格式。按照改进后的嵌入式TCP/IP协议体系结构,其协议的具体处理流程如图2所示。下面进一步对嵌入式协议栈中的TCP协议处理模型进行简化,并通过Socket编程在CLinux系统上得以实现。5 简化的嵌入式TCP协议设计实现传输控制协议(Transmission Control Protocol,TCP)是对IP协议进行功能扩展,在发送端与接收端之间提供高可靠性的数据通信。TCP协议是一个面向连接的通信协议,在通信开始时建立连接;在通信结束时切断该连接。在TCP协议中根据IP协议的载荷能力和物理网络最大传输单元MTU来决定数据段大小,这些数据段称为TCP数据报报文。它由数据报头和数据两部分组成,数据报头携带了该数据报所需的标志及控制信息,包括20Bytes的固定部分和一个不固定长度的可选项部分。在本次设计中,根据系统网络数据量较小且10Mbps的以太网传输不会导致阻塞,以太网上的主机有足够的能力处理数据报,因此可以绑定超时与重传的时间为5s;所使用的RTL8019AS上有两个1 500Bytes的接收缓冲区,对一般的嵌入式系统信息量较小,可以固定接收窗口为1 400Bytes;采用一般的TCP服务就可以满足应用要求,可以忽略紧急指针和选项及填充字段的值。因此对复杂的TCP协议进行了合理的改进,改进后的格式如图3所示。 源端口(16位)目的端口(16位)序列号(32位)确认号(32位)包头长度 (4位)保留(6位)URCACKPSHPSTSYNFIN固定窗口数据(可变长)图3 改进后的TCP协议数据报文格式对于嵌入式TCP/IP协议栈的设计采用基于事件驱动的程序模型。当一个事件到达时(如一个新的连接请求或一个新的数据包到达一个已经建立的连接等),应用程序就会被调用,并由应用程序根据所发生的事件作出处理。此部分可以由具体的进程来实现。(1)建立连接:当客户机请求对端接入时,随机地选送一个初始序号;服务器选送一个自己的初始序号,作为对客户机送来序号的应答号返送给客户机;客户机向服务器再发出应答段(ACK),作为握手信号来保证数据被可靠地接收,而应答段本身不再需要应答,避免应答陷入无穷的嵌套。(2)验证进程:采取相应的措施消除传输中的错误,以保证数据传输的可靠性,如持续跟踪已发出数据段的应答是否返回来判断数据是否丢失;利用序列号解决通信时重复、失序的问题;利用校验和解决数据误码问题等。(3)流量控制进程:设置一个缓冲区作为固定窗口,ACK和窗口号指明在正确收到最后一个数据包之后,还可接收的序列号范围,由此对流量进行控制。(4)关闭连接:客户机向服务器发出关闭段,此时客户机不再发出数据仅可接收数据;服务器向客户机发出关闭应答段,此时,服务器还可以向客户机发送数据,即接入处于“半关闭”状态;服务器向客户机发出关闭段,服务器不能再发送数据;客户机为响应服务器的关闭,向服务器发出关闭应答段。改进后的基于事件驱动模型的TCP协议处理有限状态图如图4所示。SYN:标志位用来建立连接,让连接双方同步序列号。如果SYN1而ACK=0,则表示该数据包为连接请求,如果SYN=1而ACK=1则表示接收连接。FIN:表示发送端已经没有数据要求传输了,希望释放连接。RST:用来复位一个连接。RST标志置位的数据包称为复位包。一般情况下,如果TCP收到的一个分段明显不属于该主机上的任何一个连接,则向远端发送一个复位包。ACK:确认标志位。如果为1,表示包中的确认号是有效的;否则,包中的确认号无效。接下来,介绍如何在CLinux环境下通过Socket编程实现TCP协议。网络的Socket数据传输是一种特殊的I/O,也是一种文件描述符。具有一个类似文件的函数调用Socket(),该函数返回一个整型的Socket描述符,随后的建立连接、数据传输等操作均是通过该Socket()函数实现的。在实现TCP协议过程中所使用的主要套接字系统调用、库函数和结构体如下所示:#include#include#includeint Socket (int domain,int type,int protocol); /利用Socket系统调用来打开一个套接字int bind (int s,struct sockaddr *my_addr,socklen_t addrlen); /利用自己的主机指定所使用的IP地址和端口int connect (int s,const struct sockaddr *addr,socklen_t addrlen);/当指定通信对方IP地址时,采用Connect系统调用int listen (int s,int backlog);/当服务器接收到TCP协议连接时,执行一个Listen系统调用int accept (int s,struct sockaddr *addr,socklen_t *addlen);/当服务器接收来自客户机建立的连接请求时,执行Accept系统调用int send (int s,const void * msg,size_t len,int flags); /在建立连接后,利用Send系统调用完成报文的发送int recv (int s,const void * buf,size_t len,int flags);/在建立连接后,利用Send系统调用完成报文的发送int close (int s);/在结束对套接字使用时,利用Close系统调用来关闭套接字根据嵌入式TCP/IP协议栈的设计模型,其实现主要是实现基本协议如TCP协议、IP协议、ARP协议等。其余的像PPP那样的链路层协议需要在嵌入式TCP/IP协议栈下面的设备驱动程序中实现;而像HTTP,FTP这样的应用层协议则要在嵌入式TCP/IP协议栈上面的应用层中实现。6 基于ARM7TDMI核的网络控制器硬件平台设计本文所设计的嵌入式网络控制器由三大部分组成,分别是微处理器、存储器、RTL8019AS全双工以太网控制器。SAMSUNG公司的S3C44B0X是基于以太网应用系统高性价比的16/32位RISC微控制器,内含一个由ARM公司设计的16/32位ARM7TDMI RISC处理器核,ARM7TDMI为低功耗、高性能的16/32核,最适合用于对价格及功耗敏感的应用场合。本文主要工作是笔者从事北京市高校研究生教育基金项目的研究子课题,完成了控制器的硬件实现,并在S3C44B0X微处理器上成功移植CLinux操作系统。除了实现网络通信的基本功能外,还增加了一些应用层上的服务,如FTP,HTTP协议。下面是基于ARM核的嵌入式网络控制器的硬件结构设计方案如图5所示。7 结束语嵌入式Internet技术将随着网络和硬件技术的发展而不断提高,网络化的嵌入式产品的流行成为一种不可抵挡的潮流。通过研究简化了基于ARM核的嵌入式TCP/IP协议栈,实验将本网络控制器的IP设为192.168.0.62,连接好网线(一端插在控制器RJ45接口上,另外一端插在PC机的网卡上),在PC机的命令输入窗口中运行Ping程序,输入Ping 192.168.0.62 ?t,回车结果一切正常(显示:Relay from 192.168.0.62:bytes=32 time1ms TTL=20)。表明该系统能够使数据流按照改进后的网络协议模型进行处理,并能正确地实现数据包的以太网传输。本文为嵌入式设备接入Internet提供了一种低成本、高可靠性、灵活性的解决方案。此外用户还可以根据具体设计需要,开发出适合自己的网络微控制器。参考文献:1Sung?Woo Tak, Jong?Moon Son, Tae?Keum Kim. Experience with TCP/IP Networking Protocol S/W over Embedded OS for Network ApplianceC.ICPP Workshops, 1999.556-561.2郝京宇,黄建华,贾风根.协议栈的实现方法J.计算机工程,2004,30(14):93-94.3美 W Richard Stevens.TCP/IP详解(卷一):协议M.范建华,等.北京:机械工业出版社,2000.4美Gary R,Wrigh W,Richard Stevens.TCP/IP详解(卷二):实现M.陆学莹.北京:机械工业出版社,2000.5李立清,路海.基于嵌入式系统的TCP/IP协议栈的实现J.计算机工程,2004,30(19):83-84.6(日)村山公保.TCP/IP网络实验程序篇M.北京: 科学出版社,2003.7郝身刚,刘金江.嵌入式系统中TCP/IP协议栈的研究J.南阳师范学院学报(自然科学版),2004,23(3):78-80.8郝洁,王慕坤,付金生.嵌入式TCP/IP技术研究及应用J.哈尔滨理工大学学报,2004,9(2):100?102.
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 活动策划


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!