首页>参考读物>计算机科学与技术>计算机网络

嵌入式系统 Web 服务器:TCP/IP Lean
作者 : Jeremy Bentham
译者 : 陈向群
出版日期 : 2003-05-01
ISBN : 7-111-11808-1
定价 : 59.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 484
开本 : 16开
原书名 : TCP/IP Lean Web Servers for Embedded Systems, 2E
原出版社: CMP Books
属性分类: 店面
包含CD :
绝版 : 已绝版
图书简介

本书是一本讲述TCP/IP网络的实用书籍。全书详细介绍了一个带有嵌入式Web服务器的小型TCP/IP协议栈,并给出了该协议栈独立于平台的源代码,这些源代码可以在嵌入式应用中使用。除此之外,书中还介绍了TCP/IP协议的一些基本原理,并通过一些实用工具加深对TCP/IP协议栈的理解。
  本书不仅适合作为计算机专业学生学习网络知识的教材和教师参考用书,而且也适用于研究网络技术的专业人员。
  了解到TCP/IP协议的内部工作原理
  学习联网和客户/服务器的关键技术
  实现动态内容生成和客户/服务器的数据传输能力  
  亲自体验用网络连接的PC和微控制器探索和扩展专业人员编写的软件
  如何从最底层开始编写协议
  使用一系列强大的实用工具加快网络开发

图书前言

Lean计划
  这是一本讲述TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/网际协议)网络的实用书籍。你可以浏览这本书了解TCP/IP的概貌,也可以详细研究其中的某个部分,但是要想从中最大程度地获益,建议你建立自己的网络并实际试验书中提供的软件。
如果时间再早一点,我会给你详细介绍什么是因特网、它是如何让计算机之间通过TCP/IP协议簇传递信息的。现在,因特网已经进入了我们生活的方方面面,所以完全没有必要再介绍它了。但是一本关于TCP/IP的实用技术书还是非常必要的,因为因特网看上去如此庞大,这对于那些想理解其内部机制的人来说是一个很大的障碍。
  我第一次试图实现TCP时不是很成功。看完了它的规范后,我曾想,“并不算太麻烦嘛。”又看了一些能够找到的公开领域的源代码,我认为它们写得太复杂了,然后我写了自己的实现。当我测试它时,问题马上出现了:找不到合适的测试软件。每当发现问题时,我不能确定引起错误的原因是测试工具、被测试的软件,还是我对规范的错误理解。
  我需要下面这些东西:
  * 一个我能理解的实现:不是一个在大型多用户操作系统中的实现,而是在一个小巧的系统中能够清楚体现其内在原理的实现。
  * 我能使用的软件:这是指可以用来检查对协议的理解和实现的测试工具。
时光流逝,我的TCP/IP软件逐渐变得成熟,而Web技术也变得越来越重要了。我在工业界中的客户可以在家里或者办公室浏览网页,使用Web浏览器来控制和监视工业设备的优点显而易见。TCP成了一个传输网页的工具。这时问题的关键从“我要在系统上实现TCP/IP”变成了“我要让系统能生成网页”,而且这些网页总是包括动态的实时数据。
  历史总是惊人的相似,用来产生动态网页的软件都是为大型多用户操作系统设计的,我找不到可以在简单的、低成本的嵌入式硬件上使用的小型实现。这时我需要的是:
  * 对在网页中插入动态数据这类技术的说明。
  * 可以根据项目的特点进行调整的简单而且平台无关的代码。
