第1章 分布式系统的特征 1
1.1 简介 1
1.2 分布式系统的实例 2
1.2.1 因特网 2
1.2.2 企业内部网 3
1.2.3 移动计算和无处不在计算 3
1.3 资源共享和Web 5
1.4 挑战 10
1.4.1 异构性 11
1.4.2 开放性 11
1.4.3 安全性 12
1.4.4 可伸缩性 13
1.4.5 故障处理 14
1.4.6 并发性 15
1.4.7 透明性 15
1.5 小结 16
练习 17
第2章 系统模型 19
2.1 简介 19
2.2 体系结构模型 20
2.2.1 软件层 20
2.2.2 系统体系结构 22
2.2.3 变体 23
2.2.4 接口和对象 27
2.2.5 分布式体系结构的设计需求 27
2.3 基础模型 30
2.3.1 交互模型 31
2.3.2 故障模型 34
2.3.3 安全模型 36
2.4 小结 39
练习 40
第3章 网络和网际互连 42
3.1 简介 42
3.2 网络类型 44
3.3 网络原理 46
3.3.1 数据包的传输 47
3.3.2 数据流 47
3.3.3 交换模式 47
3.3.4 协议 48
3.3.5 路由 52
3.3.6 拥塞控制 54
3.3.7 网际互连 55
3.4 因特网协议 57
3.4.1 IP寻址 59
3.4.2 IP协议 60
3.4.3 IP路由 62
3.4.4 IPv6 65
3.4.5 移动IP 67
3.4.6 TCP和UDP 68
3.4.7 域名 69
3.4.8 防火墙 70
3.5 实例研究:以太网、WiFi、蓝牙和ATM 72
3.5.1 以太网 73
3.5.2 IEEE 802.11无线LAN 76
3.5.3 IEEE 802.15.1蓝牙无线PAN 78
3.5.4 异步传输模式网络 80
3.6 小结 82
练习 82
第4章 进程间通信 84
4.1 简介 84
4.2 因特网协议的API 85
4.2.1 进程间通信的特征 85
4.2.2 套接字 86
4.2.3 UDP数据报通信 87
4.2.4 TCP流通信 90
4.3 外部数据表示和编码 93
4.3.1 CORBA的公共数据表示 94
4.3.2 Java对象序列化 95
4.3.3 可扩展标记语言 97
4.3.4 远程对象引用 99
4.4 客户-服务器通信 100
4.5 组通信 105
4.5.1 IP组播——组通信的实现 106
4.5.2 组播的可靠性和排序 108
4.6 实例研究:UNIX中的进程间通信 108
4.6.1 数据报通信 109
4.6.2 流通信 110
4.7 小结 110
练习 111
第5章 分布式对象和远程调用 114
5.1 简介 114
5.2 分布式对象间的通信 116
5.2.1 对象模型 117
5.2.2 分布式对象 117
5.2.3 分布式对象模型 118
5.2.4 RMI的设计问题 120
5.2.5 RMI的实现 122
5.2.6 分布式无用单元收集 125
5.3 远程过程调用 126
5.4 事件和通知 129
5.4.1 分布式事件通知的参与者 131
5.4.2 实例研究:Jini分布式事件规约 132
5.5 实例研究:Java RMI 133
5.5.1 创建客户和服务器程序 136
5.5.2 Java RMI的设计和实现 138
5.6 小结 139
练习 139
第6章 操作系统支持 142
6.1 简介 142
6.2 操作系统层 143
6.3 保护 144
6.4 进程和线程 145
6.4.1 地址空间 146
6.4.2 新进程的生成 147
6.4.3 线程 149
6.5 通信和调用 157
6.5.1 调用性能 158
6.5.2 异步操作 162
6.6 操作系统的体系结构 164
6.7 小结 167
练习 167
第7章 安全性 169
7.1 简介 169
7.1.1 威胁和攻击 170
7.1.2 保护电子事务 172
7.1.3 设计安全系统 173
7.2 安全技术概述 174
7.2.1 密码学 175
7.2.2 密码学的应用 175
7.2.3 证书 177
7.2.4 访问控制 178
7.2.5 凭证 180
7.2.6 防火墙 181
7.3 密码算法 181
7.3.1 密钥(对称)算法 184
7.3.2 钥(不对称)算法 186
7.3.3 混合密码协议 188
7.4 数字签名 188
7.4.1 公钥数字签名 189
7.4.2 密钥数字签名——MAC 189
7.4.3 安全摘要函数 190
7.4.4 证书标准和证书权威机构 191
7.5 密码实用学 192
7.5.1 密码算法的性能 192
7.5.2 密码学的应用和政治障碍 193
7.6 案例研究:Needham-Schroeder、Kerberos、TLS和802.11 WiFi 194
7.6.1 Needham-Schroeder认证协议 194
7.6.2 Kerberos 195
7.6.3 使用安全套接字确保电子交易安全 199
7.6.4 IEEE 802.11 WiFi安全设计中的缺陷 201
7.7 小结 203
练习 204
第8章 分布式文件系统 205
8.1 简介 205
8.1.1 文件系统的特点 207
8.1.2 分布式文件系统的需求 208
8.1.3 实例研究 209
8.2 文件服务体系结构 210
8.3 实例研究:SUN网络文件系统 214
8.4 实例研究:Andrew文件系统 222
8.4.1 实现 223
8.4.2 缓存的一致性 225
8.4.3 其他方面 227
8.5 最新进展 228
8.6 小结 232
练习 232
第9章 名字服务 234
9.1 简介 234
9.2 名字服务和域名系统 236
9.2.1 名字空间 237
9.2.2 名字解析 239
9.2.3 域名系统 241
9.3 目录服务 246
9.4 实例研究:全局名字服务 246
9.5 实例研究:X.500目录服务 248
9.6 小结 251
练习 252
第10章 对等系统 253
10.1 简介 253
10.2 Napster及其遗留系统 256
10.3 对等中间件 257
10.4 路由覆盖 259
10.5 路由覆盖实例研究:Pastry和Tapestry 261
10.5.1 Pastry 261
10.5.2 Tapestry 266
10.6 应用实例研究:Squirrel、OceanStore和lvy 267
10.6.1 Squirrel Web缓存 267
10.6.2 OceanStore文件存储 269
10.6.3 lvy文件系统 272
10.7 小结 274
练习 275
第11章 时间和全局状态 277
11.1 简介 277
11.2 时钟、事件和进程状态 278
11.3 同步物理时钟 279
11.3.1 同步系统中的同步 280
11.3.2 同步时钟的Cristian方法 281
11.3.3 Berkeley算法 281
11.3.4 网络时间协议 282
11.4 逻辑时间和逻辑时钟 284
11.5 全局状态 286
11.5.1 全局状态和一致割集 287
11.5.2 全局状态谓词、稳定性、安全性和活性 288
11.5.3 Chandy和Lamport的“快照”算法 289
11.6 分布式调试 291
11.6.1 观察一致的全局状态 293
11.6.2 判定可能的φ 294
11.6.3 判定明确的φ 294
11.6.4 在同步系统中判定可能的φ和明确的φ 295
11.7 小结 296
练习 296
第12章 协调和协定 298
12.1 简介 298
12.2 分布式互斥 300
12.3 选举 305
12.4 组播通信 308
12.4.1 基本组播 309
12.4.2 可靠组播 310
12.4.3 有序组播 312
12.5 共识和相关问题 317
12.5.1 系统模型和问题定义 317
12.5.2 同步系统中的共识问题 320
12.5.3 同步系统中的拜占庭将军问题 320
12.5.4 异步系统的不可能性 323
12.6 小结 324
练习 325
第13章 事务和并发控制 327
13.1 简介 327
13.1.1 简单的同步机制(无事务) 328
13.1.2 事务的故障模型 329
13.2 事务 329
13.2.1 并发控制 332
13.2.2 事务放弃时的恢复 334
13.3 嵌套事务 336
13.4 锁 337
13.4.1 锁 342
13.4.2 在加锁机制中增加并发度 345
13.5 乐观并发控制 346
13.6 时间戳排序 349
13.7 并发控制方法的比较 353
13.8 小结 354
练习 355
第14章 分布式事务 359
14.1 简介 359
14.2 平面分布式事务和嵌套分布式事务 359
14.3 原子提交协议 361
14.3.1 两阶段提交协议 362
14.3.2 嵌套事务的两阶段提交协议 364
14.4 分布式事务的并发控制 367
14.4.1 加锁 367
14.4.2 时间戳并发控制 368
14.4.3 乐观并发控制 368
14.5 分布式死锁 369
14.6 事务恢复 374
14.6.1 日志 375
14.6.2 影子版本 377
14.6.3 为何恢复文件需要事务状态和意图列表 378
14.6.4 两阶段提交协议的恢复 378
14.7 小结 380
练习 381
第15章 复制 383
15.1 简介 383
15.2 系统模型和组通信 385
15.2.1 系统模型 385
15.2.2 组通信 386
15.3 容错服务 390
15.3.1 被动(主备份)复制 392
15.3.2 主动复制 393
15.4 高可用服务的实例研究:gossip体系结构、Bayou和Coda 394
15.4.1 gossip体系结构 395
15.4.2 Bayou系统和操作变换方法 401
15.4.3 Coda文件系统 402
15.5 复制数据上的事务 407
15.5.1 复制事务的体系结构 407
15.5.2 可用拷贝复制 409
15.5.3 网络分区 410
15.5.4 带验证的可用拷贝 411
15.5.5 法定数共识方法 411
15.5.6 虚拟分区算法 413
15.6 小结 415
练习 415
第16章 移动计算和无处不在计算 417
16.1 简介 417
16.2 关联 423
16.2.1 发现服务 424
16.2.2 物理关联 427
16.2.3 小结和前景 428
16.3 互操作 428
16.3.1 易变系统的面向数据编程 429
16.3.2 间接关联和软状态 432
16.3.3 小结和前景 433
16.4 感知和上下文敏感 433
16.4.1 传感器 434
16.4.2 感知体系结构 434
16.4.3 位置感知 438
16.4.4 小结和前景 441
16.5 安全和私密性 442
16.5.1 背景 442
16.5.2 一些解决办法 443
16.5.3 小结和前景 447
16.6 自适应 447
16.6.1 内容的上下文敏感自适应 448
16.6.2 适应变化的系统资源 449
16.6.3 小结和前景 450
16.7 Cooltown实例研究 450
16.7.1 Web存在 451
16.7.2 物理超链接 452
16.7.3 互操作和eSquirt协议 454
16.7.4 小结和前景 455
16.8 小结 455
练习 456
第17章 分布式多媒体系统 458
17.1 简介 458
17.2 多媒体数据的特征 461
17.3 服务质量管理 462
17.3.1 服务质量协商 464
17.3.2 许可控制 467
17.4 资源管理 468
17.5 流适应 469
17.5.1 调整 470
17.5.2 过滤 471
17.6 实例研究:Tiger视频文件服务器 471
17.7 小结 474
练习 474
第18章 分布式共享内存 476
18.1 简介 476
18.1.1 消息传递机制和DSM 477
18.1.2 DSM的实现方法 478
18.2 设计和实现问题 479
18.2.1 结构 479
18.2.2 同步模型 480
18.2.3 一致性模型 481
18.2.4 更新选项 483
18.2.5 粒度 485
18.2.6 系统颠簸 485
18.3 顺序一致性和lvy实例研究 485
18.3.1 系统模型 486
18.3.2 写失效 487
18.3.3 失效协议 488
18.3.4 一个动态分布式管理器算法 489
18.3.5 系统颠簸 490
18.4 释放一致性和Munin实例研究 491
18.4.1 内存访问 491
18.4.2 释放一致性 492
18.4.3 Munin 493
18.5 其他一致性模型 494
18.6 小结 495
练习 496
第19章 Web服务 498
19.1 简介 498
19.2 Web服务 499
19.2.1 SOAP 501
19.2.2 Web服务与分布式对象模型的比较 504
19.2.3 在Java中使用SOAP 505
19.2.4 Web服务和CORBA的比较 508
19.3 服务描述和Web服务接口定义语言 509
19.4 Web服务使用的目录服务 512
19.5 XML安全性 513
19.6 Web服务的协作 516
19.7 实例研究:网格 517
19.7.1 World-Wide Telescope——一种网格应用 518
19.7.2 数据密集型科学应用的特征 518
19.7.3 开放的网格服务体系结构 519
19.7.4 一些网格应用的例子 521
19.7.5 Globus工具包 522
19.8 小结 523
练习 524
第20章 CORBA实例研究 526
20.1 简介 526
20.2 CORBA RMI 527
20.2.1 CORBA客户和服务器实例 529
20.2.2 CORBA体系结构 532
20.2.3 CORBA接口定义语言 534
20.2.4 CORBA远程对象引用 537
20.2.5 CORBA语言映射 538
20.2.6 CORBA与Web的集成 538
20.3 CORBA服务 539
20.3.1 CORBA名字服务 540
20.3.2 CORBA事件服务 542
20.3.3 CORBA通知服务 543
20.3.4 CORBA安全服务 544
20.4 小结 544
练习 545
索引 548