uIP 一个免费的TCP/IP栈
原文:Adam Dunkels
2002年2月15日
翻译:张伟林 2003年5月17日
摘要
这个文档描述uIP TCP/IP栈。 uIP TCP/IP栈是使用于低至8位或16位微处理器的嵌入式系统
的一个可实现的极小的TCP/IP协议栈。现时,uIP代码的大小和RAM的需求比其它一般的TCP/IP栈
要小。
uIP栈使用一个基于编程模块事件去减少代码的大小和RAM的使用量。基于系统的底层和uIP
之间的接口的回应会在文档里描述。系统的底层和uIP之间的接口是隐蔽的。文档后面包含了一
些uIP应用编程例子。
uIP 的代码和这个文档的新版本可以在uIP的主页下载 http://dunkels.com/adam/uip/。
这个文档描述了uIP的0.6版。
1 引言
新近这些年里,人们对连接一个甚至只是小装置到一个现有的IP网络例如全球因特网的兴趣
增加了。为了可以通过因特网通讯,一个可实现的TCP/IP协议栈是必须的。uIP是一个可实现的
TCP/IP协议组件的一个非常重要的部分。uIP的实现目标是保持代码大小和储存器使用量最小。
现时,uIP代码的大小和RAM的需求比其它一般的TCP/IP栈要小。uIP使用C编程语言,它可以自用分发
和使用于商业和非商业目的。
其它的TCP/IP栈,储存器经常用于数据缓存,等待一个数据已经成功送达的确应信号。 事实上,
数据包丢失了,数据必须重发。有特色的是,数据是缓存在RAM里,如果需要重发数据,应用
程序可以快速重生数据。例如,一个HTTP服务器服务的大部分是ROM里的静态和半静态页,不
需要在RAM里缓存静态内容。所以,如果一个包丢失了,HTTP服务器可以容易地从ROM里重
生数据。数据简单地从原先的位置读回来。uIP的优越性是允许应用程序参加数据重发。
这个文档由以下部分组成,第2节描述在系统和应用的立场上怎样使用uIP。第3节详细讨论
协议实现细节。第4 节覆盖了uIP的配置,第5节描述uIP的结构部分。最后,第6节提供一些uIP
的应用编程实例。
2 uIP的接口技术
uIP可以看作是一个代码库为系统提供确定的函数。图 1 展示了uIP,系统底层和应用程序
之间的关系。uIP提供三个函数到系统底层, uip_init(), uip_input(),和uip_periodic()。应用程
序必须提供一个回应函数给uIP。当网络或定时事件发生时,调用回应函数。 uIP提供许多函数
和堆栈交互。
要注意的就是uIP提供的大部分函数是作为C的宏命令实现的,主要是为了速度,代码大小,
效率和堆栈的使用。