http://blog.chinaunix.net/uid-28785506-id-3828286.htmlhtml
原文地址:几种开放源码的TCP/IP协议栈比较 做者:三点水兽服务器
一、BSD TCP/IP协议栈网络
BSD栈历史上是其余商业栈的起点,大多数专业TCP/IP栈(VxWorks内嵌的TCP/IP栈)是BSD栈派生的。这是由于BSD栈在BSD许可协 议下提供了这些专业栈的雏形,BSD许用证容许BSD栈以修改或未修改的形式结合这些专业栈的代码而无须向建立者付版税。同时,BSD也是许多 TCP/IP协议中的创新(如广域网中饿拥塞控制和避免)的开始点。tcp
二、uC/IP函数
uC/IP是由Guy Lancaster编写的一套基于uC/OS且开放源码的TCP/IP协议栈,亦可移植到其它操做系统,是一套彻底免费的、可供研究的TCP/IP协议 栈,uC/IP大部分源码是从公开源码BSD发布站点和KA9Q(一个基于DOS单任务环境运行的TCP/IP协议栈)移植过来。uC/IP具备以下一些 特色:带身份验证和报头压缩支持的PPP协议,优化的单一请求/回复交互过程,支持IP/TCP/UDP协议,可实现的网络功能较为强大,并可裁减。 UCIP协议栈被设计为一个带最小化用户接口及可应用串行链路网络模块。根据采用CPU、编译器和系统所需实现协议的多少,协议栈须要的代码容量空间在 30-60KB之间。
http://ucip.sourceforge.net性能
三、LwIP学习
LwIP是瑞士计算机科学院(Swedish Institute of Computer Science)的Adam Dunkels等开发的一套用于嵌入式系统的开放源代码TCP/IP协议栈。LwIP的含义是Light Weight(轻型)IP协议,相对于uip。LwIP能够移植到操做系统上,也能够在无操做系统的状况下独立运行。LwIP TCP/IP实现的重点是在保持TCP协议主要功能的基础上减小对RAM的占用,通常它只须要几十K的RAM和40K左右的ROM就能够运行,这使 LwIP协议栈适合在低端嵌入式系统中使用。LwIP的特性以下:支持多网络接口下的IP转发,支持ICMP协议 ,包括实验性扩展的的UDP(用户数据报协议),包括阻塞控制,RTT估算和快速恢复和快速转发的TCP(传输控制协议),提供专门的内部回调接口 (Raw API)用于提升应用程序性能,并提供了可选择的Berkeley接口API。http://www.sics.se/~adam/lwip/或http://savannah.nongnu.org/projects/lwip/测试
四、uIP优化
uIP是专门为8位和16位控制器设计的一个很是小的TCP/IP栈。彻底用C编写,所以可移植到各类不一样的结构和操做系统上,一个编译过的栈能够在几KB ROM或几百字节RAM中运行。uIP中还包括一个HTTP服务器做为服务内容。许可:BSD许用证
http://www.sics.se/~adam/uip/ui
五、TinyTcp
TinyTcp 栈是TCP/IP的一个很是小和简单的实现,它包括一个FTP客户。TinyTcp是为了烧入ROM设计的而且如今开始对大端结构彷佛是有用的(初始目标是68000芯片)。TinyTcp也包括一个简单的以太网驱动器用于3COM多总线卡
http://ftp.ecs.soton.ac.uk/pub/elks/utils/tiny-tcp.txt
选择一个开源协议栈能够从四个方面来考虑: 一个是是否提供易用的底层硬件API,即与硬件平台的无关性; 一个是与操做系统的内核API。协议栈须要调用的系统函数接口是否容易构造, 另外一个对于应用支持程度。 最关键的是占用的系统资源是否在可接受范围内,有裁减优化的空间否? 其中,BSD 栈可完整实现TCP/IP协议,但代码庞大,70KB-150KB之间,裁减优化有难度,uIP和TinyTcp代码容量小巧,实现功能精简,限制了在一些较高要求场合下的应用,如可靠性与大容量数据传输。LwIP 和uC/IP是同量级别的两个开源协议栈,二者代码容量和实现功能类似,LwIP没有操做系统针对性,它将协议栈与平台相关的代码抽象出来,用户若是要移 植到本身的系统,须要完成该部分代码的封装,并为网络应用支持提供了API接口的可选性。uC/IP协议最初是针对uC/OS设计,为方便用户移植实现, 一样也抽象了协议栈与平台相关代码,可是协议栈所需调用的系统函数大多参照uC/OS内核函数原型设计,并提供了协议栈的测试函数,方便用户参考,其不足 在于该协议栈对网络应用支持不足。 根据以上分析,从应用和开发的角度看,彷佛LWIP更获得了网上不少朋友使用的青睐;uC/IP在文 档支持与软件升级管理上有不少不足,可是它最初是针对UC/OS而设计,若是选用UC/OS做为软件基础的话,在系统函数构造方面有优点。固然你选择其余 操做系统的话,可参照OS_NULL文件夹下的文件修改。 以上的这些开源协议栈也并不是免费,拿来就能够用,据我所知,UC/OS的母公司推出UC/OS-TCP/IP花了6人*2年的工做量,国内某公司使用 LWIP做为移植的参照,花了4-5人*2年的工做量来测试与优化协议,使用商用TCP/IP栈的高费用就不足为奇了。 做为广大的爱好者学习而言,若是只是跑跑原型,实验一下效果,以上的几种开源协议栈都提供了测试的例子,应该是不错的选择。我的的见解:LWIP可优先考虑,至少网上有不少的人一块研究,参考的资料较多;UC/IP其次,若是你想深刻学习TCP/IP的话,移植UC/IP是一种挑战性的工做,它尚需完善。