lwIP――TCP/IP协议栈的一种实现
近来,自己重点关注于TCP/IP技术的原理及实现,也曾看过 Douglas E.Comer和David L.Stevens写的《Internetworking with TCP/IP》三卷本,但遗憾的是自己只是“看过”而不是“研读”过,对其中的原理只限于表面上的理解,而未曾深入或者研读实现的代码.幸运的是,我无意中找到国外一些对TCP/IP研究的论文,其中的lwIP算是一个基本的实现,对初学者深入了解TCP/IP应该有很大的帮助。因此,自己打算翻译一些关于lwIP的论文(介绍及实现等等),让自己能真正的理解该协议,也希望能给志同道合者一些帮助。由于自己是第一次翻译这类计算机科技文章,而自己的英语水平有限,还望见谅。
文章主要基于Adam Dunkels的《Design and Implemantation of the lwIP TCP/IP Stack》。以下是摘要和目录结构,希望自己能及时的翻译完这篇文章,并阅读其源代码。
摘要
lwIP是TCP/IP协议栈的一种实现,它注重减少内存使用量及代码大小,以便在像嵌入式系统这样的资源有限的小客户端系统中使用。为了减少处理及内存需求,lwIP使用裁剪后的API不要求任何的数据复制。
这篇文章描述了lwIP的设计及实现,包括协议实现及底层系统如内存及缓冲管理中所涉及到的算法及数据结构。同时,文章中也提供了lwIP API使用手册及使用lwIP的一些代码实例。
1 介绍
2 协议分层
3 概要
4 进程模型
5 操作系统仿真层
6 缓冲及内存管理
6.1 包缓冲区
6.2 内存管理
7 网络层接口
8 IP 处理
8.1 接受网络包
8.2 发送网络包
8.3 转发网络包
8.4 ICMP 处理
9 UDP处理
10 TCP 处理
10.1 概要
10.2 数据结构
10.3 序列号计算
10.4 队列及数据传输
10.4.1 糊涂窗口症避免
10.5 接收报文段
10.5.1多路转发(Demultiplexing)
10.5.2 接收数据
10.6 接受新连接
10.7 快速重传
10.8 定时器
10.9 往返时间估计
10.10 拥塞控制
11 协议栈接口
12 应用程序接口
12.1 基本思想
12.3 API的实现
13 代码统计分析
13.1 代码行数
13.2 目标代码大小
14 性能分析
15 API参考
15.1 数据类型
15.2 缓冲区函数
16 网络连接函数
17 BSD socket 库
18 代码实例
参考书目