基于嵌入式系统的TCP/IP网络层协议研究

时间:2022-09-21 12:19:37

基于嵌入式系统的TCP/IP网络层协议研究

摘要:嵌入式系统的Internet网络化的研究与应用是近几年来嵌入式应用领域的一个研究热点。该文针对应用广泛的ARM7系列的处理器为核心的嵌入式系统,对网络层协议进行了研究分析,提出了基于嵌入式封装、分用、重组方案、附属协议ICMP的回显应答功能等方案,使之适应嵌入式系统。

关键词:嵌入式系统;网络层协议;ICMP协议

中图分类号:TP393文献标识码:A文章编号:1009-3044(2008)24-1168-02

Research on TCP/IP Network Layer Protocol Based on Embedded System

XIA Zhong-hua, ZHANG Dong-liang

(Qinghuangdao Institute of Technology,Qinhuangdao 066100,China)

Abstract: In recent years, research on connecting embedded system with Internet has become one of the focuses in applications of embedded system. This paper design a light TCP/IP protocol stack suitable for embedded system with ARM7 series MCU ,Embedded system is close to production and life of human being. Analyzed the Network Layer protocol and presented embedded encapsulation, demultiplexing, recomposement and the Echo Relply function of affiliated ICMP.

Key words: embedded system;Network Layer protocol;ICMP protocol

1 引言

嵌入式系统与TCP/IP网络的互联,这一技术在许多领域得到广泛的应用。但由于网络协议的复杂性与嵌入式系统的处理器相对简单之间的矛盾,这就要求简化TCP/IP协议[1]。

嵌入式TCP/IP协议[2]即是以满足嵌入式系统的实际需要为目的的这一指导思想出发,建立在嵌入式Internet理论的基础上,通过对庞大、功能齐全的TCP/IP协议栈的研究,对标准的TCP/IP协议进行了一定的取舍和优化,从而制定出一套简单的、适合于嵌入式系统的并且能完成相应网络功能的协议栈。

本文针对应用广泛的ARM7系列的处理器为核心的嵌入式系统[3],对TCP/IP网络层协议进行了研究分析,提出了基于嵌入式封装、分用、重组方案、附属协议ICMP的回显应答功能等方案,使之适应嵌入式系统。

2 网络层协议简介

IP协议[4]是TCP/IP协议族中最为核心的协议。所有的TCP、UDP、ICMP及IGMP数据都以IP数据报格式传输。IP协议提供的是一种不可靠、无连接的服务。不可靠(unreliable)的意思是它不能保证IP数据报能成功地到达目的地。IP仅提供最好的传输服务。无连接(connectionless)这个术语的意思是IP并不维护任何关于后续数据报的状态信息。每个数据报的处理是相互独立的。这也说明,IP数据报可以不按发送顺序接收.如果一信源向相同的信宿发送两个连续的数据报(先是A,然后是B),每个数据报都是独立地进行路由选择,可能选择不同的路线,因此B可能在A到达之前先到达。IP协议最基本的功能是路由选择、分片和重组。

3 网络层的嵌入式研究

3.1 路由功能

常规的实现要考虑较多的问题:协议必须具有通用性,无论是在网络中的一台主机,还是在连接不同网络的网关上都要运行。

由于本设计的目的是实现一个嵌入式WEB服务器应用,而不是做嵌入式网关、路由器,所以在这里,裁减掉路由功能。有关路由的问题均不欲考虑。一切都交给默认网关去处理。这样做,简化了IP协议,节约嵌入式系统资源。

3.2 分片和重组

对于大小超过网络硬件所允许的最大值(MTU)的数据报的发送,IP有个简单的解决办法,即将这些数据报在传输时进行分片,然后进行重组。但是分片重组会付出明显的性能代价,因为在把它们重新组装起来的时候会占用大量的空间,这在嵌入式系统中是一个不小的负担[5]。

