1 CHARACTERIZATION OF DISTRIBUTED SYSTEMS 1
1.1 Introduction 2
1.2 Examples of distributed systems 3
1.3 Trends in distributed systems 8
1.4 Focus on resource sharing 14
1.5 Challenges 16
1.6 Case study:The World Wide Web 26
1.7 Summary 33
2 SYSTEM MODELS 37
2.1 Introduction 38
2.2 Physical models 39
2.3 Architectural models 40
2.4 Fundamental models 61
2.5 Summary 76
3 NETWORKING AND INTERNETWORKING 81
3.1 Introduction 82
3.2 Types of network 86
3.3 Network principles 89
3.4 Internet protocols 106
3.5 Case studies:Ethernet,WiFi and Bluetooth 128
3.6 Summary 141
4 INTERPROCESS COMMUNICATION 145
4.1 Introduction 146
4.2 The API for the Internet protocols 147
4.3 External data representation and marshalling 158
4.4 Multicast communication 169
4.5 Network virtualization:Overlay networks 174
4.6 Case study:MPI 178
4.7 Summary 181
5 REMOTE INVOCATION 185
5.1 Introduction 186
5.2 Request-reply protocols 187
5.3 Remote procedure call 195
5.4 Remote method invocation 204
5.5 Case study:Java RMI 217
5.6 Summary 225
6 INDIRECT COMMUNICATION 229
6.1 Introduction 230
6.2 Group communication 232
6.3 Publish-subscribe systems 242
6.4 Message queues 254
6.5 Shared memory approaches 262
6.6 Summary 274
7 OPERATING SYSTEM SUPPORT 279
7.1 Introduction 280
7.2 The operating system layer 281
7.3 Protection 284
7.4 Processes and threads 286
7.5 Communication and invocation 303
7.6 Operating system architecture 314
7.7 Virtualization at the operating system level 318
7.8 Summary 331
8 DISTRIBUTED OBJECTS AND COMPONENTS 335
8.1 Introduction 336
8.2 Distributed objects 337
8.3 Case study:CORBA 340
8.4 From objects to components 358
8.5 Case studies:Enterprise JavaBeans and Fractal 364
8.6 Summary 378
9 WEB SERVICES 381
9.1 Introduction 382
9.2 Web services 384
9.3 Service descriptions and IDL for web services 400
9.4 A directory service for use with web services 404
9.5 XML security 406
9.6 Coordination of web services 411
9.7 Applications of web services 413
9.8 Summary 419
10 PEER-TO-PEER SYSTEMS 423
10.1 Introduction 424
10.2 Napster and its legacy 428
10.3 Peer-to-peer middleware 430
10.4 Routing overlays 433
10.5 Overlay case studies:Pastry,Tapestry 436
10.6 Application case studies:Squirrel,OceanStore,Ivy 449
10.7 Summary 458
11 SECURITY 463
11.1 Introduction 464
11.2 Overview of security techniques 472
11.3 Cryptographic algorithms 484
11.4 Digital signatures 493
11.5 Cryptography pragmatics 500
11.6 Case studies:Needham-Schroeder,Kerberos,TLS,802.11 WiFi 503
11.7 Summary 518
12 DISTRIBUTED FILE SYSTEMS 521
12.1 Introduction 522
12.2 File service architecture 530
12.3 Case study:Sun Network File System 536
12.4 Case study:The Andrew File System 548
12.5 Enhancements and further developments 557
12.6 Summary 563
13 NAME SERVICES 565
13.1 Introduction 566
13.2 Name services and the Domain Name System 569
13.3 Directory services 584
13.4 Case study:The Global Name Service 585
13.5 Case study:The X.500 Directory Service 588
13.6 Summary 592
14 TIME AND GLOBAL STATES 595
14.1 Introduction 596
14.2 Clocks,events and process states 597
14.3 Synchronizing physical clocks 599
14.4 Logical time and logical clocks 607
14.5 Global states 610
14.6 Distributed debugging 619
14.7 Summary 626
15 COORDINATION AND AGREEMENT 629
15.1 Introduction 630
15.2 Distributed mutual exclusion 633
15.3 Elections 641
15.4 Coordination and agreement in group communication 646
15.5 Consensus and related problems 659
15.6 Summary 671
16 TRANSACTIONS AND CONCURRENCY CONTROL 675
16.1 Introduction 676
16.2 Transactions 679
16.3 Nested transactions 690
16.4 Locks 692
16.5 Optimistic concurrency control 707
16.6 Timestamp ordering 711
16.7 Comparison of methods for concurrency control 718
16.8 Summary 720
17 DISTRIBUTED TRANSACTIONS 727
17.1 Introduction 728
17.2 Flat and nested distributed transactions 728
17.3 Atomic commit protocols 731
17.4 Concurrency control in distributed transactions 740
17.5 Distributed deadlocks 743
17.6 Transaction recovery 751
17.7 Summary 761
18 REPLICATION 765
18.1 Introduction 766
18.2 System model and the role of group communication 768
18.3 Fault-tolerant services 775
18.4 Case studies of highly available services:The gossip architecture,Bayou and Coda 782
18.5 Transactions with replicated data 802
18.6 Summary 814
19 MOBILE AND UBIQUITOUS COMPUTING 817
19.1 Introduction 818
19.2 Association 827
19.3 Interoperation 835
19.4 Sensing and context awareness 844
19.5 Security and privacy 857
19.6 Adaptation 866
19.7 Case study:Cooltown 871
19.8 Summary 878
20 DISTRIBUTED MULTIMEDIA SYSTEMS 881
20.1 Introduction 882
20.2 Characteristics of multimedia data 886
20.3 Quality of service management 887
20.4 Resource management 897
20.5 Stream adaptation 899
20.6 Case studies:Tiger,BitTorrent and End System Multicast 901
20.7 Summary 913
21 DESIGNING DISTRIBUTED SYSTEMS:GOOGLE CASE STUDY 915
21.1 Introduction 916
21.2 Introducing the case study:Google 917
21.3 Overall architecture and design philosophy 922
21.4 Underlying communication paradigms 928
21.5 Data storage and coordination services 935
21.6 Distributed computation services 956
21.7 Summary 964
REFERENCES? 967
INDEX 967