TCP/IP 协议栈 LwIP 的设计与实现
Design and Implementation of the LwIP
TCP/IP Stack
[瑞典]Adam Dunkels著
******@
翻译焦海波
marsstory99@
Swedish Institute puter Science
February 20, 2001
TCP/IP 协议栈 LwIP 的设计与实现- 1 -
摘要
LwIP 是 TCP/IP 协议栈的一个实现。它的目的是减少内存使用率和代码大小,使 LwIP 适
用于资源受限系统比如嵌入式系统。为了减少处理和内存需求,LwIP 使用不需要任何数据
复制的经过裁剪的 API。
本文描述了 LwIP 的设计与实现。描述了在协议栈实现中以及像内存与缓冲管理这样的
子系统中使用的算法和数据结构。本文还包括 LwIP 的参考手册以及使用 LwIP 的代码例子。
1 简介
最近几年,人们对计算机互联以及计算机无线网络支撑设备的兴趣一直不断的增长。计
算机逐渐与日常使用的设备无缝集成在了一起,并且价格一直在下降。与此同时,无线网络
技术比如蓝牙(Bluetooth)[HNI+98]及 IEEE WLAN[BIG+97]正逐渐的出现在人们
的视野中。这些新技术的出现,在许多诸如卫生保健、安全保密、运输及工业处理等领域提
供了一个非常诱人的应用前景。一些像传感器一类的轻便设备可以连入互联网,以便随时随
地进行监控。
在过去的近十年的时间里,互联网技术被证明拥有足够的灵活性以适应不断变化的网络
环境。从原始的 一类的低速网络发展起来的互联网,发展到今天,在带宽和误码率
方面拥有巨大差异的光纤连接技术已经使互联网实现了巨大的跨越。相当多的以互联网为基
础的应用技术被开发出来。因此,未来的无线网络——使用已经存在的互联网技术成为人们
的首选。同样,互联网在全球范围内的连通性也成为了人们选择它的动机之一。
一些轻便设备,比如在身体上使用的传感器,体积小而且便宜,内部的运算及存储资源
有限,因此就必须在资源受限的情况下实现及处理 协议。本文讲述的就是在这样
的条件下如何占用尽量少的资源实现一个轻型的 TCP/IP 协议栈,我们把该协议栈叫做 LwIP。
本文的章节安排是这样的:第 2、3、4 节对 LwIP 做一个总体上的描述,第 5 节是关于
操作系统模拟层的内容,第 6 节是内存和缓冲区管理,第 7 节介绍 LwIP 网络接口抽象层,
第 8、9、10 介绍 IP、UDP、TCP 协议的实现,第 11、12 节介绍如何与 LwIP 协议栈接口及
LwIP 提供的 API,第 13、14 节将分析协议栈的实现,第 15、16 节提供 LwIP API 的参考手
册,17、18 节提供例子代码。
2 协议层
TCP/IP 协议族以分层的方式设计,每一层分别解决通讯问题的一部分。设计实现协议
族——层可以提供指引,因为每一种协议可以被独立的实现。然而严格的按照分层的方式实
现协议族,会因为协议层之间的通讯造成总体性能下降。要解决这个问题,协议的某些内部
方面对其它协议来说应该可知,不过要注意的是,只有重要的信息在各层之间共享。
大部分的 TCP/IP 实现在应用层和底层协议层之间进行了严格的划分,而底层协议之间
却可以进行或多或少的交叉存取。在大部分的操作系统中,底层协议族作为拥有应用层进程
通讯入口的操作系统内核的一部分被实现。应用程序是 TCP/IP 实现的抽象表示,网络通讯
与进程间通讯和文件 I/O 没多少差别。这意味着,因为应用层不知道底层协议使用的缓冲机
制,那它就不能利用这些信息去做一些事情,比如,重新使用常用数据缓冲区。同样,当应
用层发送数据,在被网络代码处理之前,这些数据必须由应用层进程内存空间复制到内部缓
冲区。
像 LwIP 的目标系统这样的最小限度系统所使用的操作系统,通常不能在内核与应用层
进程之间维持一个严格的保护屏障。这就允许使用一种比较松散的通讯机制,通过共享内存
翻译焦海波 6/2/2006
TCP/IP 协议栈 LwIP 的设计与实现- 2 -
的方式实现应用层与底层协议族之间的通讯。特别的,应用层能够了解底层协议使用的缓冲
处理机制将使应用层可以更加有效的重复使用缓冲区。同样,既然应用层与网络代码可以使
用相同的内存区,那么应用层就可以直接读写内部缓冲区,从而避免了内存复制产生的性能
损失。
3 概览
与许多其它的 TCP/IP 实现
tcpip协议栈的设计与实现 来自淘豆网m.daumloan.com转载请标明出处.