在实现了很多小型的Web服务器(通常是在拥有64K ROM的80188处理器上)后,我很高兴听到有一个在微控制器上的256字节的实现,尽管我失望地发现它只能从ROM中产生静态页面,没有动态数据。我想知道:
  * 在微控制器上实现TCP和Web服务器需要做什么折衷。
  * 用什么技术可以在网页中插入动态数据。
  几乎是凑巧,这本书的第1版包括了一个运行在PICmicroㄉ系男⌒蚖eb服务器。我不是第一个创建这种服务器的人,但我是第一个把所使用技术包括全部源代码出版的。第一次的成功驱使我继续更新这本书以扩展PICmicro上支持的网络和协议的范围。除了本书标题中提到的“Web服务器”外,还有很多种在网络间传输数据的方法,我想提供使用这些方法的例子。
  我衷心希望你可以在本书中找到你想要的答案。
  嵌入式系统
  尽管你在日常生活中每天都在使用嵌入式系统,但是“嵌入式系统”对你来说仍然可能是比较陌生的词语,需要做一些解释。微波炉、电视机、汽车、电梯和飞机都是用计算机控制的,它们不一定有显示屏、键盘和硬盘。计算机可能在你不知道的情况下控制着你的汽车:发动机管理系统从加速器接收信号并产生控制发动机的输出。
  这些计算机嵌入在系统中,可能只是系统的一个小部件。嵌入式系统的设计者必须在尺寸、重量、能耗、震动、湿度和电磁干扰的严格控制下工作,除这些之外,还要考虑成本和可靠性。针对嵌入式系统的操作,PC体系结构已进行了调整,各个供应商也提供了各种不同的单板计算机(SBC),包括用来处理现实世界信号的各种必需的附加卡。对微控制器微型化的极限是在一个单独的芯片上实现一个完整的计算机,包括各种必需的I/O接口。
  除了用户界面,大部分嵌入式系统还有一个用来进行状态监控和系统诊断的外部界面。传统上这是用串口终端的形式实现的,但在工业中逐渐发现了远程诊断的好处。因为Web浏览器广泛使用,所以它是用户界面的合理选择。从技术上讲,浏览器就是Web客户端,这就意味着嵌入式系统必须是Web服务器,本书的标题就是因此而来。
  不管你是不是嵌入式系统开发者,我相信你会对本书中很多地方感兴趣,我会讨论:
  * 需要什么软件部件;
  * 这些部件如何工作;
  * 清晰而简单的实现;
  * 有效的测试策略。
  简单和清晰很值得考虑。现在的编程工具包非常有用,因为它们可以简化复杂的编程任务,但这也造成代码臃肿,需要更复杂的硬件来支持,在这些方面你可能会输给竞争对手—因此Lean计划产生了。
  硬件
  在写作本书时,虽然PC硬件平台很容易过时,但不应轻易忽略。二手市场里到处都是各种完全可以使用的计算机,这些计算机没有使用最新最快的技术,但对普通人来说已经够用了。还有低成本的工业单板机,它们拥有个人计算机的内核,标准的网络接口和有能力接收各种现实世界信号的接口卡。
我的软件可以在所有PC兼容设备上运行,稍加修改后甚至可以在与个人计算机不兼容的设备(例如80188处理器)上运行,因为我已经把所有依赖于硬件和操作系统的代码分离出来了。
除了个人计算机上的代码外,我还包括了一个小型的TCP/IP协议栈和一个在PICmicro微控制器上使用Custom   Computer Service PCM C编译器的Web服务器。你可以手工修改标准的PICmicro测试板,加入适当的外围设备(前提是有电路图),或者购买现成的电路板。我没有说这个软件可以很容易地移植到其他处理器上,但书中深入分析了与微控制器具体实现产品相关的各种困难,在你使用其他处理器时,它能给你很好的入门帮助。
网络
  10兆以太网仍然在广泛使用,可以从零售商那里花很少的钱买到完整的工具,包括网卡和网线。我的软件支持其中两种最流行的以太网卡—Novell NE2000兼容卡和3COM 3C509网卡,虽然(如果使用Boland编译器)可以通过包驱动接口支持其他网卡,但使用直接硬件接口的方法更合适,因为这样更容易进行试验和调试。
在开发网络软件时,我强烈建议你使用一个和其他网络完全隔离的单独网络,这样不仅使调试变得更容易,而且避免了扰乱其他网络通信。一个小小的改动可能会造成网络通信量的显著增加,并对其他网络用户造成干扰。这一点我已经警告过你了!
  这个软件也支持通过SLIP(Serial Line Internet Protocol,串行线路网际协议)串口连接,两台通过交叉线连接起来的计算机也可以在一定程度上代替真的网络来使用。
  操作系统
