⼏个主流TCPIP协议栈介绍
我们知道协议栈内包括了诸多协议。那么对于这当中的协议的功能以及作⽤,我们来具体了解⼀下吧。现在让我们做⼀个盘点,帮助⼤家总结⼀下,还望对⼤家能够有所帮助。
1、BSD TCP IP协议栈
BSD栈历史上是其他商业栈的起点,⼤多数专业TCP/IP栈(VxWorks内嵌的TCP/IP栈)是BSD栈派⽣的.这是因为BSD栈在BSD许可协议下提供了这些专业栈的雏形,BSD许⽤证允许BSD栈以修改或未修改的形式结合这些专业栈的代码⽽⽆须向创建者付版税.同时,BSD也是许多TCP/IP协议中的创新(如⼴域⽹中饿拥塞控制和避免)的开始点.
2、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之间.
3、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。
4、uIP
uIP是专门为8位和16位控制器设计的⼀个⾮常⼩的TCP/IP栈.完全⽤C编写,因此可移植到各种不同的结构和操作系统上,⼀个编译过的栈可以在⼏KB ROM或⼏百字节RAM中运⾏.uIP中还包括⼀个HTTP服务器作为服务内容.许可:BSD许⽤证。
5、TinyTcp
tcpip协议pdf
TinyTcp 栈是TCP/IP的⼀个⾮常⼩和简单的实现,它包括⼀个FTP客户.TinyTcp是为了烧⼊ROM设计的并且现在开始对⼤端结构似乎是有⽤的(初始⽬标是68000芯⽚).TinyTcp也包括⼀个简单的以太⽹驱动器⽤于3COM多总线卡。
选择⼀个开源协议栈可以从四个⽅⾯来考虑:
⼀个是是否提供易⽤的底层硬件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是⼀种挑战性的⼯作,它尚需完善.
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论