第1章 简介 1
1.1 计算机网络的增长 1
1.2 网络系统的复杂性 1
1.3 克服复杂性 2
1.4 概念和术语 2
1.5 本书的结构 2
1.6 小结 3
第2章 动机与工具 4
2.1 简介 4
2.2 资源共享 4
2.3 Internet的增长 5
2.4 探测Internet 6
2.5 解释ping的响应 8
2.6 跟踪一个路由 9
2.7 小结 10
2.8 练习 10
第3章 网络编程与应用 12
3.1 简介 12
3.2 网络通信 12
3.3 客户-服务器计算 12
3.4 通信模式 13
3.5 一个应用编程接口的例子 13
3.6 一个简单的API调用过程 14
3.7 API的定义 15
3.7.1 await_contact函数 15
3.7.2 make_contact函数 15
3.7.3 appname_to_appnum 函数 15
3.7.4 cname_to_comp函数 16
3.7.5 send函数 16
3.7.6 recv和recvln函数 16
3.7.7 send_eof 函数 16
3.7.8 API 类型总结 17
3.8 回声(echo)应用程序代码 17
3.8.1 回声服务器代码实例 18
3.8.2 回声客户代码实例 19
3.9 一个聊天(chat)应用程序代码 22
3.9.1 聊天服务器代码示例 23
3.9.2 聊天客户代码实例 25
3.10 Web应用程序代码 27
3.10.1 Web客户代码实例 28
3.10.2 Web服务器代码实例 29
3.11 小结 34
3.12 练习 34
第1部分 数 据 传 输
第4章 传输介质 36
4.1 简介 36
4.2 铜缆 36
4.3 玻璃纤维 38
4.4 无线电 38
4.5 卫星 38
4.6 地球同步卫星 39
4.7 低地球轨道卫星 40
4.8 低地球轨道卫星阵列 40
4.9 微波 41
4.10 红外线 41
4.11 激光 41
4.12 小结 42
4.13 练习 42
第5章 本地异步通信(RS-232) 43
5.1 简介 43
5.2 异步通信的需求 43
5.3 用电流发送比特 43
5.4 通信标准 44
5.5 波特率. 帧与出错 46
5.6 全双工异步通信 47
5.7 实际硬件的限制 48
5.8 硬件带宽与比特传输 49
5.9 噪声对通信的影响 49
5.10 定理对数据网络的意义 50
5.11 小结 50
5.12 练习 51
第6章 远距离通信(载波. 调制和调制解调器) 52
6.1 简介 52
6.2 远距离发送信号 52
6.3 用于调制和解调的调制解调器硬件 54
6.4 租用模拟数据线路 55
6.5 光. 无线电频率和拨号调制解调器 56
6.6 载波频率和多路复用 57
6.7 基带和宽带技术 58
6.8 波分多路复用 59
6.9 扩展频谱 59
6.10 时分多路复用 60
6.11 小结 60
6.12 练习 61
第2部分 包 传 输
第7章 包. 帧和错误检测 62
7.1 简介 62
7.2 包的概念 62
7.3 包和时分多路复用 64
7.4 包和硬件帧 64
7.5 字节填充 66
7.6 传输错误 67
7.7 奇偶位和奇偶校验 67
7.8 概率. 数学和错误检测 68
7.9 使用校验和检测错误 69
7.10 使用循环冗余校验检测错误 70
7.11 模块连接 71
7.12 突发错误 72
7.13 帧格式和错误检测机制 72
7.14 小结 73
7.15 练习 74
第8章 局域网技术及网络拓扑 76
8.1 简介 76
8.2 直接的点对点通信 76
8.3 共享通信信道 78
8.4 局域网的重要性和引用的本地性 78
8.5 LAN的拓扑结构 79
8.5.1 星形拓扑 79
8.5.2 环形拓扑 80
8.5.3 总线形拓扑 80
8.5.4 存在多种拓扑结构的原因 81
8.6 总线网实例:以太网 81
8.6.1 以太网的历史 81
8.6.2 以太网传输与曼彻斯特编码 82
8.6.3 以太网上的共享 83
8.7 载波侦听多路访问网(CSMA) 83
8.8 带有CSMA/CD的冲突检测与回退 84
8.9 802.11无线局域网和CSMA/CA 85
8.10 总线网络的另一个实例:LocalTalk 86
8.11 环形网实例:IBM令牌环 87
8.12 环形网的另一个实例:FDDI 88
8.13 星形网实例:ATM 90
8.14 小结 91
8.15 练习 92
第9章 硬件编址与帧类型识别 94
9.1 简介 94
9.2 指定接收者 94
9.3 局域网硬件如何使用地址来过滤包 95
9.4 物理地址的格式 96
9.5 广播 97
9.6 组播 98
9.7 组播编址 99
9.8 标识包的内容 99
9.9 帧头和帧格式 100
9.10 帧格式的一个例子 100
9.11 不使用自标识帧的网络 102
9.12 网络分析仪. 物理地址和帧类型 103
9.13 小结 105
9.14 以太网地址分配 106
9.15 练习 106
第10章 局域网布线. 物理拓扑和接口硬件 107
10.1 简介 107
10.2 局域网和计算机的速度 107
10.3 网络接口硬件 108
10.4 网络接口卡与网络间的连接 109
10.5 早期的粗线以太网布线 110
10.6 连接多路复用 111
10.7 细线以太网布线 112
10.8 双绞线以太网 113
10.9 布线方案的优缺点 114
10.10 拓扑矛盾 116
10.11 网络接口卡和布线方案 116
10.12 布线方案和其他网络技术 117
10.13 小结 118
10.14 练习 119
第11章 扩展局域网:光纤调制解调器. 中继器. 网桥和交换机 120
11.1 简介 120
11.2 距离限制与局域网设计 120
11.3 光纤扩展 121
11.4 中继器 122
11.5 网桥 124
11.6 帧过滤 124
11.7 桥接网络的启动和达到稳定状态的动作 126
11.8 设计一个桥接网络 126
11.9 建筑物间的桥接 127
11.10 跨越长距离的桥接 127
11.11 桥接环路 129
11.12 分布式生成树 130
11.13 交换 130
11.14 交换机与集线器的组合 131
11.15 用于其他技术的桥接和交换 132
11.16 小结 132
11.17 练习 133
第12章 长距离数字连接技术 134
12.1 简介 134
12.2 数字电话 134
12.3 同步通信 135
12.4 数字电路与DSU/CSU 136
12.5 电话标准 137
12.6 DS术语与数据速率 137
12.7 小容量电路 138
12.8 中等容量的数字电路 139
12.9 大容量电路 139
12.10 光载波标准 140
12.11 后缀C 140
12.12 同步光网络(SONET) 141
12.13 本地用户回路 142
12.14 ISDN 142
12.15 非对称数字用户线路技术 143
12.16 其他DSL技术 145
12.17 电缆调制解调器技术 146
12.18 上流通信 147
12.19 混合光纤同轴 148
12.20 光纤到路边 148
12.21 特殊情况下的替代方案 149
12.22 广播卫星系统 149
12.23 小结 150
12.24 练习 151
第13章 广域网技术和路由 152
13.1 简介 152
13.2 大型网络和广域 152
13.3 分组交换机 153
13.4 构建广域网 153
13.5 存储转发 154
13.6 广域网内的物理编址 155
13.7 下一跳转发 155
13.8 源无关 156
13.9 分层地址与路由的关系 157
13.10 广域网内的路由 157
13.11 默认路由的使用 159
13.12 路由表计算 159
13.13 计算图中最短路径 160
13.14 分布式路由计算 161
13.15 距离向量路由 162
13.16 链路状态路由(SPF) 163
13.17 广域网技术实例 164
13.17.1 ARPANET 164
13.17.2 X.25 164
13.17.3 帧中继 164
13.17.4 SMDS 165
13.17.5 ATM 165
13.18 小结 165
13.19 练习 166
第14章 面向连接的网络与ATM 167
14.1 简介 167
14.2 单一全球网络 167
14.3 ISDN与ATM 168
14.4 ATM的设计与信元 168
14.5 面向连接的服务 169
14.6 VPI/VCI 170
14.7 标签和标签交换 170
14.8 通过ATM网络通信的一个例子 171
14.9 永久虚电路 172
14.10 交换虚电路 173
14.11 服务质量 173
14.12 采用信元和标签交换的动机 174
14.12.1 信元与分组的对比 174
14.12.2 标签交换与路由的对比 175
14.13 ATM数据传输与AAL5 175
14.14 对ATM的批评 175
14.15 小结 177
14.16 练习 177
第15章 网络特性:所有权. 服务模式与性能 178
15.1 简介 178
15.2 网络所有权 178
15.2.1 专用网络 178
15.2.2 公共网络 179
15.3 私密性与公共网络 179
15.4 优点与缺点 179
15.5 虚拟专用网 180
15.6 保证绝对私密性 181
15.7 服务模式 181
15.8 面向连接服务模式 182
15.8.1 连续的通信和突发的通信 182
15.8.2 单工和全双工连接 182
15.8.3 连接持续时间与永久性 182
15.8.4 服务保证 182
15.8.5 流接口或消息接口 182
15.9 无连接服务模式 183
15.10 内部和外部服务模式 183
15.11 服务模式的对比 183
15.12 服务模式的实例 184
15.13 地址与连接标识符 184
15.14 网络性能特性 185
15.14.1 延迟 185
15.14.2 吞吐量 186
15.14.3 延迟和吞吐量之间的关系 186
15.14.4 延迟-吞吐量乘积 187
15.15 抖动 188
15.15.1 等时网络 188
15.15.2 异步网络 188
15.16 小结 188
15.17 练习 189
第16章 协议与分层 190
16.1 简介 190
16.2 协议需求 190
16.3 协议组 191
16.4 一个协议设计方案 191
16.5 七层 192
16.6 栈:分层软件 193
16.7 分层软件如何工作 194
16.8 多重嵌套头部 194
16.9 分层的科学基础 195
16.10 协议使用的技术 195
16.10.1 无序传送的序列化 196
16.10.2 删除复制数据包的序列化 197
16.10.3 重传丢失的数据包 197
16.10.4 避免因过多延迟造成的重播(replay) 198
16.10.5 防止数据溢出的流控制 198
16.10.6 避免网络拥塞的机制 201
16.11 协议设计的艺术 202
16.12 小结 203
16.13 练习 203
第3部分 网 络 与 连
第17章 网络互连:概念. 体系结构和协议 205
17.1 简介 205
17.2 网络互连的原因 205
17.3 通用服务的概念 205
17.4 异构系统中的通用服务 206
17.5 网络互连 206
17.6 使用路由器的物理网络连接 207
17.7 互连网体系结构 207
17.8 实现通用服务 208
17.9 虚拟网络 208
17.10 网络互连协议 209
17.11 网络互连和TCP/IP重要性 210
17.12 分层和TCP/IP协议 210
17.13 主机. 路由器和协议层 211
17.14 小结 212
17.15 练习 212
第18章 IP:网际协议地址 214
18.1 简介 214
18.2 虚拟互连网地址 214
18.3 IP编址模式 215
18.4 IP地址的层次 215
18.5 最初的IP地址类 216
18.6 地址类的计算 217
18.7 点分十进制表示法 218
18.8 类和点分十进制表示法 219
18.9 地址空间的划分 219
18.10 地址权威 220
18.11 类编址的例子 220
18.12 子网和无类编址 221
18.13 地址掩码 222
18.14 CIDR表示法 223
18.15 CIDR地址块的例子 223
18.16 CIDR主机地址 224
18.17 特殊的IP地址 224
18.17.1 网络地址 225
18.17.2 直接广播地址 225
18.17.3 受限广播地址 225
18.17.4 本机地址 225
18.17.5 回送地址 225
18.18 特殊IP地址小结 226
18.19 伯克利广播地址形式 226
18.20 路由器和IP编址原则 227
18.21 多宿主机 228
18.22 小结 228
18.23 练习 229
第19章 绑定协议地址(ARP) 230
19.1 简介 230
19.2 协议地址和数据包传送 230
19.3 地址解析 231
19.4 地址解析技术 232
19.5 表查找的地址解析 232
19.6 使用closed-form 计算的地址解析 234
19.7 使用消息交换的地址解析 234
19.8 地址解析协议(ARP) 236
19.9 ARP消息传送 236
19.10 ARP消息格式 237
19.11 发送一个ARP消息 238
19.12 标识ARP帧 238
19.13 缓存ARP应答 239
19.14 处理到来的ARP消息 239
19.15 分层. 地址解析. 协议地址 240
19.16 小结 240
19.17 练习 241
第20章 IP数据报和数据报转发 242
20.1 简介 242
20.2 无连接服务 242
20.3 虚拟数据包 242
20.4 IP数据报 243
20.5 转发IP数据报 244
20.6 IP地址和路由表项 245
20.7 掩码字段和数据报转发 246
20.8 目标和下一跳地址 246
20.9 尽力而为的传送 247
20.10 IP数据报头格式 247
20.11 小结 248
12.12 练习 249
第21章 IP封装. 分片和重组 250
21.1 简介 250
21.2 数据报传输和帧 250
21.3 封装 250
21.4 在互连网上的传输 251
21.5 MTU, 数据报大小和封装 252
21.6 重组 253
21.7 标识数据报 254
21.8 片段丢失 254
21.9 将片段再次分片 255
21.10 小结 255
21.11 练习 256
第22章 未来的IP(IPv6) 257
22.1 简介 257
22.2 IP的成功 257
22.3 改变的原因 258
22.4 名称和版本号 258
22.5 IPv6的特点 259
22.6 IPv6数据报格式 259
22.7 IPv6基本头格式 260
22.8 IPv6如何处理多个头部 261
22.9 分片. 重组和path MTU 262
22.10 多个头部的目的 263
22.11 IPv6编址 264
22.12 IPv6冒号十六进制表示法 265
22.13 小结 265
22.14 练习 266
第23章 错误报告机制(ICMP) 267
23.1 简介 267
23.2 尽力而为的语法和错误检测 267
23.3 互连网控制消息协议 268
23.4 ICMP消息传输 270
23.5 使用ICMP消息检测可到达性 271
23.6 使用ICMP跟踪路由 271
23.7 由traceroute输出的最后地址 272
23.8 ICMP 用于path MTU发现 273
23.9 小结 274
23.10 练习 274
第24章 TCP:可靠传输服务 275
24.1 简介 275
24.2 可靠传输的需求 275
24.3 传输控制协议 275
24.4 TCP提供给应用程序的服务 276
24.5 端到端服务和数据报 276
24.6 可靠性 277
24.7 数据包的丢失和重新传送 278
24.8 自适应重新传送 279
24.9 重新传送次数的比较 279
24.10 缓冲区. 流控制和窗口 280
24.11 3次握手 281
24.12 拥塞控制 282
24.13 TCP数据段的格式 283
24.14 小结 283
24.15 练习 284
第25章 Internet路由 285
25.1 简介 285
25.2 静态与动态路由 285
25.3 主机的静态路由和默认路由 285
25.4 动态路由和路由器 286
25.5 全球Internet路由 288
25.6 自治系统概念 288
25.7 Internet路由协议的两种类型 289
25.7.1 内部网关协议(IGP) 289
25.7.2 外部网关协议(EGP) 289
25.7.3 何时使用EGP和IGP 289
25.7.4 最优路由. 路由度量和IGP 290
25.8 路由和数据流量 291
25.9 边界网关协议(BGP) 291
25.10 路由信息协议(RIP) 292
25.11 RIP数据包格式 293
25.12 开放最短路径优先协议(OSPF) 294
25.13 OSPF示例图 295
25.14 OSPF区域 295
25.15 组播路由 296
25.15.1 IP组播语义 296
25.15.2 IGMP 297
25.15.3 转发和发现技术 297
25.15.4 组播协议 298
25.16 小结 299
25.17 练习 300
第4部分 网 络 应 用
第26章 客户-服务器交互 301
26.1 简介 301
26.2 应用软件提供的功能 301
26.3 互连网提供的功能 302
26.4 取得联系 302
26.5 客户-服务器模式 303
26.6 客户和服务器的特点 303
26.7 服务器程序和服务器级计算机 304
26.8 请求. 响应和数据流方向 304
26.9 传输协议和客户-服务器交互 304
26.10 一台计算机上的多种服务 305
26.11 标识某一特定的服务 306
26.12 提供单一服务的多个服务器拷贝 306
26.13 动态服务器创建 307
26.14 传输协议和确定通信 307
26.15 面向连接和无连接传输 308
26.16 多协议均可到达的服务 308
26.17 复杂的客户-服务器交互 309
26.18 交互和环形依赖 309
26.19 小结 310
26.20 练习 310
第27章 套接字接口 311
27.1 简介 311
27.2 应用程序接口 311
27.3 套接字API 311
27.4 套接字和套接字库 312
27.5 套接字通信和UNIX I/O 313
27.6 套接字. 描述字和网络I/O 313
27.7 参数和套接字API 314
27.8 实现套接字API的过程 314
27.8.1 socket过程 314
27.8.2 close过程 315
27.8.3 bind过程 315
27.8.4 listen过程 316
27.8.5 accept过程 317
27.8.6 connect过程 317
27.8.7 send, sendto和sendmsg过程 318
27.8.8 recv, recvfrom和recvmsg过程 319
27.9 使用套接字读和写 320
27.10 其他套接字过程 320
27.11 套接字. 线程和继承 320
27.12 小结 321
27.13 练习 322
第28章 客户和服务器例子 323
28.1 简介 323
28.2 面向连接的通信 323
28.3 一个服务例子 323
28.4 例子程序的命令行参数 324
28.5 套接字过程调用顺序 324
28.6 客户例子的代码 325
28.7 服务器例子的代码 328
28.8 流服务和多个recv调用 331
28.9 套接字过程和阻塞 332
28.10 代码大小和错误报表 332
28.11 使用另一种服务检测客户例子 333
28.12 使用另一个客户检测服务器例子 333
28.13 小结 334
28.14 练习 334
第29章 域名系统的命名 336
29.1 简介 336
29.2 计算机名称的结构 336
29.3 地理结构 338
29.4 组织中的域名 338
29.5 DNS客户-服务器模型 339
29.6 DNS服务器层次结构 340
29.7 服务器结构 341
29.8 引用的本地化和多服务器 342
29.9 服务器之间的链接 342
29.10 名称解析 343
29.11 DNS性能优化 344
29.12 DNS入口的类型 345
29.13 使用CNAME类型的别名 345
29.14 多类型的重要性 346
29.15 缩写与DNS 346
29.16 小结 347
29.17 练习 347
第30章 电子邮件表示和传输 349
30.1 简介 349
30.2 电子邮件范型 349
30.3 电子邮箱和地址 349
30.4 电子邮件消息格式 350
30.5 副本拷贝 352
30.6 通用因特网邮件扩展 353
30.7 电子邮件和应用程序 354
30.8 邮件传输 354
30.9 简单邮件传输协议 355
30.10 一台计算机上的多接收者优化 355
30.11 邮件查看. 列表和转发 356
30.12 邮件网关 357
30.13 自动邮件列表 358
30.14 邮件中继和电子邮件地址 358
30.15 邮箱存取 359
30.16 拨号连接和POP 360
30.17 小结 361
30.18 练习 362
第31章 文件传输和远程文件存取 363
31.1 简介 363
31.2 数据传输和分布式计算 363
31.3 存储中间结果 363
31.4 通用文件传输 364
31.5 交互式和批处理传输模式 364
31.6 文件传输协议 365
31.7 FTP通用模式和用户接口 365
31.8 FTP命令 366
31.9 连接. 认证和文件存取权限 367
31.10 匿名文件存取 367
31.11 双向文件传输 368
31.12 文件名称的通配符 368
31.13 文件名转换 369
31.14 改变目录和列表内容 369
31.15 文件类型和传输模式 370
31.16 使用FTP的例子 370
31.17 详细输出 373
31.18 FTP中的客户-服务器交互 373
31.19 控制和数据连接 373
31.20 数据连接和文件的结束 374
31.21 普通文件传输协议 375
31.22 网络文件系统 375
31.23 小结 376
31.24 练习 377
第32章 万维网页面和浏览 378
32.1 简介 378
32.2 浏览器界面 378
32.3 超文本和超媒体 378
32.4 文档表示 379
32.5 HTML格式和表现 379
32.6 HTML格式标记的例子 381
32.7 头部 381
32.8 列表 382
32.9 在Web页中嵌入图像 383
32.10 标识一个网页 383
32.11 从一个文档指向另一个文档的超文本链接 384
32.12 客户-服务器交互 385
32.13 Web文档传输和HTTP 385
32.14 浏览器结构 387
32.15 可选客户 388
32.16 Web浏览器的缓存 389
32.17 HTTP对缓存的支持 390
32.18 替代的传输协议 390
32.19 其他标记语言 391
32.20 小结 391
32.21 练习 392
第33章 动态Web文档技术(CGI,ASP,JSP,PHP,ColdFusion) 394
33.1 简介 394
33.2 Web文档的三种基本类型 394
33.3 每种文档类型的优缺点 395
33.4 动态文档实现 396
33.5 CGI标准 396
33.6 一个CGI程序的输出 397
33.7 CGI程序例子 398
33.8 参数和环境变量 399
33.9 状态信息和cookie 400
33.10 带有长期状态信息的CGI脚本 401
33.11 带有短期状态信息的CGI脚本 402
33.12 表单和交互 404
33.13 服务器端脚本技术 405
33.14 小结 406
33.15 练习 407
第34章 主动Web文档技术(Java, JavaScript) 408
34.1 简介 408
34.2 用于不断更新的一种早期形式 408
34.3 主动文档和服务器负载 409
34.4 主动文档的表示和转换 409
34.5 Java技术 411
34.6 Java 编程语言 411
34.6.1 语言特点 411
34.6.2 类似于C++ 412
34.7 Java 运行时环境 412
34.8 Java库 413
34.9 图形工具包 414
34.10 在特定计算机上使用Java图形 415
34.11 Java解释器和浏览器 416
34.12 编译Java程序 416
34.13 Applet例子 417
34.14 调用Applet 419
34.15 与浏览器交互的例子 419
34.16 错误和异常处理 421
34.17 JavaScript技术 421
34.18 替代 423
34.19 小结 423
34.20 练习 424
第35章 RPC和中间件 426
35.1 简介 426
35.2 客户和服务器编程 426
35.3 远程过程调用模式 427
35.4 RPC模式 428
35.5 通信存根 429
35.6 外部数据表示 430
35.7 中间件和面向对象中间件 431
35.7.1 ONC RPC 432
35.7.2 DCE RPC 432
35.7.3 MSRPC 432
35.7.4 CORBA 432
35.7.5 MSRPC2 433
35.7.6 COM/DCOM 433
35.8 小结 433
35.9 练习 434
第36章 网络管理(SNMP) 435
36.1 简介 435
36.2 管理Internet 435
36.3 隐匿失败的危险 436
36.4 网络管理软件 436
36.5 客户. 服务器. 管理者和代理 436
36.6 简单网络管理协议 437
36.7 获取-存储模式 438
36.8 MIB和对象名称 438
36.9 各种不同的MIB变量 439
36.10 对应于数组的MIB变量 439
36.11 小结 440
36.12 练习 440
第37章 网络安全 441
37.1 简介 441
37.2 安全网络和策略 441
37.3 安全涉及的方面 442
37.4 责任和控制 442
37.5 完整性机制 443
37.6 存取控制和口令 443
37.7 加密和机密性 443
37.8 公钥加密 444
37.9 数字签名认证 445
37.10 Internet防火墙 445
37.11 包过滤 447
37.12 使用包过滤创建防火墙 448
37.13 虚拟专用网 448
37.14 封装 450
37.15 小结 451
37.16 练习 451
第38章 初始化(配置) 452
38.1 简介 452
38.2 引导 452
38.3 启动协议软件 452
38.4 协议参数 453
38.5 协议配置 453
38.6 需要配置的条目示例 454
38.7 配置例子:使用磁盘文件 454
38.8 自动协议配置的需求 455
38.9 自动协议配置方法 455
38.10 用于发现地址的地址 456
38.11 引导中使用的协议序列 457
38.12 引导协议(BOOTP) 457
38.13 自动地址分配 459
38.14 动态主机配置协议(DHCP) 460
38.15 DHCP的优化 461
38.16 DHCP消息格式 461
38.17 DHCP和域名 462
38.18 小结 462
38.19 练习 463
附录1 网络术语和缩略语 464
附录2 ASCII字符集 503
附录3 点分十进制表示法的地址掩码 504
附录4 本书光盘的使用 506
附录5 在家里建立一个带有NAT的网络 511
附录6 Purdue大学网络实验室