你可能会奇怪我如此忽略了操作系统,在嵌入式系统市场上,总是有很大的压力要简化硬件,减少成本,而做到这一点的一种方法就是尽量使用最简单的操作系统,或者根本不用操作系统。
对那些执着于复杂操作系统和对复杂软件开发环境更感兴趣的人,刚开始可能是不太舒服的体验,因为你要面对的是直接在硬件上编程。然而,我希望你很快能够喜欢这种方法的强大、灵活和简单,并逐渐认识到那些常用的复杂应用程序和操作系统(即使是免费的操作系统)是很奢侈的。尽管奢侈,我还是使用了我的台式计算机进行开发,所以这个软件是与Windows 95和98兼容的,可以在DOS、DOS扩展模式或Win32控制台应用程序模式下运行。
  我主要的开发系统是一台装有Windows 95的机器,上面安装了两块网卡,其中只有一个是安装在操作系统中的。这非常有用,因为这台机器可以同时作为网络客户端(使用标准的Web浏览器)和服务器(使用我的Web服务器),使得试验很简单。
  最终的目标机器可以是相对便宜的运行DOS的单板机,或是和PC代码兼容的没有安装操作系统的微控制器,但后者可能需要对所提供的软件做一些小小的改动。
  开发环境
  这个软件支持下列4个PC编译器:
  Borland C++ v3.1  基于Dos的编译器,带有集成开发环境。
  Borland(Inprise)C++ v4.52  基于Windows的编译器,可能是能生成Dos可执行文件的最新版本。
  Microsoft Visual C++ v6  基于Windows的编译器,可以生成Win32控制台程序。
带有RHIDE v1.4的DJGPP v2.02  GNU工程的一部分,这是Borland 3.1开发环境的一个很好的克隆,运行在32位DOS扩展模式下,可以免费下载。
  Borland编译器虽然好像已经过时了,但还是可以在一些C语言编程教科书的随书光盘中找到,也可能捆绑在它们的32位更高版本中。高层软件可以使用所有这些环境编译,但对低层的网络接口代码就没这么幸运了。
  * Borland编译器最容易使用,因为它们不需要插入机器代码就允许中断,所以可以支持所有的网络接口。
  * 使用Microsoft的编译器,可以支持网卡和SLIP接口,但不支持数据包驱动程序接口。
  * 使用DJGPP编译器时只支持直接网卡接口。
直接网络接口是最容易调试的,因此更适合用来进行试验,它的限制不像看起来那么多。
如果你喜欢的编译器不在上面的列表中,我为这个疏忽而道歉,但不大可能再加进去,因为加入每个编译器都需要大量的调试,但我倾向于减少而不是增加支持的编译器的数量。如果你的编译器和上述的某个类似(例如,一个更早的版本),你几乎不用做什么工作,但我不能对我没有试验过的编译器做出评论。
  PICmicro编译器
  早期的软件使用Custom Computer Service(CCS)PCM v2.693,但后来的开发与PIC16XXX和PIC18XXX系列的CCS和Hitech编译器广泛兼容。关于兼容性的讨论不在本章范围内。参考附录D和软件的版本说明可以获得更多的信息。
  软件
  本书的附带光盘中包含了所有的源代码以方便进行试验。然而,作者保留这些软件的全部版权,它们只能和本书一起发布,例如,你不得把任何源代码发布到因特网上,或者通过摘取其中部分代码或修改版权说明来篡改它的著作权。
如果你想出售包含该软件的产品,对每个商业产品都需要“加入”该软件的许可。这通常会采用一次付款的方式,允许对从本软件产生的可执行代码进行不受限制的合成,没有额外的开发费用(除了购买本书的费用)。为了鼓励商业使用,许可费用也很低。全部的细节和软件更新可以从Iosoft 有限公司的网站www.iosoft.co.uk获得。
  感谢
  作者向CMP Books出版社的Berney Williams对本书表现出的热情表示感谢;对Anthony Winter的审阅和建议表示感谢;对Acrom控制系统有限公司的Glen Middleton和Io 有限公司的Adrian Nicol给予的硬件上的支持表示感谢;除此之外,对Jane McSweeney(现在是Jane Bentham)持续的热情支持表示感谢。

作者简介

Jeremy Bentham:暂无简介

译者简介

陈向群:暂无简介

图书目录

