第1部分 嵌入式协议栈μC/TCP-IP序言 1
前言 3
第1章 绪论 6
1.1 本书的组织结构 6
1.2 约定 6
1.3 各章节内容 7
第2章 网络简介 10
2.1 网络 10
2.2 什么是TCP/IP协议栈 12
2.3 OSI七层模型 13
2.4 TCP/IP与OSI模型的对应 15
2.5 出发点 18
2.6 第1层——物理层 19
2.7 第2层——数据链路层 19
2.8 第3层——网络层 21
2.9 第4层——传输层 23
2.10 第5~7层——应用层 23
2.11 总结 24
第3章 嵌入式TCP/IP:在实现中面临的挑战 27
3.1 评价指标 27
3.1.1 带宽 27
3.1.2 连通性 28
3.1.3 吞吐量 28
3.2 CPU 28
3.3 以太网控制器接口 29
3.3.1 零拷贝 31
3.3.2 数据校验和 32
3.3.3 占用空间 32
3.3.4 μC/TCP-IP代码占用空间 33
3.3.5 μC/TCP-IP附加选项代码占用空间 34
3.3.6 μC/TCP-IP数据占用空间 35
3.3.7 μC/TCP-IP附加选项代码空间 38
3.3.8 总结 39
第4章 LAN=以太网 41
4.1 拓扑结构 41
4.2 以太网硬件开发的注意事项 42
4.3 以太网控制器 43
4.3.1 自动协商 44
4.3.2 双工不匹配 46
4.4 以太网802.3帧格式 47
4.5 MAC地址 49
4.6 通信方式 50
4.6.1 单播 51
4.6.2 广播 51
4.6.3 组播 52
4.7 地址解析协议(ARP) 53
4.8 ARP数据包 57
4.9 总结 58
第5章 IP网络 60
5.1 协议簇 60
5.2 网际协议(IP) 63
5.3 寻址和路由 64
5.4 子网掩码 65
5.5 保留地址 66
5.6 寻址类型 67
5.6.1 单播地址 67
5.6.2 组播地址 67
5.6.3 广播地址 68
5.7 默认网关 68
5.8 IP配置 70
5.9 私有地址 71
5.10 总结 74
第6章 故障诊断 75
6.1 网络故障诊断 75
6.1.1 因特网信报控制协议(ICMP) 76
6.1.2 ping工具 78
6.1.3 Trace Route工具 80
6.2 协议和应用分析工具 84
6.2.1 网络协议分析仪 85
6.2.2 Wireshark 86
6.2.3 μC/IPerf 93
6.3 总结 96
第7章 传输协议 97
7.1 传输层协议 97
7.2 客户端/服务器架构 99
7.3 端口 100
7.4 UDP 103
7.5 TCP详解 105
7.6 TCP连接阶段 107
7.7 TCP序列化数据 108
7.8 TCP应答数据 110
7.9 TCP传输保证 111
7.10 TCP流量控制机制(拥塞控制) 114
7.10.1 Nagle算法 116
7.10.2 糊涂窗口综合症 117
7.11 TCP性能优化 118
7.11.1 多重连接 120
7.11.2 持续定时器 120
7.11.3 保持存活 122
7.12 总结 122
第8章 套接字 124
8.1 套接字的唯一性 125
8.2 套接字接口 126
8.3 套接字API 127
8.4 阻塞式和非阻塞式套接字 129
8.5 套接字应用 130
8.5.1 数据报套接字(UDP套接字) 130
8.5.2 流套接字(TCP套接字) 132
第9章 服务和应用 135
9.1 网络服务 136
9.1.1 动态主机配置协议(DHCP) 136
9.1.2 域名系统(DNS) 138
9.2 应用 141
9.3 应用性能 142
9.3.1 文件传输 143
9.3.2 超文本传输协议(HTTP) 145
9.3.3 远程登录协议(TELNET) 146
9.3.4 电子邮件 147
9.4 总结 150
第10章 μC/TCP-IP简介 151
10.1 可移植性 151
10.2 可扩展性 151
10.3 编码标准 151
10.4 MISRA C 152
10.5 安全性认证 152
10.6 实时操作系统(RTOS) 152
10.7 网络设备 153
10.8 μC/TCP-IP协议 153
10.9 应用协议 153
第11章 μC/TCP-IP架构 155
11.1 μC/TCP-IP模块关系 155
11.1.1 应用程序 155
11.1.2 μC/LIB库 157
11.1.3 BSD套接字API层 157
11.1.4 TCP/IP层 157
11.1.5 网络接口(IF)层 158
11.1.6 网络设备驱动层 158
11.1.7 物理(PHY)层 158
11.1.8 CPU层 159
11.1.9 实时操作系统(RTOS)层 159
11.2 任务模型 159
11.2.1 μC/TCP-IP任务和优先级 160
11.2.2 接收一个数据包 161
11.2.3 发送一个数据包 162
第12章 目录与文件 165
12.1 框图 165
12.2 应用程序代码 165
12.3 CPU 167
12.4 板级支持包BSP 168
12.5 网络板级支持包(NET_BSP) 169
12.6 μC/OS-III与CPU无关的源代码 170
12.7 μC/OS III与CPU相关的源代码 171
12.8 μC/CPU与CPU无关的源代码 172
12.9 μC/LIB可移植的库函数 173
12.10 μC/TCP-IP网络设备 174
12.11 μC/TCP-IP网络接口 175
12.12 μC/TCP-IP网络操作系统抽象层 176
12.13 μC/TCP-IP网络CPU相关代码 176
12.14 μC/TCP-IP网络CPU无关源代码 177
12.15 μC/TCP-IP网络安全管理的CPU无关源代码 178
12.16 总结 179
第13章 开始使用μC/TCP-IP 184
13.1 安装μC/TCP-IP 184
13.2 μC/TCP-IP示例工程 184
13.3 应用程序代码 185
第14章 网络设备驱动 192
14.1 μC/TCP-IP设备结构 192
14.2 设备驱动模型 192
14.3 MAC层设备驱动API 193
14.4 物理层的设备驱动 194
14.5 中断处理 195
14.5.1 NETDEV_ISR_HANDLER() 196
14.5.2 NETPHY_ISR_HANDLER() 198
14.6 接口、设备、物理层配置 199
14.6.1 回环配置 199
14.6.2 以太网MAC配置 201
14.6.3 以太网物理层配置 205
14.7 网络板级支持包 206
14.7.1 网络设备板级支持包 206
14.7.2 杂项网络BSP函数 208
14.8 内存分配 209
14.9 DMA支持 209
14.9.1 使用DMA接收 211
14.9.2 使用DMA发送 213
第15章 缓冲区管理 216
15.1 网络缓冲区 216
15.1.1 接收缓冲区 216
15.1.2 发送缓冲区 216
15.2 网络缓冲区结构 217
15.3 网络缓冲区大小 218
第16章 网络接口层 222
16.1 网络接口配置 222
16.1.1 添加网络接口 222
16.1.2 配置互联网协议地址 224
16.2 启动和停止网络接口 225
16.2.1 启动网络接口 225
16.2.2 停止网络接口 226
16.3 网络接口最大传输单元 226
16.3.1 获取网络接口最大传输单元 226
16.3.2 设置网络接口最大传输单元 226
16.4 网络接口硬件地址 227
16.4.1 获得网络接口硬件地址 227
16.4.2 设置网络接口硬件地址 228
16.5 获取链路状态 228
第17章 套接字编程 230
17.1 网络套接字数据结构 230
17.2 完整的SEND()操作 232
17.3 套接字应用程序 233
17.3.1 数据报套接字 234
17.3.2 流式套接字(TCP套接字) 238
17.4 加密套接字 244
17.5 2MSL 244
17.6 μC/TCP-IP套接字错误码 245
17.6.1 致命的套接字错误码 245
17.6.2 套接字错误码列表 245
第18章 定时器管理 246
第19章 调试管理 248
19.1 网络调试信息常量 248
19.2 网络调试监控程序 249
第20章 统计和错误计数器 250
20.1 统计 250
20.2 错误计数器 251
附录A μC/TCP-IP设备驱动API 252
A.1 MAC设备驱动函数 252
A.2 PHY设备驱动程序函数 268
A.3 设备驱动程序BSP函数 274
附录B μC/TCP-IP API参考 283
B.1 通用网络函数 283
B.2 网络应用程序接口函数 285
B.3 ARP函数 297
B.4 网络ASCII码函数 305
B.5 网络缓冲区函数 310
B.6 网络连接函数 316
B.7 网络调试函数 318
B.8 ICMP函数NetICMP_CfgTxSrcQuenchTh() 334
B.9 网络接口函数 335
B.10 IGMP函数 355
B.11 IP函数 357
B.12 网络安全函数 376
B.13 网络套接字函数 379
B.14 TCP函数 425
B.15 网络定时函数 435
B.16 UDP函数 436
B.17 通用网络功能函数 441
B.18 BSD函数 446
附录C μC/TCP-IP配置和优化 456
C.1 网络配置 456
C.2 调试配置 459
C.3 参数检查配置 460
C.4 网络计数器配置 461
C.5 网络定时器配置 461
C.6 网络缓冲区配置 462
C.7 网络接口层配置 462
C.8 ARP(地址解析协议)配置 463
C.9 IP配置 464
C.10 ICMP配置 465
C.11 IGMP配置NET_IGMP_CFG_MAX_NBR_HOST_GRP 465
C.12 传输层配置NET_CFG_TRANSPORT_LAYER_SEL 465
C.13 UDP配置 466
C.14 TCP配置 467
C.15 网络套接字配置 468
C.16 网络安全管理配置 471
C.17 BSD套接字配置NET_BSD_CFG_API_EN 473
C.18 网络应用接口配置NET_APP_CFG_API_EN 473
C.19 网络连接管理配置 474
C.20 应用相关配置 474
C.21 μC/TCP-IP优化 476
附录D μC/TCP-IP错误代码 478
D.1 网络错误代码 479
D.2 ARP错误代码 479
D.3 网络ASCⅡ错误代码 479
D.4 网络缓存错误代码 480
D.5 ICMP错误代码 480
D.6 网络接口错误代码 480
D.7 IP错误代码 481
D.8 IGMP错误代码 481
D.9 操作系统错误代码 482
D.10 UDP错误代码 482
D.11 网络套接字错误代码 482
D.12 网络安全管理错误代码 484
D.13 网络安全错误代码 484
附录E μC/TCP-IP典型应用 485
E.1 μC/TCP-IP配置和初始化 485
E.2 网络接口、设备和缓冲区 490
E.3 IP地址配置 498
E.4 套接字编程 500
E.5 μC/TCP-IP统计和调试 503
E.6 使用网络安全管理功能 505
E.7 其他 508
附录F 参考文献 509
附录G μC/TCP-IP许可政策 510
第2部分 基于STM32F107微控制器的应用序言 512
第1章 绪论 513
1.1 准备运行示例 513
1.2 μC/Probe 514
1.3 章节安排 514
第2章 安装 516
2.1 硬件 516
2.2 软件 517
2.3 下载本书所需的μC/TCP-IP工程 518
2.3.1 \EvalBoards 519
2.3.2 μC/CPU 522
2.3.3 μC/LIB 523
2.3.4 μC/OS-III 524
2.3.5 μC-IPerf 525
2.3.6 \μC-DHCPc-v2 525
2.3.7 \μC-HTTPs 525
2.3.8 \μC-TCPIP-v4 526
2.4 下载μC/Probe 526
2.5 下载IAR Embedded Workbench for ARM 527
2.6 下载Tera Term Pro 527
2.7 下载IPerf for Windows 528
2.8 下载Wireshark 528
2.9 下载STM32F107相关手册 529
第3章 μC/TCP-IP基本示例 530
3.1 μC/TCP-IP示例#1 530
3.1.1 示例工程是如何运行的 532
3.1.2 编译并下载应用 539
3.1.3 运行程序 540
3.1.4 使用Wireshark网络协议分析仪 544
3.1.5 使用μC/Probe监视变量 546
3.2 μC/TCP-IP示例#2 551
3.3 运行应用程序 556
3.3.1 显示IP地址参数 556
3.3.2 使用ping命令测试目标板的连通性 558
3.4 使用Wireshark可视化观察DHCP过程 558
3.5 μC/TCP-IP示例#3 560
3.6 运行应用 562
3.7 总结 564
第4章 μC/TCP-IP性能示例 565
4.1 μC/TCP-IP示例#4 565
4.1.1 如何使示例运行起来 566
4.1.2 运行应用 569
4.1.3 IPerf 569
4.1.4 Iperf on the PC 570
4.1.5 在目标板上运行μC/IPERF 571
4.2 使用μC/PROBE监视变量 573
4.3 μC/TCP-IP库的配置 579
4.4 UDP性能 582
4.4.1 将目标板用作服务器 583
4.4.2 将开发板用作客户端 584
4.4.3 UDP测试总结 585
4.5 TCP性能 585
4.5.1 将开发板用作服务器 585
4.5.2 将开发板用作客户端 586
4.6 TCP性能测试总结 587
4.7 使用Wireshark网络协议分析仪 587
4.7.1 TCP三次握手 588
4.7.2 TCP流控 588
4.7.3 错误的TCP接受窗口大小测试 589
4.8 总结 593
第5章 HTTP服务器示例 594
5.1 μC/TCP-IP示例#5 594
5.2 运行应用 602
5.3 总结 603
附录A 以太网驱动 604
附录B μC/TCP-IP许可政策 612