注重体验与质量的电子书资源下载网站
分类于: 其它 云计算&大数据
简介
TCP/IP详解 卷1:协议(原书第2版): 卷1:协议(原书第2版) 豆 7.2分
资源最后更新于 2020-08-23 08:20:03
作者:Kevin R. Fall W. Richard Stevens
译者:吴英
出版社:机械工业出版社
出版日期:2016-01
ISBN:9787111453833
文件格式: pdf
标签: TCP/IP 计算机网络 网络协议 计算机 计算机科学 网络 网络编程 TCP
简介· · · · · ·
已故专家W. Richard Stevens的《TCP/IP详解》是一部经典之作!第1版自1994年出版以来深受读者欢迎,但其内容有些已经陈旧,而且没有涉及IPv6。现在,这部世界领先的TCP/IP畅销书已由网络顶级专家Kevin R. Fall博士彻底更新,反映了新一代基于TCP/IP的网络技术。本书主要讲述TCP/IP协议,展示每种协议的实际工作原理的同时还解释了其来龙去脉,新增了RPC、访问控制、身份认证、隐私保护、NFS、SMB/CIFS、DHCP、NAT、防火墙、电子邮件、Web、Web服务、无线、无线安全等内容,每章最后还描述了针对协议的攻击方法,帮助读者轻松掌握领域知识。
本书内容丰富、概念清晰、论述详尽,适合任何希望理解TCP/IP协议实现的人阅读,更是TCP/IP领域研究人员和开发人员的权威参考书。无论是初学者还是功底深厚的网络领域...
目录
出版者的话
译者序
本书评语
序
第2版前言
第1版前言(改编)
第1章 概述 1
1.1 体系结构原则 2
1.1.1 分组、连接和数据报 2
1.1.2 端到端论点和命运共享 3
1.1.3 差错控制和流量控制 4
1.2 设计和实现 5
1.2.1 分层 5
1.2.2 分层实现中的复用、分解和封装 6
1.3 TCP/IP协议族结构和协议 9
1.3.1 ARPANET参考模型 9
1.3.2 TCP/IP中的复用、分解和封装 11
1.3.3 端口号 12
1.3.4 名称、地址和DNS 12
1.4 Internet、内联网和外联网 13
1.5 设计应用 13
1.5.1 客户机/服务器 14
1.5.2 对等 14
1.5.3 应用程序编程接口 14
1.6 标准化进程 15
1.6.1 RFC 15
1.6.2 其他标准 15
1.7 实现和软件分发 16
1.8 与Internet体系结构相关的攻击 17
1.9 总结 17
1.10 参考文献 18
第2章 Internet地址结构 21
2.1 引言 21
2.2 表示IP地址 21
2.3 基本的IP地址结构 23
2.3.1 分类寻址 23
2.3.2 子网寻址 24
2.3.3 子网掩码 26
2.3.4 可变长度子网掩码 27
2.3.5 广播地址 28
2.3.6 IPv6地址和接口标识符 29
2.4 CIDR和聚合 31
2.4.1 前缀 31
2.4.2 聚合 32
2.5 特殊用途地址 34
2.5.1 IPv4/IPv6地址转换 35
2.5.2 组播地址 36
2.5.3 IPv4组播地址 36
2.5.4 IPv6组播地址 38
2.5.5 任播地址 41
2.6 分配 42
2.6.1 单播 42
2.6.2 组播 44
2.7 单播地址分配 44
2.7.1 单个供应商/无网络/单个地址 44
2.7.2 单个供应商/单个网络/单个地址 45
2.7.3 单个供应商/多个网络/多个地址 45
2.7.4 多个供应商/多个网络/多个地址(多宿主) 46
2.8 与IP地址相关的攻击 48
2.9 总结 48
2.10 参考文献 49
第3章 链路层 54
3.1 引言 54
3.2 以太网和IEEE 802局域网/城域网标准 54
3.2.1 IEEE 802局域网/城域网标准 56
3.2.2 以太网帧格式 57
3.2.3 802.1p/q:虚拟局域网和QoS标签 60
3.2.4 802.1AX:链路聚合(以前的802.3ad) 62
3.3 全双工、省电、自动协商和802.1X流量控制 64
3.3.1 双工不匹配 65
3.3.2 局域网唤醒(WoL)、省电和魔术分组 65
3.3.3 链路层流量控制 66
3.4 网桥和交换机 67
3.4.1 生成树协议 70
3.4.2 802.1ak:多注册协议 76
3.5 无线局域网——IEEE 802.11(Wi-Fi) 76
3.5.1 802.11帧 77
3.5.2 省电模式和时间同步功能 81
3.5.3 802.11介质访问控制 82
3.5.4 物理层的细节:速率、信道和频率 84
3.5.5 Wi-Fi安全 88
3.5.6 Wi-Fi网状网(802.11s) 89
3.6 点到点协议 89
3.6.1 链路控制协议 89
3.6.2 多链路PPP 93
3.6.3 压缩控制协议 95
3.6.4 PPP认证 95
3.6.5 网络控制协议 96
3.6.6 头部压缩 96
3.6.7 例子 97
3.7 环回 99
3.8 MTU和路径MTU 101
3.9 隧道基础 102
3.9.1 单向链路 105
3.10 与链路层相关的攻击 106
3.11 总结 107
3.12 参考文献 108
第4章 地址解析协议 113
4.1 引言 113
4.2 一个例子 113
4.2.1 直接交付和ARP 114
4.3 ARP缓存 115
4.4 ARP帧格式 116
4.5 ARP例子 117
4.5.1 正常的例子 117
4.5.2 对一个不存在主机的ARP请求 118
4.6 ARP缓存超时 119
4.7 代理ARP 119
4.8 免费ARP和地址冲突检测 120
4.9 arp命令 121
4.10 使用ARP设置一台嵌入式设备的IPv4地址 121
4.11 与ARP相关的攻击 122
4.12 总结 122
4.13 参考文献 123
第5章 Internet协议 124
5.1 引言 124
5.2 IPv4头部和IPv6头部 125
5.2.1 IP头部字段 125
5.2.2 Internet校验和 127
5.2.3 DS字段和ECN(以前称为ToS字节或IPv6流量类别) 129
5.2.4 IP选项 131
5.3 IPv6扩展头部 133
5.3.1 IPv6选项 134
5.3.2 路由头部 137
5.3.3 分片头部 139
5.4 IP转发 143
5.4.1 转发表 144
5.4.2 IP转发行动 144
5.4.3 例子 145
5.4.4 讨论 148
5.5 移动IP 149
5.5.1 基本模型:双向隧道 149
5.5.2 路由优化 150
5.5.3 讨论 152
5.6 IP数据报的主机处理 152
5.6.1 主机模式 152
5.6.2 地址选择 153
5.7 与IP相关的攻击 156
5.8 总结 156
5.9 参考文献 157
第6章 系统配置:DHCP和自动配置 161
6.1 引言 161
6.2 动态主机配置协议 161
6.2.1 地址池和租用 162
6.2.2 DHCP和BOOTP消息格式 163
6.2.3 DHCP和BOOTP选项 164
6.2.4 DHCP协议操作 165
6.2.5 DHCPv6 174
6.2.6 使用DHCP中继 185
6.2.7 DHCP认证 188
6.2.8 重新配置扩展 189
6.2.9 快速确认 189
6.2.10 位置信息(LCI和LoST) 190
6.2.11 移动和切换信息(MoS和ANDSF) 190
6.2.12 DHCP嗅探 191
6.3 无状态地址自动配置 191
6.3.1 IPv4链路本地地址的动态配置 191
6.3.2 链路本地地址的IPv6 SLAAC 192
6.4 DHCP和DNS交互 198
6.5 以太网上的PPP 199
6.6 与系统配置相关的攻击 201
6.7 总结 203
6.8 参考文献 204
第7章 防火墙和网络地址转换 209
7.1 引言 209
7.2 防火墙 209
7.2.1 包过滤防火墙 209
7.2.2 代理防火墙 210
7.3 网络地址转换 212
7.3.1 传统的NAT:基本NAT和NAPT 213
7.3.2 地址和端口转换行为 217
7.3.3 过滤行为 219
7.3.4 位于NAT之后的服务器 219
7.3.5 发夹和NAT环回 220
7.3.6 NAT编辑器 220
7.3.7 服务提供者NAT和服务提供者IPv6转换 220
7.4 NAT穿越 221
7.4.1 针孔和打孔 221
7.4.2 单边的自地址确定 222
7.4.3 NAT的会话穿越工具 223
7.4.4 利用NAT中继的穿越 228
7.4.5 交互连接建立 233
7.5 配置包过滤防火墙和NAT 235
7.5.1 防火墙规则 235
7.5.2 NAT规则 236
7.5.3 与NAT和防火墙的直接交互:UPnP、NAT-PMP和PCP 237
7.6 IPv4/IPv6共存和过渡中的NAT 238
7.6.1 双协议栈精简版 239
7.6.2 使用NAT和ALG的IPv4/IPv6转换 239
7.7 与防火墙和NAT相关的攻击 243
7.8 总结 243
7.9 参考文献 244
第8章 ICMPv4和ICMPv6:Internet控制报文协议 248
8.1 引言 248
8.1.1 在IPv4和IPv6中的封装 248
8.2 ICMP报文 249
8.2.1 ICMPv4报文 250
8.2.2 ICMPv6报文 251
8.2.3 处理ICMP报文 253
8.3 ICMP差错报文 253
8.3.1 扩展的ICMP和多部报文 254
8.3.2 目的不可达(ICMPv4类型3,ICMPv6类型1)和数据包太大(ICMPv6类型2) 255
8.3.3 重定向(ICMPv4类型5,ICMPv6类型137) 261
8.3.4 ICMP超时(ICMPv4类型11,ICMPv6类型3) 263
8.3.5 参数问题(ICMPv4类型12,ICMPv6类型4) 266
8.4 ICMP查询/信息类报文 267
8.4.1 回显请求/应答(ping)(ICMPv4类型0/8,ICMPv6类型129/128) 268
8.4.2 路由器发现:路由器请求和通告(ICMPv4类型9,10) 269
8.4.3 本地代理地址发现请求/应答(ICMPv6类型144/145) 271
8.4.4 移动前缀请求/通告(ICMPv6类型146/147) 272
8.4.5 移动IPv6快速切换报文(ICMPv6类型154) 273
8.4.6 组播侦听查询/报告/完成(ICMPv6类型130/131/132) 273
8.4.7 版本2组播侦听发现(ICMPv6类型143) 274
8.4.8 组播路由器发现(IGMP类型48/49/50,ICMPv6类型151/152/153) 278
8.5 IPv6中的邻居发现 278
8.5.1 ICMPv6路由器请求和通告(ICMPv6类型133,134) 279
8.5.2 ICMPv6邻居请求和通告(ICMPv6类型135,136) 280
8.5.3 ICMPv6反向邻居发现请求/通告(ICMPv6类型141/142) 283
8.5.4 邻居不可达检测 283
8.5.5 安全邻居发现 284
8.5.6 ICMPv6邻居发现选项 287
8.6 ICMPv4和ICMPv6转换 298
8.6.1 从ICMPv4转换到ICMPv6 299
8.6.2 从ICMPv6转换到ICMPv4 300
8.7 与ICMP相关的攻击 301
8.8 总结 303
8.9 参考文献 303
第9章 广播和本地组播(IGMP和MLD) 307
9.1 引言 307
9.2 广播 308
9.2.1 使用广播地址 308
9.2.2 发送广播数据报 310
9.3 组播 311
9.3.1 将IP组播地址转换为802 MAC/以太网地址 312
9.3.2 例子 313
9.3.3 发送组播数据报 314
9.3.4 接收组播数据报 316
9.3.5 主机地址过滤 317
9.4 互联网组管理协议和组播侦听发现协议 318
9.4.1 组成员的IGMP和MLD处理(“组成员部分”) 321
9.4.2 组播路由器的IGMP和MLD处理(“组播路由器部分”) 323
9.4.3 例子 324
9.4.4 轻量级IGMPv3和MLDv2 328
9.4.5 IGMP和MLD健壮性 329
9.4.6 IGMP和MLD计数器和变量 330
9.4.7 IGMP和MLD探听 331
9.5 与IGMP和MLD相关的攻击 332
9.6 总结 332
9.7 参考文献 333
第10章 用户数据报协议和IP分片 335
10.1 引言 335
10.2 UDP头部 335
10.3 UDP校验和 336
10.4 例子 338
10.5 UDP和IPv6 340
10.5.1 Teredo:通过IPv4网络隧道传输IPv6 341
10.6 UDP-Lite 345
10.7 IP分片 345
10.7.1 例子:UDP/IPv4分片 346
10.7.2 重组超时 348
10.8 采用UDP的路径MTU发现 349
10.8.1 例子 349
10.9 IP分片和ARP/ND之间的交互 351
10.10 最大UDP数据报长度 352
10.10.1 实现限制 352
10.10.2 数据报截断 353
10.11 UDP服务器的设计 353
10.11.1 IP地址和UDP端口号 353
10.11.2 限制本地IP地址 354
10.11.3 使用多地址 355
10.11.4 限制远端IP地址 356
10.11.5 每端口多服务器的使用 357
10.11.6 跨越地址族:IPv4和IPv6 357
10.11.7 流量和拥塞控制的缺失 357
10.12 UDP/IPv4和UDP/IPv6数据报的转换 358
10.13 互联网中的UDP 358
10.14 与UDP和IP分片相关的攻击 359
10.15 总结 360
10.16 参考文献 360
第11章 名称解析和域名系统 362
11.1 引言 362
11.2 DNS名称空间 362
11.2.1 DNS命名语法 365
11.3 名称服务器和区域 366
11.4 缓存 366
11.5 DNS协议 367
11.5.1 DNS消息格式 369
11.5.2 DNS扩展格式(EDNS0) 372
11.5.3 UDP或TCP 372
11.5.4 问题(查询)和区域区段格式 373
11.5.5 回答、授权和额外信息区段格式 373
11.5.6 资源记录类型 374
11.5.7 动态更新(DNS UPDATE) 394
11.5.8 区域传输和DNS通知 397
11.6 排序列表、循环和分离DNS 402
11.7 开放DNS服务器和DynDNS 403
11.8 透明度和扩展性 404
11.9 从IPv4向IPv6转换DNS 404
11.10 LLMNR和mDNS 405
11.11 LDAP 406
11.12 与DNS相关的攻击 406
11.13 总结 407
11.14 参考文献 408
第12章 TCP:传输控制协议(初步) 412
12.1 引言 412
12.1.1 ARQ和重传 412
12.1.2 分组窗口和滑动窗口 413
12.1.3 变量窗口:流量控制和拥塞控制 414
12.1.4 设置重传超时 415
12.2 TCP的引入 415
12.2.1 TCP服务模型 416
12.2.2 TCP中的可靠性 416
12.3 TCP头部和封装 418
12.4 总结 420
12.5 参考文献 421
第13章 TCP连接管理 423
13.1 引言 423
13.2 TCP连接的建立与终止 423
13.2.1 TCP半关闭 425
13.2.2 同时打开与关闭 426
13.2.3 初始序列号 427
13.2.4 例子 428
13.2.5 连接建立超时 429
13.2.6 连接与转换器 430
13.3 TCP选项 431
13.3.1 最大段大小选项 431
13.3.2 选择确认选项 432
13.3.3 窗口缩放选项 433
13.3.4 时间戳选项与防回绕序列号 433
13.3.5 用户超时选项 435
13.3.6 认证选项 436
13.4 TCP的路径最大传输单元发现 436
13.4.1 例子 437
13.5 TCP状态转换 439
13.5.1 TCP状态转换图 440
13.5.2 TIME_WAIT状态 442
13.5.3 静默时间的概念 446
13.5.4 FIN_WAIT_2状态 446
13.5.5 同时打开与关闭的转换 446
13.6 重置报文段 447
13.6.1 针对不存在端口的连接请求 447
13.6.2 终止一条连接 447
13.6.3 半开连接 449
13.6.4 时间等待错误 451
13.7 TCP服务器选项 451
13.7.1 TCP端口号 452
13.7.2 限制本地IP地址 453
13.7.3 限制外部节点 454
13.7.4 进入连接队列 455
13.8 与TCP连接管理相关的攻击 458
13.9 总结 459
13.10 参考文献 460
第14章 TCP超时与重传 462
14.1 引言 462
14.2 简单的超时与重传举例 462
14.3 设置重传超时 464
14.3.1 经典方法 465
14.3.2 标准方法 465
14.3.3 Linux采用的方法 468
14.3.4 RTT估计器行为 471
14.3.5 RTTM对丢包和失序的鲁棒性 472
14.4 基于计时器的重传 473
14.4.1 例子 473
14.5 快速重传 475
14.5.1 例子 475
14.6 带选择确认的重传 478
14.6.1 SACK接收端行为 479
14.6.2 SACK发送端行为 479
14.6.3 例子 480
14.7 伪超时与重传 482
14.7.1 重复SACK(DSACK)扩展 482
14.7.2 Eifel检测算法 483
14.7.3 前移RTO恢复(F-RTO) 484
14.7.4 Eifel响应算法 484
14.8 包失序与包重复 485
14.8.1 失序 486
14.8.2 重复 487
14.9 目的度量 487
14.10 重新组包 488
14.11 与TCP重传相关的攻击 489
14.12 总结 489
14.13 参考文献 490
第15章 TCP数据流与窗口管理 492
15.1 引言 492
15.2 交互式通信 492
15.3 延时确认 494
15.4 Nagle算法 495
15.4.1 延时ACK与Nagle算法结合 497
15.4.2 禁用Nagle算法 498
15.5 流量控制与窗口管理 498
15.5.1 滑动窗口 499
15.5.2 零窗口与TCP持续计时器 501
15.5.3 糊涂窗口综合征 503
15.5.4 大容量缓存与自动调优 509
15.6 紧急机制 512
15.6.1 例子 512
15.7 与窗口管理相关的攻击 514
15.8 总结 515
15.9 参考文献 515
第16章 TCP拥塞控制 517
16.1 引言 517
16.1.1 TCP拥塞检测 517
16.1.2 减缓TCP发送 518
16.2 一些经典算法 519
16.2.1 慢启动 520
16.2.2 拥塞避免 521
16.2.3 慢启动和拥塞避免的选择 523
16.2.4 Tahoe、Reno以及快速恢复算法 523
16.2.5 标准TCP 524
16.3 对标准算法的改进 524
16.3.1 NewReno 525
16.3.2 采用选择确认机制的TCP拥塞控制 525
16.3.3 转发确认(FACK)和速率减半 526
16.3.4 限制传输 527
16.3.5 拥塞窗口校验 527
16.4 伪RTO处理——Eifel响应算法 528
16.5 扩展举例 528
16.5.1 慢启动行为 531
16.5.2 发送暂停和本地拥塞(事件1) 532
16.5.3 延伸ACK和本地拥塞恢复 535
16.5.4 快速重传和SACK恢复(事件2) 538
16.5.5 其他本地拥塞和快速重传事件 539
16.5.6 超时、重传和撤销cwnd修改 542
16.5.7 连接结束 545
16.6 共享拥塞状态信息 545
16.7 TCP友好性 546
16.8 高速环境下的TCP 547
16.8.1 高速TCP与受限的慢启动 547
16.8.2 二进制增长拥塞控制(BIC和CUBIC) 549
16.9 基于延迟的拥塞控制算法 552
16.9.1 Vegas算法 552
16.9.2 FAST算法 553
16.9.3 TCP Westwood算法和Westwood+算法 553
16.9.4 复合TCP 553
16.10 缓冲区膨胀 555
16.11 积极队列管理和ECN 556
16.12 与TCP拥塞控制相关的攻击 557
16.13 总结 558
16.14 参考文献 560
第17章 TCP保活机制 563
17.1 引言 563
17.2 描述 564
17.2.1 保活功能举例 565
17.3 与TCP保活机制相关的攻击 569
17.4 总结 570
17.5 参考文献 570
第18章 安全:可扩展身份认证协议、IP安全协议、传输层安全、DNS安全、域名密钥识别邮件 571
18.1 引言 571
18.2 信息安全的基本原则 572
18.3 网络通信的威胁 572
18.4 基础的加密与安全机制 573
18.4.1 密码系统 573
18.4.2 RSA公钥密码算法 575
18.4.3 Diffie-Hellman-Merkle密钥协商协议 576
18.4.4 签密与椭圆曲线密码 577
18.4.5 密钥派生与完全正向保密 577
18.4.6 伪随机数、生成器与函数族 578
18.4.7 随机数与混淆值 578
18.4.8 加密散列函数与消息摘要 578
18.4.9 消息认证码 579
18.4.10 加密套件与密码套件 580
18.5 证书、证书颁发机构与公钥基础设施 582
18.5.1 公钥证书、证书颁发机构与X.509标准 583
18.5.2 验证与撤销证书 587
18.5.3 属性证书 589
18.6 TCP/IP安全协议与分层 590
18.7 网络访问控制:802.1X, 802.1AE,EAP, PANA 591
18.7.1 EAP方法与密钥派生 594
18.7.2 EAP重新认证协议 595
18.7.3 网络接入认证信息承载协议 595
18.8 第3层IP安全(IPsec) 596
18.8.1 Internet密钥交换协议(IKEv2) 597
18.8.2 认证头部 606
18.8.3 封装安全负载 609
18.8.4 组播 612
18.8.5 L2TP/IPsec 613
18.8.6 IPsec NAT穿越 613
18.8.7 例子 614
18.9 传输层安全(TLS和DTLS) 622
18.9.1 TLS 1.2 623
18.9.2 DTLS 633
18.10 DNS安全(DNSSEC) 636
18.10.1 DNSSEC资源记录 637
18.10.2 DNSSEC运行 642
18.10.3 事务认证(TSIG, TKEY,SIG(0)) 648
18.10.4 带有DNS64的DNSSEC 652
18.11 域名密钥识别邮件 652
18.11.1 DKIM签名 652
18.11.2 例子 653
18.12 与安全协议相关的攻击 654
18.13 总结 655
18.14 参考文献 657
缩略语 666
译者序
本书评语
序
第2版前言
第1版前言(改编)
第1章 概述 1
1.1 体系结构原则 2
1.1.1 分组、连接和数据报 2
1.1.2 端到端论点和命运共享 3
1.1.3 差错控制和流量控制 4
1.2 设计和实现 5
1.2.1 分层 5
1.2.2 分层实现中的复用、分解和封装 6
1.3 TCP/IP协议族结构和协议 9
1.3.1 ARPANET参考模型 9
1.3.2 TCP/IP中的复用、分解和封装 11
1.3.3 端口号 12
1.3.4 名称、地址和DNS 12
1.4 Internet、内联网和外联网 13
1.5 设计应用 13
1.5.1 客户机/服务器 14
1.5.2 对等 14
1.5.3 应用程序编程接口 14
1.6 标准化进程 15
1.6.1 RFC 15
1.6.2 其他标准 15
1.7 实现和软件分发 16
1.8 与Internet体系结构相关的攻击 17
1.9 总结 17
1.10 参考文献 18
第2章 Internet地址结构 21
2.1 引言 21
2.2 表示IP地址 21
2.3 基本的IP地址结构 23
2.3.1 分类寻址 23
2.3.2 子网寻址 24
2.3.3 子网掩码 26
2.3.4 可变长度子网掩码 27
2.3.5 广播地址 28
2.3.6 IPv6地址和接口标识符 29
2.4 CIDR和聚合 31
2.4.1 前缀 31
2.4.2 聚合 32
2.5 特殊用途地址 34
2.5.1 IPv4/IPv6地址转换 35
2.5.2 组播地址 36
2.5.3 IPv4组播地址 36
2.5.4 IPv6组播地址 38
2.5.5 任播地址 41
2.6 分配 42
2.6.1 单播 42
2.6.2 组播 44
2.7 单播地址分配 44
2.7.1 单个供应商/无网络/单个地址 44
2.7.2 单个供应商/单个网络/单个地址 45
2.7.3 单个供应商/多个网络/多个地址 45
2.7.4 多个供应商/多个网络/多个地址(多宿主) 46
2.8 与IP地址相关的攻击 48
2.9 总结 48
2.10 参考文献 49
第3章 链路层 54
3.1 引言 54
3.2 以太网和IEEE 802局域网/城域网标准 54
3.2.1 IEEE 802局域网/城域网标准 56
3.2.2 以太网帧格式 57
3.2.3 802.1p/q:虚拟局域网和QoS标签 60
3.2.4 802.1AX:链路聚合(以前的802.3ad) 62
3.3 全双工、省电、自动协商和802.1X流量控制 64
3.3.1 双工不匹配 65
3.3.2 局域网唤醒(WoL)、省电和魔术分组 65
3.3.3 链路层流量控制 66
3.4 网桥和交换机 67
3.4.1 生成树协议 70
3.4.2 802.1ak:多注册协议 76
3.5 无线局域网——IEEE 802.11(Wi-Fi) 76
3.5.1 802.11帧 77
3.5.2 省电模式和时间同步功能 81
3.5.3 802.11介质访问控制 82
3.5.4 物理层的细节:速率、信道和频率 84
3.5.5 Wi-Fi安全 88
3.5.6 Wi-Fi网状网(802.11s) 89
3.6 点到点协议 89
3.6.1 链路控制协议 89
3.6.2 多链路PPP 93
3.6.3 压缩控制协议 95
3.6.4 PPP认证 95
3.6.5 网络控制协议 96
3.6.6 头部压缩 96
3.6.7 例子 97
3.7 环回 99
3.8 MTU和路径MTU 101
3.9 隧道基础 102
3.9.1 单向链路 105
3.10 与链路层相关的攻击 106
3.11 总结 107
3.12 参考文献 108
第4章 地址解析协议 113
4.1 引言 113
4.2 一个例子 113
4.2.1 直接交付和ARP 114
4.3 ARP缓存 115
4.4 ARP帧格式 116
4.5 ARP例子 117
4.5.1 正常的例子 117
4.5.2 对一个不存在主机的ARP请求 118
4.6 ARP缓存超时 119
4.7 代理ARP 119
4.8 免费ARP和地址冲突检测 120
4.9 arp命令 121
4.10 使用ARP设置一台嵌入式设备的IPv4地址 121
4.11 与ARP相关的攻击 122
4.12 总结 122
4.13 参考文献 123
第5章 Internet协议 124
5.1 引言 124
5.2 IPv4头部和IPv6头部 125
5.2.1 IP头部字段 125
5.2.2 Internet校验和 127
5.2.3 DS字段和ECN(以前称为ToS字节或IPv6流量类别) 129
5.2.4 IP选项 131
5.3 IPv6扩展头部 133
5.3.1 IPv6选项 134
5.3.2 路由头部 137
5.3.3 分片头部 139
5.4 IP转发 143
5.4.1 转发表 144
5.4.2 IP转发行动 144
5.4.3 例子 145
5.4.4 讨论 148
5.5 移动IP 149
5.5.1 基本模型:双向隧道 149
5.5.2 路由优化 150
5.5.3 讨论 152
5.6 IP数据报的主机处理 152
5.6.1 主机模式 152
5.6.2 地址选择 153
5.7 与IP相关的攻击 156
5.8 总结 156
5.9 参考文献 157
第6章 系统配置:DHCP和自动配置 161
6.1 引言 161
6.2 动态主机配置协议 161
6.2.1 地址池和租用 162
6.2.2 DHCP和BOOTP消息格式 163
6.2.3 DHCP和BOOTP选项 164
6.2.4 DHCP协议操作 165
6.2.5 DHCPv6 174
6.2.6 使用DHCP中继 185
6.2.7 DHCP认证 188
6.2.8 重新配置扩展 189
6.2.9 快速确认 189
6.2.10 位置信息(LCI和LoST) 190
6.2.11 移动和切换信息(MoS和ANDSF) 190
6.2.12 DHCP嗅探 191
6.3 无状态地址自动配置 191
6.3.1 IPv4链路本地地址的动态配置 191
6.3.2 链路本地地址的IPv6 SLAAC 192
6.4 DHCP和DNS交互 198
6.5 以太网上的PPP 199
6.6 与系统配置相关的攻击 201
6.7 总结 203
6.8 参考文献 204
第7章 防火墙和网络地址转换 209
7.1 引言 209
7.2 防火墙 209
7.2.1 包过滤防火墙 209
7.2.2 代理防火墙 210
7.3 网络地址转换 212
7.3.1 传统的NAT:基本NAT和NAPT 213
7.3.2 地址和端口转换行为 217
7.3.3 过滤行为 219
7.3.4 位于NAT之后的服务器 219
7.3.5 发夹和NAT环回 220
7.3.6 NAT编辑器 220
7.3.7 服务提供者NAT和服务提供者IPv6转换 220
7.4 NAT穿越 221
7.4.1 针孔和打孔 221
7.4.2 单边的自地址确定 222
7.4.3 NAT的会话穿越工具 223
7.4.4 利用NAT中继的穿越 228
7.4.5 交互连接建立 233
7.5 配置包过滤防火墙和NAT 235
7.5.1 防火墙规则 235
7.5.2 NAT规则 236
7.5.3 与NAT和防火墙的直接交互:UPnP、NAT-PMP和PCP 237
7.6 IPv4/IPv6共存和过渡中的NAT 238
7.6.1 双协议栈精简版 239
7.6.2 使用NAT和ALG的IPv4/IPv6转换 239
7.7 与防火墙和NAT相关的攻击 243
7.8 总结 243
7.9 参考文献 244
第8章 ICMPv4和ICMPv6:Internet控制报文协议 248
8.1 引言 248
8.1.1 在IPv4和IPv6中的封装 248
8.2 ICMP报文 249
8.2.1 ICMPv4报文 250
8.2.2 ICMPv6报文 251
8.2.3 处理ICMP报文 253
8.3 ICMP差错报文 253
8.3.1 扩展的ICMP和多部报文 254
8.3.2 目的不可达(ICMPv4类型3,ICMPv6类型1)和数据包太大(ICMPv6类型2) 255
8.3.3 重定向(ICMPv4类型5,ICMPv6类型137) 261
8.3.4 ICMP超时(ICMPv4类型11,ICMPv6类型3) 263
8.3.5 参数问题(ICMPv4类型12,ICMPv6类型4) 266
8.4 ICMP查询/信息类报文 267
8.4.1 回显请求/应答(ping)(ICMPv4类型0/8,ICMPv6类型129/128) 268
8.4.2 路由器发现:路由器请求和通告(ICMPv4类型9,10) 269
8.4.3 本地代理地址发现请求/应答(ICMPv6类型144/145) 271
8.4.4 移动前缀请求/通告(ICMPv6类型146/147) 272
8.4.5 移动IPv6快速切换报文(ICMPv6类型154) 273
8.4.6 组播侦听查询/报告/完成(ICMPv6类型130/131/132) 273
8.4.7 版本2组播侦听发现(ICMPv6类型143) 274
8.4.8 组播路由器发现(IGMP类型48/49/50,ICMPv6类型151/152/153) 278
8.5 IPv6中的邻居发现 278
8.5.1 ICMPv6路由器请求和通告(ICMPv6类型133,134) 279
8.5.2 ICMPv6邻居请求和通告(ICMPv6类型135,136) 280
8.5.3 ICMPv6反向邻居发现请求/通告(ICMPv6类型141/142) 283
8.5.4 邻居不可达检测 283
8.5.5 安全邻居发现 284
8.5.6 ICMPv6邻居发现选项 287
8.6 ICMPv4和ICMPv6转换 298
8.6.1 从ICMPv4转换到ICMPv6 299
8.6.2 从ICMPv6转换到ICMPv4 300
8.7 与ICMP相关的攻击 301
8.8 总结 303
8.9 参考文献 303
第9章 广播和本地组播(IGMP和MLD) 307
9.1 引言 307
9.2 广播 308
9.2.1 使用广播地址 308
9.2.2 发送广播数据报 310
9.3 组播 311
9.3.1 将IP组播地址转换为802 MAC/以太网地址 312
9.3.2 例子 313
9.3.3 发送组播数据报 314
9.3.4 接收组播数据报 316
9.3.5 主机地址过滤 317
9.4 互联网组管理协议和组播侦听发现协议 318
9.4.1 组成员的IGMP和MLD处理(“组成员部分”) 321
9.4.2 组播路由器的IGMP和MLD处理(“组播路由器部分”) 323
9.4.3 例子 324
9.4.4 轻量级IGMPv3和MLDv2 328
9.4.5 IGMP和MLD健壮性 329
9.4.6 IGMP和MLD计数器和变量 330
9.4.7 IGMP和MLD探听 331
9.5 与IGMP和MLD相关的攻击 332
9.6 总结 332
9.7 参考文献 333
第10章 用户数据报协议和IP分片 335
10.1 引言 335
10.2 UDP头部 335
10.3 UDP校验和 336
10.4 例子 338
10.5 UDP和IPv6 340
10.5.1 Teredo:通过IPv4网络隧道传输IPv6 341
10.6 UDP-Lite 345
10.7 IP分片 345
10.7.1 例子:UDP/IPv4分片 346
10.7.2 重组超时 348
10.8 采用UDP的路径MTU发现 349
10.8.1 例子 349
10.9 IP分片和ARP/ND之间的交互 351
10.10 最大UDP数据报长度 352
10.10.1 实现限制 352
10.10.2 数据报截断 353
10.11 UDP服务器的设计 353
10.11.1 IP地址和UDP端口号 353
10.11.2 限制本地IP地址 354
10.11.3 使用多地址 355
10.11.4 限制远端IP地址 356
10.11.5 每端口多服务器的使用 357
10.11.6 跨越地址族:IPv4和IPv6 357
10.11.7 流量和拥塞控制的缺失 357
10.12 UDP/IPv4和UDP/IPv6数据报的转换 358
10.13 互联网中的UDP 358
10.14 与UDP和IP分片相关的攻击 359
10.15 总结 360
10.16 参考文献 360
第11章 名称解析和域名系统 362
11.1 引言 362
11.2 DNS名称空间 362
11.2.1 DNS命名语法 365
11.3 名称服务器和区域 366
11.4 缓存 366
11.5 DNS协议 367
11.5.1 DNS消息格式 369
11.5.2 DNS扩展格式(EDNS0) 372
11.5.3 UDP或TCP 372
11.5.4 问题(查询)和区域区段格式 373
11.5.5 回答、授权和额外信息区段格式 373
11.5.6 资源记录类型 374
11.5.7 动态更新(DNS UPDATE) 394
11.5.8 区域传输和DNS通知 397
11.6 排序列表、循环和分离DNS 402
11.7 开放DNS服务器和DynDNS 403
11.8 透明度和扩展性 404
11.9 从IPv4向IPv6转换DNS 404
11.10 LLMNR和mDNS 405
11.11 LDAP 406
11.12 与DNS相关的攻击 406
11.13 总结 407
11.14 参考文献 408
第12章 TCP:传输控制协议(初步) 412
12.1 引言 412
12.1.1 ARQ和重传 412
12.1.2 分组窗口和滑动窗口 413
12.1.3 变量窗口:流量控制和拥塞控制 414
12.1.4 设置重传超时 415
12.2 TCP的引入 415
12.2.1 TCP服务模型 416
12.2.2 TCP中的可靠性 416
12.3 TCP头部和封装 418
12.4 总结 420
12.5 参考文献 421
第13章 TCP连接管理 423
13.1 引言 423
13.2 TCP连接的建立与终止 423
13.2.1 TCP半关闭 425
13.2.2 同时打开与关闭 426
13.2.3 初始序列号 427
13.2.4 例子 428
13.2.5 连接建立超时 429
13.2.6 连接与转换器 430
13.3 TCP选项 431
13.3.1 最大段大小选项 431
13.3.2 选择确认选项 432
13.3.3 窗口缩放选项 433
13.3.4 时间戳选项与防回绕序列号 433
13.3.5 用户超时选项 435
13.3.6 认证选项 436
13.4 TCP的路径最大传输单元发现 436
13.4.1 例子 437
13.5 TCP状态转换 439
13.5.1 TCP状态转换图 440
13.5.2 TIME_WAIT状态 442
13.5.3 静默时间的概念 446
13.5.4 FIN_WAIT_2状态 446
13.5.5 同时打开与关闭的转换 446
13.6 重置报文段 447
13.6.1 针对不存在端口的连接请求 447
13.6.2 终止一条连接 447
13.6.3 半开连接 449
13.6.4 时间等待错误 451
13.7 TCP服务器选项 451
13.7.1 TCP端口号 452
13.7.2 限制本地IP地址 453
13.7.3 限制外部节点 454
13.7.4 进入连接队列 455
13.8 与TCP连接管理相关的攻击 458
13.9 总结 459
13.10 参考文献 460
第14章 TCP超时与重传 462
14.1 引言 462
14.2 简单的超时与重传举例 462
14.3 设置重传超时 464
14.3.1 经典方法 465
14.3.2 标准方法 465
14.3.3 Linux采用的方法 468
14.3.4 RTT估计器行为 471
14.3.5 RTTM对丢包和失序的鲁棒性 472
14.4 基于计时器的重传 473
14.4.1 例子 473
14.5 快速重传 475
14.5.1 例子 475
14.6 带选择确认的重传 478
14.6.1 SACK接收端行为 479
14.6.2 SACK发送端行为 479
14.6.3 例子 480
14.7 伪超时与重传 482
14.7.1 重复SACK(DSACK)扩展 482
14.7.2 Eifel检测算法 483
14.7.3 前移RTO恢复(F-RTO) 484
14.7.4 Eifel响应算法 484
14.8 包失序与包重复 485
14.8.1 失序 486
14.8.2 重复 487
14.9 目的度量 487
14.10 重新组包 488
14.11 与TCP重传相关的攻击 489
14.12 总结 489
14.13 参考文献 490
第15章 TCP数据流与窗口管理 492
15.1 引言 492
15.2 交互式通信 492
15.3 延时确认 494
15.4 Nagle算法 495
15.4.1 延时ACK与Nagle算法结合 497
15.4.2 禁用Nagle算法 498
15.5 流量控制与窗口管理 498
15.5.1 滑动窗口 499
15.5.2 零窗口与TCP持续计时器 501
15.5.3 糊涂窗口综合征 503
15.5.4 大容量缓存与自动调优 509
15.6 紧急机制 512
15.6.1 例子 512
15.7 与窗口管理相关的攻击 514
15.8 总结 515
15.9 参考文献 515
第16章 TCP拥塞控制 517
16.1 引言 517
16.1.1 TCP拥塞检测 517
16.1.2 减缓TCP发送 518
16.2 一些经典算法 519
16.2.1 慢启动 520
16.2.2 拥塞避免 521
16.2.3 慢启动和拥塞避免的选择 523
16.2.4 Tahoe、Reno以及快速恢复算法 523
16.2.5 标准TCP 524
16.3 对标准算法的改进 524
16.3.1 NewReno 525
16.3.2 采用选择确认机制的TCP拥塞控制 525
16.3.3 转发确认(FACK)和速率减半 526
16.3.4 限制传输 527
16.3.5 拥塞窗口校验 527
16.4 伪RTO处理——Eifel响应算法 528
16.5 扩展举例 528
16.5.1 慢启动行为 531
16.5.2 发送暂停和本地拥塞(事件1) 532
16.5.3 延伸ACK和本地拥塞恢复 535
16.5.4 快速重传和SACK恢复(事件2) 538
16.5.5 其他本地拥塞和快速重传事件 539
16.5.6 超时、重传和撤销cwnd修改 542
16.5.7 连接结束 545
16.6 共享拥塞状态信息 545
16.7 TCP友好性 546
16.8 高速环境下的TCP 547
16.8.1 高速TCP与受限的慢启动 547
16.8.2 二进制增长拥塞控制(BIC和CUBIC) 549
16.9 基于延迟的拥塞控制算法 552
16.9.1 Vegas算法 552
16.9.2 FAST算法 553
16.9.3 TCP Westwood算法和Westwood+算法 553
16.9.4 复合TCP 553
16.10 缓冲区膨胀 555
16.11 积极队列管理和ECN 556
16.12 与TCP拥塞控制相关的攻击 557
16.13 总结 558
16.14 参考文献 560
第17章 TCP保活机制 563
17.1 引言 563
17.2 描述 564
17.2.1 保活功能举例 565
17.3 与TCP保活机制相关的攻击 569
17.4 总结 570
17.5 参考文献 570
第18章 安全:可扩展身份认证协议、IP安全协议、传输层安全、DNS安全、域名密钥识别邮件 571
18.1 引言 571
18.2 信息安全的基本原则 572
18.3 网络通信的威胁 572
18.4 基础的加密与安全机制 573
18.4.1 密码系统 573
18.4.2 RSA公钥密码算法 575
18.4.3 Diffie-Hellman-Merkle密钥协商协议 576
18.4.4 签密与椭圆曲线密码 577
18.4.5 密钥派生与完全正向保密 577
18.4.6 伪随机数、生成器与函数族 578
18.4.7 随机数与混淆值 578
18.4.8 加密散列函数与消息摘要 578
18.4.9 消息认证码 579
18.4.10 加密套件与密码套件 580
18.5 证书、证书颁发机构与公钥基础设施 582
18.5.1 公钥证书、证书颁发机构与X.509标准 583
18.5.2 验证与撤销证书 587
18.5.3 属性证书 589
18.6 TCP/IP安全协议与分层 590
18.7 网络访问控制:802.1X, 802.1AE,EAP, PANA 591
18.7.1 EAP方法与密钥派生 594
18.7.2 EAP重新认证协议 595
18.7.3 网络接入认证信息承载协议 595
18.8 第3层IP安全(IPsec) 596
18.8.1 Internet密钥交换协议(IKEv2) 597
18.8.2 认证头部 606
18.8.3 封装安全负载 609
18.8.4 组播 612
18.8.5 L2TP/IPsec 613
18.8.6 IPsec NAT穿越 613
18.8.7 例子 614
18.9 传输层安全(TLS和DTLS) 622
18.9.1 TLS 1.2 623
18.9.2 DTLS 633
18.10 DNS安全(DNSSEC) 636
18.10.1 DNSSEC资源记录 637
18.10.2 DNSSEC运行 642
18.10.3 事务认证(TSIG, TKEY,SIG(0)) 648
18.10.4 带有DNS64的DNSSEC 652
18.11 域名密钥识别邮件 652
18.11.1 DKIM签名 652
18.11.2 例子 653
18.12 与安全协议相关的攻击 654
18.13 总结 655
18.14 参考文献 657
缩略语 666