Contents

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

REFERENCES