第1章  导论 1
1.1  Lean计划 1
1.2  入门 1
1.2.1  网络配置 2
1.2.2  编译器配置 3
1.2.3  其他PICmicroū嘁肫 3
1.3  软件介绍 4
1.4  网络硬件 4
1.4.1  串行硬件特征 5
1.4.2  网络硬件特征 5
1.5  设备驱动程序 6
1.5.1  串行驱动程序要求 6
1.5.2  以太网驱动程序要求 8
1.5.3  通用的驱动程序函数 10
1.6  配置文件格式 11
1.7  处理计时器 12
1.8  状态机 15
1.9  缓冲 18
1.9.1  FITO缓冲区 18
1.9.2  多边形缓冲区 24
1.10  编码约定 25
1.10.1  数据类型 25
1.10.2  源代码格式 26
第2章  协议介绍:SCRATCHP 29
2.1  概述 29
2.2  协议 29
2.3  SCRATCHP服务 31
2.4  逻辑连接 33
2.4.1  打开和关闭连接 33
2.4.2  连接中的数据流 33
2.5  数据包的格式 35
2.6  寻址 39
2.7  协议标识 40
2.7.1  多路技术和缓冲 40
2.7.2  字节交换 41
2.8  接收和发送 41
2.9  实现 45
2.9.1  ident命令 45
2.9.2  连接 49
2.10  小结 63
2.10.1  源文件 63
2.10.2  SCRATCHP 工具 64
第3章  网络寻址和调试 65
3.1  概述 65
3.2  互联网 65
3.3  IP地址 67
3.4  地址解析 68
3.4.1  SLIP寻址 68
3.4.2  以太网寻址 68
3.5  ARP扫描器 70
3.5.1  实现 70
3.5.2  节点 71
3.5.3  命令行处理 71
3.5.4  配置文件和网络初始化 73
3.5.5  主循环 74
3.5.6  数据包检查和格式化 75
3.6  在网络调试中使用ARPSCAN 76
3.6.1  协议分析器 77
3.6.2  示波器 78
3.6.3  NETMON网络监视器 79
3.7  以太网2 81
3.8  IEEE 802.3网络 82
3.8.1  802.3 SNAP支持 83
3.8.2  802.3 SNAP的操作 84
3.9  小结 84
3.9.1  源文件 85
3.9.2  ARPSCAN工具 85
3.9.3  NETMON工具 86
第4章  网络接口:IP和ICMP 87
4.1  概述 87
4.2  TCP/IP栈 87
4.2.1  IP数据报 88
4.2.2  IP报文头 91
4.2.3  IP的实现 92
4.3  ICMP 100
4.4  ping实现 102
4.4.1  主程序 103
4.4.2  传输函数 106
4.4.3  接收函数 107
4.4.4  发送方地址 109
4.4.5  ping 操作 110
4.5  路由器实现 111
4.5.1  接口 111
4.5.2  路由算法 113
4.5.3  主循环 118
4.5.4  路由动作 118
4.6  小结 120
4.6.1  源文件 120
4.6.2  ping工具 121
4.6.3  路由器工具 121
第5章  用户数据报协议:UDP 123
5.1  概述 123
5.2  端口和套接字 123
5.2.1  知名端口 124
5.2.2  套接字 125
5.3  数据报格式 125
5.4  UDP校验和 127
5.4.1  伪IP头 127
5.4.2  使UDP校验和失效 128
5.5  UDP工具 129
5.5.1  实现 129
5.5.2  使用datagram工具进行试验 136
5.6  小结 138
5.6.1  源文件 138
5.6.2  datagram工具 139
第6章  传输控制协议:TCP 141
6.1  概述 141
6.2  TCP概念 141
6.2.1  序列号和确认号 143
6.2.2  TCP状态机 146
6.2.3  段格式 150
6.2.4  TCP选项 152
6.3  TCP实现 153
6.3.1  TCP状态 153
6.3.2  段的接收和传输 153
6.3.3  套接字数据 157
6.3.4  序列和确认值 158
6.3.5  TCP状态机 159
6.3.6  接收段的多路输出选择器 168
6.3.7  重新传输 169
6.4  TCP应用—Telnet 171
6.4.1  网络虚拟终端—NVT 171
6.4.2  选项协商 171
6.5  Telnet的实现 172
6.5.1  TCP回调 173
6.5.2  Telnet客户端初始化 173
6.5.3  主循环 175
6.5.4  关闭连接 176
6.5.5  轮询 177
6.5.6  Telnet显示 177
6.5.7  Telnet客户端回调 178
6.5.8  Telnet服务器回调 179
6.6  使用Telnet 181
6.6.1  daytime协议 181
6.6.2  丢弃数据帧 183
6.7  小结 185
6.7.1  源文件 185
6.7.2  Telent工具 186
第7章  超文本传输协议:HTTP 187
7.1  概述 187
7.2  HTTP中的GET方法 187
7.2.1  请求 187
7.2.2  应答 188
7.2.3  内容类型 189
7.2.4  文件扩展名 190
7.3  简单Web 服务器 190
7.3.1  Web服务 190
7.3.2  HTTP头测试 195
7.4  HTML介绍 196
7.4.1  HTML标签 196
7.4.2  HTML文档 197
7.4.3  可点击的文件目录 198
7.4.4  实现 199
7.4.5  缓冲区溢出 203
7.5  状态机实现 203
7.5.1  图形表格 206
7.5.2  堆叠的图形化数据 209
7.5.3  图形化指示器 210
7.6  小结 212
7.6.1  源文件 212
7.6.2  Webserve工具 213
第8章  嵌入式网关接口:EGI 215
8.1  概述 215
8.2  交互显示 215
8.2.1  开关和电灯 215
8.2.2  开关和电灯组 216
8.3  标准CGI接口 220
8.3.1  Linux CGI 220
8.3.2  DOS嵌入式网关接口 222
8.4  EGI实现 225
8.4.1  应用相关代码 225
8.4.2  URL解码 228
8.4.3  查找EGI处理程序 230
8.4.4  交互式的开关和电灯 233
8.4.5  交互式模拟控制 237
8.5  小结 241
8.5.1  源文件 241
8.5.2  WEB_EGI工具 242
第9章  微型Web服务器设计 243
9.1  概述 243
9.2  微控制器的软件开发 243
9.3  硬件 244
9.3.1  PIC16C76/16F876 244
9.3.2  外存储器 246
9.3.3  网络接口 246
9.4  开发环境 247
9.4.1  编译器 247
9.4.2  模拟器或调试器 247
9.5  软件技巧 248
9.5.1  RAM的限制 248
9.5.2  校验和 249
9.5.3  数据接收 249
9.5.4  阻塞 250
9.6  Web服务器协议 251
9.6.1  HTTP请求 251
9.6.2  HTTP应答 252
9.6.3  TCP 252
9.6.4  IP 258
9.6.5  ICMP 259
9.6.6  SLIP 260
9.6.7  调制解调器驱动程序 260
9.7  小结 261
第10章  PICmicroㄎ⒖刂破魃系腡CP/IP 263
10.1  概述 263
10.2  外围设备 263
10.2.1  外存储器 263
10.2.2  数字输出 264
10.2.3  温度传感器 264
10.2.4  数字输入 265
10.2.5  实时时钟 265
10.3  块图 265
10.4  电路图 266
10.5  低层软件 267
10.5.1  CPU标识 267
10.5.2  数据类型 268
10.5.3  串行驱动程序 268
10.5.4  I2C驱动程序 269
10.5.5  并行I/O 271
10.5.6  计时器 272
10.6  SLIP和IP驱动程序 273
10.6.1  SLIP接收 273
10.6.2  SLIP传输 276
10.6.3  调制解调器模拟 279
10.6.4  协议解析 279
10.6.5  IP接收 285
10.6.6  IP传输 287
10.7  ICMP 288
10.7.1  ICMP接收 288
10.7.2  ICMP传输 289
10.7.3  pinging PWEB 290
10.8  TCP 290
10.8.1  TCP接收 291
10.8.2  TCP传输 293
10.8.3  TCP序列发生器 293
10.8.4  daytime服务 295
10.9  小结 297
第11章  PWEB:PICmicro上的小型Web服务器 299
11.1  概述 299
11.2  Web服务器 299
11.2.1  简单文本服务器 300
11.2.2  TCP事务日志 302
11.3  ROM文件系统 303
11.3.1  E2ROM访问周期 303
11.3.2  文件系统结构 304
11.3.3  E2ROM编程 305
11.3.4  在ROM中寻找一个文件 310
11.3.5  改进后的HTTP处理程序 314
11.4  使用PWEB服务器 315
11.5  动态内容 317
11.5.1  变量置换 317
11.5.2  校验和平衡 318
11.5.3  平衡变量 319
11.6  动态网页 320
11.6.1  HTML表单变量 323
11.6.2  数字输出 325
11.6.3  布尔变量置换 326
11.6.4  数字输入 327
11.6.5  PWEB变量置换代码 328
11.6.6  状态页 329
11.7  小结 331
11.7.1  PWEB 331
11.7.2  WEBROM源文件 331
11.7.3  WEBROM 工具 331
第12章  ChipWeb—微型以太网Web服务器 333
12.1  概述 333
12.2  硬件 333
12.2.1  演示板 333
12.2.2  以太网硬件 334
12.2.3  微控制器接口 336
12.2.4  LCD接口 336
12.2.5  其他外部设备 337
12.3  以太网驱动程序 338
12.3.1  NIC初始化 338
12.3.2  访问数据包缓冲区 339
12.3.3  数据包接收 341
12.3.4  数据包分析 342
12.3.5  数据包传输 344
12.4  LCD驱动程序 345
12.4.1  LCD数据传输 345
12.4.2  LCD初始化 347
12.4.3  LCD字符 347
12.5  其他驱动程序 348
12.6  协议 349
12.6.1  地址解析协议:ARP 349
12.6.2  网际协议:IP 350
12.6.3  网际控制消息协议:ICMP 351
12.6.4  传输控制协议:TCP 352
12.6.5  超文本传输协议:HTTP 356
12.7  协议调试 359
12.8  用户接口 360
12.8.1  动态网页:HTML 360
12.8.2  状态显示框架 361
12.8.3  导航框架 362
12.8.4  LCD显示 364
12.9  配置 365
12.9.1  地址配置 366
12.9.2  网页下载 367
12.10  小结 370
第13章  点对点通信协议:PPP 373
13.1  概述 373
13.2  PPP设计 373
13.2.1  分帧 374
13.2.2  检错 374
13.2.3  转义序列 375
13.2.4  协商 375
13.3  协议的部件 376
13.3.1  部件报文头 376
13.3.2  选项格式 377
13.3.3  状态机 378
13.4  PPP协商实例 380
13.4.1  LCP 380
13.4.2  PAP 382
13.4.3  IPCP 383
13.4.4  IP数据 385
13.4.5  关闭连接 385
13.5  PPP实现 386
13.5.1  接收和传输 386
13.5.2  消息解码 389
13.6  小结 392
第14章  UDP客户端、服务器和快速数据传输 393
14.1  概述 393
14.2  客户端-服务器网络 393
14.3  对等网 394
14.4  不只是Web服务器 395
14.5  缓冲改进 395
14.5.1  阴影缓冲区 395
14.5.2  缓冲边界 396
14.5.3  接收缓冲的实现 397
14.5.4  传输缓冲实现 400
14.6  IP和ICMP处理 402
14.6.1  IP处理程序 402
14.6.2  ICMP处理程序 403
14.7  UDP服务器 405
14.7.1  daytime和echo服务器 405
14.7.2  UDP 传输 407
14.8  UDP时间客户端 408
14.8.1  UDP客户方法 408
14.8.2  客户端地址解析 409
14.8.3  客户端UDP消息 412
14.9  快速数据传输 413
14.10  硬件 414
14.10.1  视频标准 415
14.10.2  视频捕获 415
14.10.3  微控制器接口 416
14.11  软件 417
14.11.1  数据格式 417
14.11.2  微控制器软件 418
14.11.3  客户端软件 419
14.12  小结 422
第15章  动态主机配置协议:DHCP 425
15.1  概述 425
15.2  DHCP方法论 425
15.2.1  操作的序列 425
15.2.2  计时 426
15.2.3  消息格式 427
15.2.4  选项 428
15.2.5  客户名称 428
15.3  事务示例 430
15.3.1  探查 430
15.3.2  赋予 430
15.3.3  请求 431
15.3.4  确认 432
15.4  DHCP实现 433
15.4.1  状态机 433
15.4.2  DHCP传输 435
15.4.3  DHCP接受 437
15.5  小结 439
第16章  TCP客户端、SMTP和POP3邮件 441
16.1  概述 441
16.2  TCP客户端技术 441
16.2.1  二级NIC传输缓冲区 442
16.2.2  NIC RAM的分配 442
16.2.3  以太网驱动程序的更改 443
16.3  TCP 客户端实现 445
16.3.1  套接字定义 445
16.3.2  启动 446
16.3.3  接收处理程序 447
16.3.4  状态机 448
16.3.5  超时 451
16.3.6  传输 453
16.4  SMTP 邮件客户端 453
16.4.1  SMTP事务 453
16.4.2  SMTP实现 456
16.4.3  开始邮件传输 458
16.5  POP3邮件客户端 459
16.5.1  POP3事务 459
16.5.2  POP3行缓冲 461
16.5.3  POP3实现 462
16.5.4  开始邮件轮询 465
16.6  小结 465
附录A  配置说明 467
附录B  资源 471
附录C  光盘上的软件 475
附录D  PICmicroㄏ喙匚侍 481

教学资源推荐
作者: 常晋义 何世明 赵秀兰
作者: 孔祥杰 万良田 夏锋 编著
作者: (美)James F. Kurose; Keith W. Ross 著   马萨诸塞大学阿默斯特分校  纽约大学理工学院
作者: 李向丽 李磊 陈静 等
参考读物推荐
作者: (美)David Josephsen 著
作者: 大学霸IT达人 编著
作者: Greg Holden
作者: 谢型果 等著