Preface
Purposes and readership; Organization of the book; References; Changes relative to the third edition; Acknowledgements; Web site
1 Characterization of Distributed Systems
1.1 Introduction
1.2 Examples of distributed systems
1.3 Trends in distributed systems
1.4 Focus on resource sharing
1.5 Challenges
1.6 Case Study: the World Wide Web
1.7 Summary
2 System models
2.1 Introduction
2.2 Physical models
2.3 Architectural models
2.4 Fundamental models
2.5 Summary
3 Networking and Internetworking
3.1 Introduction
3.2 Types of network
3.3 Network principles
3.4 Internet protocols
3.5 Case studies: Ethernet, WiFi and Bluetooth
3.6 Summary
4 Interprocess Communication
4.1 Introduction
4.2 The API for the Internet protocols
4.3 External data representation and marshalling
4.4 Multicast communication
4.5 Network virtualization: Overlay networks
4.6 Case study: MPI
4.7 Summary
5 Remote Invocation
5.1 Introduction
5.2 Request-reply protocols
5.3 Remote procedure call
5.4 Remote method invocation
5.5 Case study: Java RMI
5.6 Summary
6 Indirect communication
6.1 Introduction
6.2 Group communication
6.3 Publish-subscribe systems
6.4 Message queues
6.5 Shared memory approaches
6.6 Summary
7 Operating System Support
7.1 Introduction
7.2 The operating system layer
7.3 Protection
7.4 Processes and threads
7.5 Communication and invocation
7.6 Operating system architecture
7.7 Virtualization at the operating system level
7.8 Summary
8 Distributed objects and components
8.1 Introduction
8.2 Distributed objects
8.3 Case study: CORBA
8.4 From objects to components
8.5 Case studies: Enterprise JavaBeans and Fractal
8.6 Summary
9 Web services
9.1 Introduction
9.2 Web services
9.3 Service descriptions and IDL for web services
9.4 A directory service for use with web services
9.5 XML security
9.6 Coordination of web services
9.7 Applications of web services
9.8 Summary
10 Peer-to-peer Systems
10.1 Introduction
10.2 Napster and its legacy
10.3 Peer-to-peer middleware
10.4 Routing overlays
10.5 Overlay case studies: Pastry, Tapestry
10.6 Application case studies: Squirrel, OceanStore, Ivy
10.7 Summary
11 Security
11.1 Introduction
11.2 Overview of security techniques
11.3 Cryptographic algorithms
11.4 Digital signatures
11.5 Cryptography pragmatics
11.6 Case studies: Needham–Schroeder, Kerberos, TLS, 802.11 WiFi
11.7 Summary
12 Distributed File Systems
12.1 Introduction
12.2 File service architecture
12.3 Case study: Sun Network File System
12.4 Case study: The Andrew File System
12.5 Enhancements and further developments
12.6 Summary
13 Name Services
13.1 Introduction
13.2 Name services and the Domain Name System
13.3 Directory services
13.4 Case study: The Global Name Service
13.5 Case study: The X.500 Directory Service
13.6 Summary
14 Time and Global States
14.1 Introduction
14.2 Clocks, events and process states
14.3 Synchronizing physical clocks
14.4 Logical time and logical clocks
14.5 Global states
14.6 Distributed debugging
14.7 Summary
15 Coordination and Agreement
15.1 Introduction
15.2 Distributed mutual exclusion
15.3 Elections
15.4 Coordination and agreement in group communication
15.5 Consensus and related problems
15.6 Summary
16 Transactions and Concurrency Control
16.1 Introduction
16.2 Transactions
16.3 Nested transactions
16.4 Locks
16.5 Optimistic concurrency control
16.6 Timestamp ordering
16.7 Comparison of methods for concurrency control
16.8 Summary
17 Distributed Transactions
17.1 Introduction
17.2 Flat and nested distributed transactions
17.3 Atomic commit protocols
17.4 Concurrency control in distributed transactions
17.5 Distributed deadlocks
17.6 Transaction recovery
17.7 Summary
18 Replication
18.1 Introduction
18.2 System model and the role of group communication
18.3 Fault-tolerant services
18.4 Case studies of highly available services: the gossip architecture, Bayou and Coda
18.5 Transactions with replicated data
18.6 Summary
19 Mobile and Ubiquitous Computing
19.1 Introduction
19.2 Association
19.3 Interoperation
19.4 Sensing and context-awareness
19.5 Security and privacy
19.6 Adaptation
19.7 Case Study: Cooltown
19.8 Summary
20 Distributed Multimedia Systems
20.1 Introduction
20.2 Characteristics of multimedia data
20.3 Quality of service management
20.4 Resource management
20.5 Stream adaptation
20.6 Case studies: Tiger, BitTorrent and End System Multicast
20.7 Summary
21 Designing Distributed systems: Google Case Study
21.1 Introduction
21.2 Introducing the case study: Google
21.3 Overall architecture and design philosophy
21.4 Underlying communication paradigms
21.5 Data storage and coordination services
21.6 Distributed computation services
21.7 Summary