一种新的嵌入式TCP/IP协议栈的研究与实现
时间:09-17
来源:互联网
点击:
3. 3网际控制报文协议———ICMP协议
ICMP协议是IP网络内为控制、测试、管理功能而设计的协议。ICMP的报文类型很多,不同类型的报文由类型和代码字段共同决定。为了了解设备是否可达, Simplified TCP/IP协议栈中主要实现了回显请求和应答报文的功能。该程序发送ICMP回显请求报文给目的主机,并等待ICMP回显应答。对于处于被动状态设备而言,不需要主动发送回显请求,只要能够识别来自其他客户的回显请求并发送回显应答就可以了。为了能够使用户了解设备是否可达,应当能够对Ping的回显请求给予应答。
3. 4 用户数据报协议—UDP协议
Simplified TCP/IP协议栈中的传输层中,选用UDP作为传输层协议。从理论上看,TCP的可靠性是以许多复杂措施及由此而增加的开销为代价换来的。TCP提供面向链接的、可靠的服务,而UDP是无面向链接的。由于UDP没有可靠性的保证机制,因此能全速地进行数据通信(即充分发挥物理通信设备的速度);又因为UDP没有点对点接入的要求,可以实现“一对多点”,“多对多点”的广播和多点播发信息。UDP的不可靠传输的缺陷,可以在使用UDP时,在应用层增加提高UDP可靠性的代码来弥补。譬如给数据添加顺序标记,因而能在应用层发现数据的丢失和乱序,从而加以更正;采用应答确认机制,确保数据安全到达接收者等。
由于嵌入式系统的CPU速度有限、代码不能太长、传输率是关键等特殊要求,一般来讲,在嵌入式设备接口时,快速、简单地与嵌入式设备进行双向数据传输是首为重要的。所以减少和嵌入式设备之间的往返信息,使网络成为一种更为高效的通信媒介将是嵌入式网络协议设计的必由之路。而UDP协议的开销很小,传输率比TCP高出很多,实时性更强。所以嵌入式TCP/IP协议中采用UDP协议作为运输层协议,不失为明智之举。嵌入式系统中也可能存在对数据传输可靠性要求很高的情况。由于UDP协议没有计时机制、流量控制或拥塞管理机制、应答、紧急数据的加速传送等功能,因此在应用层协议中加入相应的措施,如给数据报加上顺序标识、定时等待、采用重传机制等辅助性的操作来弥补它的缺陷。从应用的角度看, Simplified TCP/IP协议栈主要是应用于家用电器上网。对于温度、烟雾和湿度传感器等的每秒一次地集中监控来说,发送频繁,包较小,只需前端设备向网络中广播实时状态等数据即可,因此选用UDP较为合适。
4 Simplified TCP/IP协议栈处理流程
Simplified TCP/IP协议栈接收数据包的过程就是解析数据包的过程。首先当一个数据帧到达时,网络接口控制程序将其读入缓冲区,检查协议类型字段,如值依次为0x0800,表示数据域内为IP包;值依次为0x0806,表示数据域内为ARP包。由此以确定使用那种协议模块来处理此分组。去掉以太网帧首部的数据包将被分配到IP缓存或者ARP缓存。接着,由IP协议处理模块或ARP协议处理模块继续解析。ARP根据包的类型,或者更新ARP地址映射表或者发送ARP应答。IP协议处理模块对数据包解析后,将数据交给UDP协议处理模块或ICMP协议处理模块。ICMP协议模块会发回一个ICMP回显应答包。Simplified TCP/IP协议栈发送数据包的过程是封装数据包的过程,数据经过某层协议的处理,就会在数据包首部增加某种格式的头部。在IP协议模块处理数据包的过程,它要通过调用ARP协议获得对方主机的物理地址。
Simplified TCP/IP协议栈处理流程如图3所示。
图3 Simplified TCP/IP协议栈处理流程图
5 总结与展望
为了验证方案的可行性,实验中以简单图像的传输为研究对象,检验Simplified TCP/IP协议栈的运行效果。从测试结果可看出,大流量的图像传输系统中发生数据报的几率还是比较大的。当然,如果是应用在数据流量不是很大,仅有一些少量数据和简单的控制指令或反馈信息的应用系统中,运行的情况会更好一些。
目前Simplified TCP/IP协议栈技术还有一些不完善的地方。比如在数据量大的网络中减小数据报的丢失率,更有效的进行拥塞控制等,这些都是今后的努力方向。另外,还需要进一步优化代码,提高SimplifiedTCP/IP协议栈的性能。
ICMP协议是IP网络内为控制、测试、管理功能而设计的协议。ICMP的报文类型很多,不同类型的报文由类型和代码字段共同决定。为了了解设备是否可达, Simplified TCP/IP协议栈中主要实现了回显请求和应答报文的功能。该程序发送ICMP回显请求报文给目的主机,并等待ICMP回显应答。对于处于被动状态设备而言,不需要主动发送回显请求,只要能够识别来自其他客户的回显请求并发送回显应答就可以了。为了能够使用户了解设备是否可达,应当能够对Ping的回显请求给予应答。
3. 4 用户数据报协议—UDP协议
Simplified TCP/IP协议栈中的传输层中,选用UDP作为传输层协议。从理论上看,TCP的可靠性是以许多复杂措施及由此而增加的开销为代价换来的。TCP提供面向链接的、可靠的服务,而UDP是无面向链接的。由于UDP没有可靠性的保证机制,因此能全速地进行数据通信(即充分发挥物理通信设备的速度);又因为UDP没有点对点接入的要求,可以实现“一对多点”,“多对多点”的广播和多点播发信息。UDP的不可靠传输的缺陷,可以在使用UDP时,在应用层增加提高UDP可靠性的代码来弥补。譬如给数据添加顺序标记,因而能在应用层发现数据的丢失和乱序,从而加以更正;采用应答确认机制,确保数据安全到达接收者等。
由于嵌入式系统的CPU速度有限、代码不能太长、传输率是关键等特殊要求,一般来讲,在嵌入式设备接口时,快速、简单地与嵌入式设备进行双向数据传输是首为重要的。所以减少和嵌入式设备之间的往返信息,使网络成为一种更为高效的通信媒介将是嵌入式网络协议设计的必由之路。而UDP协议的开销很小,传输率比TCP高出很多,实时性更强。所以嵌入式TCP/IP协议中采用UDP协议作为运输层协议,不失为明智之举。嵌入式系统中也可能存在对数据传输可靠性要求很高的情况。由于UDP协议没有计时机制、流量控制或拥塞管理机制、应答、紧急数据的加速传送等功能,因此在应用层协议中加入相应的措施,如给数据报加上顺序标识、定时等待、采用重传机制等辅助性的操作来弥补它的缺陷。从应用的角度看, Simplified TCP/IP协议栈主要是应用于家用电器上网。对于温度、烟雾和湿度传感器等的每秒一次地集中监控来说,发送频繁,包较小,只需前端设备向网络中广播实时状态等数据即可,因此选用UDP较为合适。
4 Simplified TCP/IP协议栈处理流程
Simplified TCP/IP协议栈接收数据包的过程就是解析数据包的过程。首先当一个数据帧到达时,网络接口控制程序将其读入缓冲区,检查协议类型字段,如值依次为0x0800,表示数据域内为IP包;值依次为0x0806,表示数据域内为ARP包。由此以确定使用那种协议模块来处理此分组。去掉以太网帧首部的数据包将被分配到IP缓存或者ARP缓存。接着,由IP协议处理模块或ARP协议处理模块继续解析。ARP根据包的类型,或者更新ARP地址映射表或者发送ARP应答。IP协议处理模块对数据包解析后,将数据交给UDP协议处理模块或ICMP协议处理模块。ICMP协议模块会发回一个ICMP回显应答包。Simplified TCP/IP协议栈发送数据包的过程是封装数据包的过程,数据经过某层协议的处理,就会在数据包首部增加某种格式的头部。在IP协议模块处理数据包的过程,它要通过调用ARP协议获得对方主机的物理地址。
Simplified TCP/IP协议栈处理流程如图3所示。
图3 Simplified TCP/IP协议栈处理流程图
5 总结与展望
为了验证方案的可行性,实验中以简单图像的传输为研究对象,检验Simplified TCP/IP协议栈的运行效果。从测试结果可看出,大流量的图像传输系统中发生数据报的几率还是比较大的。当然,如果是应用在数据流量不是很大,仅有一些少量数据和简单的控制指令或反馈信息的应用系统中,运行的情况会更好一些。
目前Simplified TCP/IP协议栈技术还有一些不完善的地方。比如在数据量大的网络中减小数据报的丢失率,更有效的进行拥塞控制等,这些都是今后的努力方向。另外,还需要进一步优化代码,提高SimplifiedTCP/IP协议栈的性能。
- 蓝牙无线电调制解调器Siw1701原理与应用(02-19)
- 嵌入式移动数据库的关键技术(03-20)
- 在嵌入式SQL中怎样使用游标(08-12)
- 嵌入式Linux系统软件开发学习思路详细介绍 (08-20)
- 基于AVR单片机的嵌入式“瘦服务器”系统设计思想(03-11)
- 嵌入式系统设计中的存储碎片收集策略(05-04)