协议栈的设计要点[原创]协议栈的设计要点
平台无关性
本文所设计的TCP/IP双协议栈,要求不能局限于特定的硬件环境和软件系统。因此,本协议栈的实现采用将所有的TCP/IP协议都驻留在一个进程当中,协议栈模块与操作系统内核分开。通过定义一个操作系统模拟层实现平台无关性。操作系统模拟层屏蔽硬件上的差异和获取操作系统提供统一的接口,如时钟、过程同步以及信息传递机制等。对于特定的嵌入式操作系统,直接对操作系统模拟层相应部分进行修改,以符合具体的要求。操作系统模拟层主要包括下面两个部分:
⑴与处理器和编译器有关
对不同微处理器的BYTE_ORDER存储系统定义;对不同编译器的数据类型长度的定义;与CPU或编译器相关的内容的定义。
⑵与操作系统相关
协议栈进程与应用程序进程之间的同步与通讯,需要对信号量sys_sem_t、消息队列sys_mbox_t和时钟函数进行定义和操作。
协议栈的裁减
标准的TCP/IP协议栈功能复杂,代码量大,且需大量的存储器资源。为了满足嵌入式应用,必须对RFC定义的协议栈进行裁减[1]。本协议栈的实现作了如下裁减:
⑴IP模块:不支持数据分片,不支持数据包转发,不支持IPv6移动功能,不支持部分IPv6的扩展报头。
⑵ICMPv6模块:支持信息报文中的请求和应答报文,支持错误报文中的目的不可达和超时报文。
⑶邻居发现模块:支持地址解析、重复性探测,省略了路由功能。
⑷TCP模块:支持多个连接,简化滑动窗口,实现快速重传、慢启动与拥塞避免算法的TCP可靠性机制;约减掉半关闭,紧急指针,大部分TCP选项等。
(本文由Cogo商城-IC元器件在线采购平台搜集整理,浏览

了解更多详细信息)