所以本设计中,我们设计发送的数据报文小于网络硬件的最大值,这样就可以避免分片。这样可以简化代码,提高效率。但是不支持重组,远程客户端发送的数据报如果在中间路由时候进行了分片,我们将无法处理,所以本设计中实现了重组的功能。

3.3 IP服务类型

本设计发送IP数据报时,将该字段设置为0,表示该数据报为正常的优先级。在接收IP数据报时,将忽略该信息,实际上大部分路由器都是这样做的[6]。

3.4 选项字段的处理

当接收到的IP数据报含选项字段时,处理该数据报时,将直接跳过该字段。这些选项的作用是允许更严格地控制路由过程和增加安全性,所有这些信息可以被忽略,并不会引起错误[7]。

3.5 嵌入式IP数据结构

协议栈定义为512个字节的缓冲区。发送和接收的数据包公用一个缓冲区,这样的好处是不但可以节约存储资源,还可以实现数据包在协议栈中的“零拷贝”[8]。

3.6 附属协议的处理

网络层除了IP协议外,一般我们把ICMP和IGMP归到这一层[9]。本设计没有实现广播和多播的功能,ICMP报文也只是实现了对ping报文的回显应答功能――既对ping报文回显请求分析,给出ping报文的回显应答。

所有报文的前4个字节都是一样的,但剩下的其它字节则互不相同。ICMP报文是在IP数据报内部传输的,如图1所示。报文格式,如图2所示。

图1 ICMP封装在IP数据报内部

图2 ICMP报文

Ping 程序可以测试一台主机是否可以到达[10]。程序发送一份ICMP回显请求报文给主机,并等待返回ICMP回显应答。一般说来,如果不能Ping到某主机,那么就不能Telnet或者FTP到那台主机。反过来,如果不能Telnet到某台主机,那么通常可以用Ping程序来确定问题出在哪里。Ping程序还能测到这台主机的往返时间,以表示该主机离我们有“多远”。ICMP回显请求和回显应答格式报文如图3所示。

图3 ICMP回显请求和回显应答报文格式

4 结论

本文在分析了嵌入式系统和TCP/IP网络层协议的基础上,提出了实现嵌入式TCP/IP网络层协议的方法。对网络层协议的路由功能、分片和重组、附属协议的处理等方面进行了针对性的改进,使之成为适应嵌入式系统的网络层协议。

参考文献:

[1] 王田苗.嵌入式系统设计与实例开发[M].北京:清华大学出版社,2003:1-30.

[2] 付宏,袁兵.嵌入式Internet应用研究[J].计算机工程与应用,2003,30:180-185.

[3] 陈瑾,罗敏,张焕国.入侵检测技术概述[J].计算机工程与应用,2004(2):133-136.

[4] 李阳明,齐志强,师丽彩.嵌入式Internet的应用[J].电子技术,2005,5:62-64.

[5] 张懿慧,陈泉林.源码公开的TCP/IP协议栈在远程监测中的应用[J].单片机与嵌入式系统应用,2004(11):61-64.

[6] Bhatia Sapan, Consel Charles, Le Meur, et al. Automatic Specialization of Protocol Stacks in operating System Kernels[C].Proceedings -29th Annual IEEE International Conference on Local Computer Networks LCN 2004.Tampa Fl United States,2004:152-15.

[7] Dave R N,Bhaswan K.Adaptive fuzzy c-shells clustering and detection of ellipses[J].IEEE Trans,on Neural Networks,1992,3(5):643-662.

[8] Timm C R,Kruse R.A modification to improve possibilistic fuzzy cluster analysis[C].Proceedings of the IEEE Int Conf on Fuzzy Systems,Honululu,2002.

[9] 李善平,刘文峰,王焕龙,等.Linux与嵌入式系统[M].北京:清华大学出版社,2003:266-267.

[10] 陈渝,李明,杨晔.源码开放的嵌入式系统软件分析与实践――基于SkyEye和ARM开发[M].北京:北京航空航天大学出版社,2004:3-13.

上一篇:浅析全国大学生软件创新大赛 下一篇:基于CELTS的艺术教育资源的开发建设研究