摘要
LwIP是一种TCP/IP协议栈的实现。LwIP协议栈专注于减少内存的使用和代码的大小,使LwIP适用于嵌入式系统中在有限的资源下能够使用小型的客户机。为了减少处理和内存的需求,LwIP使用裁剪过的API,并不需要任何数据都拷贝。
这个报告描述LwIP的设计与实现。算法和数据结构都用于协议的实现且描述了像内存和缓冲区管理系统的子系统。这个包括了LwIP参考API和使用LwIP的一些例子代码。
目录
2. 协议层
3. 概述
4. 流程模型
5. 操作系统模拟层
6. 缓冲区和内存管理
6.1 包缓冲——pbufs
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 多路调解
10.5.2 数据接收
10.6 新会话的接收
10.7 快速重发
10.8 定时器
10.9 来回的时间评估
10.10拥塞控制
11. 协议栈接口
12. 应用程序接口(API)
12.1 基本概念
12.2 API的实现
13. 统计代码分析
13.1 代码的行数
13.2 工程代码的大小
14. 执行分析
15. API参考
15.1数据类型
15.1.1 Netbufs
15.2缓冲函数
15.2.1 netbuf_new()
15.2.2 netbuf_delete()
15.2.3 netbuf_alloc()
15.2.4 netbuf_free()
15.2.5 netbuf_ref()
15.2.6 netbuf_len()
15.2.7 netbuf_data()
15.2.8 netbuf_next()
15.2.9 netbuf_first()
15.2.10netbuf_copy()
15.2.11netbuf_chain()
15.2.12netbuf_fromaddr()
15.2.13netbuf_fromport()
16. 网络连接函数
16.0.14netconn_new()
16.0.15netconn_delete()
16.0.16netconn_type()
16.0.17netconn_peer()
16.0.18netconn_addr()
16.0.19netconn_bind()
16.0.20netconn_connect()
16.0.21netconn_listen()
16.0.22netconn_accept()
16.0.23netvonn_recv()
16.0.24netconn_write()
16.0.25netconn_send()
16.0.26netconn_close()
17. BSD套接字库
17.1 套接字的描述
17.2 申请套接字
17.2.1 sokect()的调用
17.3 建立链接
17.3.1 bind()的调用
17.3.2 connect()的调用
17.3.3 listen()的调用
17.3.4 accept()的调用
17.4 数据的发送和接收
17.4.1 send()的调用
17.4.2 sendto()的调用
17.4.3 write()的调用
17.4.4 recv()的调用
17.4.5 recvfrom()和recvmsg()的调用
18. 例子代码
18.1 API的使用
18.2 直接地连接栈