第一部分 网络基础 2
第1章 协议和分层 2
1.1 本书中的网络 3
1.1.1 网络设备的远程访问 5
1.1.2 传输文件到路由器 7
1.1.3 命令行界面和图形用户界面 7
1.1.4 Ethereal和数据包的捕获 9
1.1.5 第一次探索网络 10
1.2 协议 10
1.2.1 标准和组织 11
1.2.2 征求意见稿和互联网工程任务组 12
1.3 互联网的管理 14
1.4 分层 15
1.4.1 简单组网 16
1.4.2 协议分层 17
1.5 TCP/IP协议族 17
1.5.1 TCP/IP参考模型分层 18
1.5.2 协议和接口 19
1.5.3 封装 20
1.6 TCP/IP分层 21
1.6.1 物理层 21
1.6.2 数据链路层 22
1.6.3 网络层 24
1.6.4 传输层 26
1.6.5 应用层 28
1.6.6 会话支持 28
1.6.7 内部表示转换 29
1.6.8 TCP/IP中的应用程序 29
1.7 TCP/IP协议族 30
1.8 留给读者的问题 31
第2章 TCP/IP协议和设备 32
2.1 网络的协议栈 32
2.2 分层、协议、端口和套接字 34
2.3 TCP/IP协议栈 36
2.4 客户端-服务器模型 37
2.5 TCP/IP协议层和客户端-服务器 37
2.6 IP层 39
2.7 传输层 39
2.7.1 传输控制协议 40
2.7.2 用户数据报协议 40
2.8 应用层 40
2.9 网桥、路由器和交换机 41
2.9.1 局域网分段 41
2.9.2 网桥 42
2.9.3 路由器 43
2.9.4 局域网交换机 43
2.9.5 虚拟局域网 44
2.9.6 VLAN帧标签 45
2.10 留给读者的问题 46
第3章 网络链路技术 47
3.1 示例网络的连接 47
3.1.1 显示以太网流量 49
3.1.2 显示SONET链路 50
3.1.3 显示DSL链路 52
3.1.4 显示无线链路 54
3.1.5 帧和链路层 56
3.2 数据链路层 56
3.3 以太网的演进 58
3.3.1 Ethernet Ⅱ和IEEE 802.3帧 59
3.3.2 MAC地址 60
3.4 数字用户线(DSL)的演进 61
3.4.1 点到点协议(PPP)和数字用户线(DSL) 62
3.4.2 PPP成帧 62
3.4.3 DSL封装 63
3.4.4 DSL构成 63
3.5 同步光纤网络(SONET)的演进 65
3.5.1 网络错误的说明 65
3.5.2 基于SONET/SDH的分组封装 66
3.6 无线局域网和IEEE 802.11 67
3.6.1 WiFi 67
3.6.2 IEEE802.11 MAC层协议 68
3.6.3 IEEE 802.11帧 70
3.7 留给读者的问题 71
第二部分 核心协议 74
第4章 IPv4和IPv6寻址 74
4.1 IP寻址 74
4.2 网络/主机边界 79
4.3 IPv4地址 79
4.3.1 IPv4私有地址 82
4.3.2 理解IPv4地址 83
4.4 IPv6地址 84
4.4.1 IPv6地址的特征 84
4.4.2 IPv6地址类型和表示方法 85
4.4.3 IPv6地址前缀 86
4.5 子网划分和超网划分 86
4.5.1 IPv4中的子网划分 87
4.5.2 子网划分基础 87
4.5.3 CIDR和VLSM 90
4.6 IPv6寻址细节 92
4.6.1 IP地址分配 94
4.7 留给读者的问题 96
第5章 地址解析协议 97
5.1 ARP和局域网 99
5.2 ARP报文 104
5.3 ARP操作案例 105
5.4 ARP的变种 107
5.4.1 代理ARP协议 107
5.4.2 反向地址解析协议 108
5.4.3 广域网的ARP协议 108
5.5 ARP和IPv6 109
5.5.1 邻居发现协议 109
5.5.2 ND地址解析 110
5.6 留给读者的问题 111
第6章 IPv4和IPv6头部 112
6.1 分组头部和地址 112
6.2 IPv4分组头部 115
6.3 分片和IPv4 117
6.3.1 分片和最大传输单元 119
6.3.2 分片和重组 120
6.3.3 路径MTU的确定 120
6.4 一个分片的例子 120
6.4.1 IPv4的局限 122
6.4.2 IPv6头部结构 122
6.5 IPv4头部和IPv6头部的比较 124
6.5.1 IPv6头部改动 125
6.6 IPv6和分片 126
6.7 留给读者的问题 128
第7章 网际控制报文协议 129
7.1 ICMP和ping 131
7.2 ICMP消息格式 134
7.2.1 ICMP消息字段 134
7.2.2 ICMP类型字段和代码字段 135
7.3 ICMP消息的发送 139
7.3.1 必须发送ICMP的情况 139
7.3.2 不能发送ICMP的情况 139
7.4 ping 140
7.5 traceroute 140
7.6 路径MTU 141
7.7 ICMPv6 143
7.7.1 基本的ICMPv6消息 143
7.7.2 邻居发现和自动配置 144
7.7.3 路由和邻居发现 145
7.7.4 接口地址 145
7.7.5 邻居请求和宣告 145
7.8 留给读者的问题 146
第8章 路由 147
8.1 路由器和路由表 147
8.2 主机和路由表 150
8.3 直接和间接交付 153
8.3.1 路由选择 156
8.3.2 没有路由的直接交付 156
8.3.3 间接交付和路由器 157
8.4 留给读者的问题 160
第9章 IP分组转发 161
9.1 路由器架构 165
9.1.1 基本的路由架构 165
9.1.2 另一种路由器架构 167
9.2 路由器访问 168
9.2.1 控制台端口 169
9.2.2 辅助端口 169
9.2.3 网络 169
9.3 转发表查找 170
9.4 双栈、隧道和IPv6 171
9.4.1 双协议栈 171
9.4.2 隧道 172
9.5 隧道机制 173
9.6 为过渡所做的考虑 174
9.7 留给读者的问题 175
第10章 用户数据报协议 176
10.1 UDP端口和套接字 176
10.2 UDP用来做什么 181
10.3 UDP包头 181
10.4 IPv4和IPv6的注意事项 182
10.5 端口号 183
10.5.1 熟知端口 183
10.5.2 套接字 186
10.6 UDP操作 186
10.7 UDP溢出 187
10.8 留给读者的问题 187
第11章 传输控制协议 189
11.1 TCP与连接 189
11.2 TCP头部 191
11.3 TCP的机制 193
11.4 连接和三次握手 194
11.4.1 连接建立 195
11.4.2 数据传输 196
11.4.3 关闭连接 197
11.5 流量控制 198
11.5.1 TCP的窗口 199
11.5.2 流量控制和拥塞控制 199
11.6 性能算法 200
11.7 TCP和FTP 201
11.8 留给读者的问题 203
第12章 多路复用和套接字 204
12.1 层和应用 204
12.2 套接字接口 206
12.2.1 套接字库 207
12.2.2 TCP流服务调用 207
12.3 套接字接口:是好还是坏 208
12.3.1 原始套接字的“威胁” 208
12.3.2 套接字库(不同操作系统) 209
12.4 Windows套接字接口 210
12.4.1 TCP/IP和Windows 210
12.4.2 Windows的套接字 210
12.5 基于Linux的套接字 211
12.6 留给读者的问题 216
第三部分 路由和路由协议 218
第13章 路由和对等节点 218
13.1 网络层路由和交换 218
13.2 面向连接的和无连接的网络 220
13.2.1 服务质量 221
13.3 主机路由表 223
13.3.1 路由表和FreeBSD 223
13.3.2 路由表和RedHat Linux 224
13.3.3 路由和Windows XP 225
13.4 互联网和自治域系统 226
13.5 当今的互联网 227
13.6 路由策略的作用 229
13.7 对等节点 230
13.8 选择一个对等节点 232
13.9 留给读者的问题 233
第14章 内部网关协议:RIP,OSPF和IS-IS 234
14.1 内部路由协议 240
14.2 3个主要的IGP 240
14.3 路由信息协议 241
14.3.1 距离向量路由协议 241
14.3.2 链路断开 242
14.3.3 距离向量的问题 242
14.3.4 RIPv1 243
14.3.5 RIPv2 244
14.3.6 为IPv6设计的RIPng 246
14.4 关于IGRP和EIGRP的介绍 248
14.4.1 开放最短路径优先 249
14.4.2 链路状态与最短路径 249
14.4.3 OSPF可以做什么 250
14.4.4 OSPF路由器类型及区域 251
14.4.5 OSPF指定路由器和备份指定路由器 253
14.4.6 OSPF数据报文 253
14.4.7 用于IPv6的OSPFv3 254
14.5 中间系统到中间系统 254
14.5.1 IS-IS的吸引力 255
14.5.2 IS-IS与OSPF 255
14.5.3 OSPF与IS-IS的相似之处 255
14.5.4 OSPF与IS-IS的区别 256
14.5.5 用于IPv6的IS-IS 257
14.6 留给读者的问题 257
第15章 边界网关协议 259
15.1 BGP作为路由协议 259
15.1.1 配置BGP 261
15.1.2 路由策略的能力 262
15.2 BGP与互联网 264
15.2.1 EGP与早期互联网 264
15.2.2 BGP的产生 265
15.3 BGP作为一种路径向量协议 265
15.4 IBGP与EBGP 266
15.4.1 IGP下一跳与BGP下一跳 267
15.4.2 BGP与内部网关协议 267
15.5 其他BGP协议 269
15.6 BGP属性 269
15.7 BGP与路由策略 271
15.7.1 BGP扩张 271
15.8 BGP消息类型 271
15.9 BGP消息格式 272
15.9.1 打开消息 272
15.9.2 更新消息 273
15.9.3 通知消息 274
15.10 留给读者的问题 274
第16章 组播 276
16.1 初识IPv4组播传输协议 278
16.2 组播术语 279
16.3 密集型组播和稀疏型组播 281
16.4 关于组播的一些特殊标记 281
16.5 组播概念 281
16.5.1 逆向路径转发 282
16.5.2 RPF表 282
16.5.3 填充RPF表 282
16.5.4 最短路径树 283
16.5.5 汇聚点和汇聚点共享树 283
16.6 组播协议 284
16.6.1 组播主机和路由器 284
16.6.2 组播组成员协议 285
16.6.3 组播路由协议 286
16.6.4 任意源组播和SSM 287
16.6.5 组播源发现协议 287
16.6.6 帧和组播 288
16.6.7 IPv4组播地址 289
16.6.8 IPv6组播地址 290
16.6.9 PIM-SM 291
16.6.10 资源预留协议和PGM 292
16.6.11 组播路由协议 293
16.6.12 IPv6组播 294
16.7 留给读者的问题 295
第17章 MPLS和IP交换 296
17.1 融合什么 298
17.1.1 快速分组交换 299
17.1.2 帧中继 299
17.1.3 异步传输模式 301
17.1.4 为什么还是走到了TCP/IP的局面 303
17.2 MPLS 303
17.2.1 MPLS术语 306
17.2.2 信令和MPLS 307
17.2.3 标签栈 308
17.2.4 MPLS和VPN 308
17.2.5 MPLS表 309
17.3 用静态LSP配置MPLS 309
17.3.1 入口路由器 309
17.3.2 转接路由器 310
17.3.3 出口路由器 310
17.3.4 traceroute和LSP 311
17.4 留给读者的问题 312
第三部分 应用层 314
第18章 动态主机配置协议 314
18.1 DHCP和地址分配 314
18.1.1 DHCP服务器配置 316
18.1.2 路由器中继代理配置 317
18.1.3 在LAN2上获取地址 318
18.1.4 在网络上使用DHCP 320
18.2 BOOTP 320
18.2.1 BOOTP的实现 321
18.2.2 BOOTP消息 321
18.2.3 BOOTP中继代理 322
18.2.4 BOOTP“厂商特定区”选项 323
18.3 简单文件传输协议 323
18.3.1 TFTP消息 324
18.3.2 TFTP下载 325
18.3.3 DHCP 325
18.3.4 DHCP操作 326
18.3.5 DHCP消息类型选项 328
18.4 DHCP和路由器 328
18.4.1 DHCPv6 328
18.4.2 DHCPv6和路由宣告 329
18.4.3 DHCPv6操作 329
18.5 留给读者的问题 330
第19章 域名系统 331
19.1 DNS基础 331
19.1.1 DNS体系结构 333
19.1.2 根域名服务器 333
19.1.3 根服务器的操作 334
19.1.4 根服务器详情 334
19.2 理论上的DNS:域名服务器、数据库、解析器 335
19.2.1 增加一个新的主机 335
19.2.2 递归和迭代请求 336
19.2.3 委派及查询 336
19.2.4 胶水记录 338
19.3 实践中的DNS:资源记录和消息格式 338
19.3.1 DNS消息头 340
19.3.2 DNSSec 341
19.3.3 DNS工具:nslookup、dig和host 341
19.4 DNS实例 342
19.5 留给读者的问题 348
第20章 文件传输协议 350
20.1 综述 350
20.1.1 PORT和PASV 352
20.2 FTP和GUIS 354
20.2.1 FTP基础 357
20.2.2 FTTP命令与应答码 357
20.2.3 FTP数据传输 359
20.2.4 被动模式和端口 360
20.2.5 文件传输类型 362
20.2.6 FTP出错 362
20.3 FTP命令 363
20.3.1 变种技术 365
20.3.2 关于NFS 365
20.4 留给读者的问题 366
第21章 简单邮件传输协议和邮件 367
21.1 电子邮件的架构 367
21.1.1 如今的邮件发送 370
21.1.2 电子邮件的演进简史 373
21.1.3 SMTP认证 373
21.1.4 简单邮件传输协议 374
21.2 多用途互联网邮件扩展 376
21.2.1 MIME媒体类型 376
21.2.2 MIME编码 376
21.2.3 MIME消息的样例 377
21.3 使用POP3访问电子邮件 378
21.4 电子邮件及其头部 379
21.5 家庭办公室的邮件 381
21.6 留给读者的问题 382
第22章 超文本传输协议 383
22.1 HTTP的实现 383
22.1.1 统一资源 386
22.1.2 URI(统一资源标识符) 387
22.1.3 URL(统一资源定位符) 387
22.1.4 URN(统一资源名称) 389
22.2 HTTP 390
22.2.1 HTTP的演进 390
22.2.2 HTTP模型 392
22.2.3 HTTP消息 392
22.3 TRAILERS和动态Web页面 393
22.3.1 HTTP请求和应答 393
22.3.2 HTTP方法 394
22.3.3 HTTP状态码 395
22.3.4 HTTP头部 395
22.3.5 一般头部 395
22.3.6 请求头部 396
22.3.7 应答头部 397
22.3.8 实体头部 397
22.3.9 cookie 397
22.4 留给读者的问题 399
第23章 安全套接字与SSL 400
23.1 SSL与网站 400
23.1.1 安全锁 404
23.1.2 安全套接字层 404
23.2 隐私性、完整性以及认证 405
23.2.1 隐私性 405
23.2.2 完整性 405
23.2.3 认证 406
23.3 公钥加密 407
23.3.1 在客户端用便携式计算器加密 407
23.3.2 例子 407
23.3.3 用便携式计算器在服务器上解码 408
23.4 公钥与对称加密 409
23.5 SSL协议 409
23.5.1 SSL协议栈 409
23.5.2 SSL会话建立 410
23.5.3 SSL数据传输 411
23.5.4 SSL实现 411
23.5.5 SSL的不足与争议 412
23.5.6 TLS 1.1的注意事项 413
23.5.7 SSL与证书 413
23.6 留给读者的问题 413
第五部分 网络管理 416
第24章 简单网络管理协议 416
24.1 SNMP功能 416
24.2 SNMP模型 421
24.2.1 MIB库和SMI 422
24.2.2 SMI 422
24.2.3 MIB 424
24.2.4 RMON 425
24.2.5 私有MIB 426
24.3 SNMP操作 426
24.3.1 SNMPv2增强 429
24.3.2 SNMPv3 430
24.4 留给读者的问题 430
第六部分 安全 432
第25章 Secure Shell(远程访问) 432
25.1 使用SSH 432
25.1.1 SSH基础 434
25.1.2 SSH功能 435
25.1.3 SSH架构 436
25.1.4 SSH密钥 436
25.1.5 SSH协议的操作 437
25.1.6 传输层协议 438
25.1.7 认证协议 440
25.1.8 连接协议 440
25.1.9 文件传输协议 441
25.2 SSH的使用 443
25.3 留给读者的问题 448
第26章 基于MPLS的虚拟专用网 449
26.1 PPTP的隐私性 451
26.1.1 VPN的种类 451
26.1.2 安全性和VPN 452
26.1.3 VPN和协议 453
26.1.4 PPTP协议 454
26.1.5 L2TP协议 454
26.1.6 PPTP和L2TP的对比 455
26.2 基于MPLS的VPN的类型 455
26.2.1 三层VPN(L3VPN) 456
26.2.2 二层VPN(L2VPN) 457
26.3 VPLS:基于MPLS的L2VPN 458
26.3.1 每个路由器的VPLS配置 459
26.4 配置真的起作用吗 462
26.5 留给读者的问题 463
第27章 网络地址转换 464
27.1 使用NAT 464
27.1.1 NAT的优点和缺点 466
27.1.2 4种类型的NAT 466
27.2 实施NAT 471
27.3 留给读者的问题 473
第28章 防火墙 474
28.1 防火墙的工作 474
28.1.1 一种路由器数据包过滤器 474
28.1.2 路由器上的状态检测 477
28.2 防火墙的类型 480
28.2.1 数据包过滤 480
28.2.2 应用代理 480
28.2.3 状态检测 480
28.2.4 DMZ 481
28.3 留给读者的问题 483
第29章 IP安全 484
29.1 IPSec的使用 484
29.1.1 CE0 486
29.1.2 CE6 487
29.2 IPSec简介 488
29.2.1 IPSec的RFC 488
29.2.2 IPSec的实现 489
29.2.3 IPSec传输与隧道模式 490
29.3 安全关联及其他 490
29.3.1 安全策略 490
29.3.2 认证头部 491
29.3.3 封装安全载荷 492
29.3.4 互联网密钥交换 494
29.4 留给读者的问题 495
第七部分 媒体 498
第30章 IP语音 498
30.1 VoIP的使用 498
30.1.1 VoIP的优势 501
30.1.2 什么是“语音” 502
30.1.3 时延问题 502
30.1.4 语音分组化 504
30.2 VoIP协议 504
30.2.1 VoIP传输的RTP协议 505
30.2.2 信令 506
30.2.3 H.3 23国际标准 507
30.2.4 SIP协议,互联网标准 508
30.2.5 MGCP以及Megaco/H.248 510
30.3 多种技术的融合 510
30.4 留给读者的问题 511
缩略语 512
参考文献 523