Data Communications and Networking
Author: Behrouz A Forouzan
As one of the fastest growing technologies in our culture today, data communications and networking presents a unique challenge for instructors. As both the number and types of students are increasing, it is essential to have a textbook that provides coverage of the latest advances, while presenting the material in a way that is accessible to students with little or no background in the field. Using a bottom-up approach, Data Communications and Networking presents this highly technical subject matter without relying on complex formulas by using a strong pedagogical approach supported by more than 700 figures.
Now in its Fourth Edition, this textbook brings the beginning student right to the forefront of the latest advances in the field, while presenting the fundamentals in a clear, straightforward manner. Students will find better coverage, improved figures and better explanations on cutting-edge material. The "bottom-up" approach allows instructors to cover the material in one course, rather than having separate courses on data communications and networking.
See also: Économétrie Préliminaire pour la Finance
Distributed Systems: Principles and Paradigms
Author: Andrew S Tanenbaum
Virtually every computing system today is part of a distributed system. Programmers, developers, and engineers need to understand the underlying principles and paradigms as well as the real-world application of those principles. Now, internationally renowned expert Andrew S. Tanenbaum – with colleague Martin van Steen – presents a complete introduction that identifies the seven key principles of distributed systems, with extensive examples of each. Adds a completely new chapter on architecture to address the principle of organizing distributed systems. Provides extensive new material on peer-to-peer systems, grid computing and Web services, virtualization, and application-level multicasting. Updates material on clock synchronization, data-centric consistency, object-based distributed systems, and file systems and Web systems coordination. For all developers, software engineers, and architects who need an in-depth understanding of distributed systems.
Table of Contents:
CONTENTS1 INTRODUCTION
1.1 DEFINITION OF A DISTRIBUTED SYSTEM
1.2 GOALS
1.2.1 Making Resources Accessible
1.2.2 Distribution Transparency
1.2.3 Openness
1.2.4 Scalability
1.2.5 Pitfalls
1.3 TYPES OF DISTRIBUTED SYSTEMS
1.3.1 Distributed Computing Systems
1.3.2 Distributed Information Systems
1.3.3 Distributed Pervasive Systems
1.4 SUMMARY
2 ARCHITECTURES
2.1 ARCHITECTURAL STYLES
2.2 SYSTEM ARCHITECTURES
2.2.1 Centralized Architectures
2.2.2 Decentralized Architectures
2.2.3 Hybrid Architectures
2.3 ARCHITECTURES VERSUS MIDDLEWARE
2.3.1 Interceptors
2.3.2 General Approaches to Adaptive Software
2.3.3 Discussion
2.4 SELF-MANAGEMENT IN DISTRIBUTED SYSTEMS
2.4.1 The Feedback Control Model
2.4.2 Example: Systems Monitoring with Astrolabe
2.4.3 Example: Differentiating Replication Strategies in Globule
2.4.4 Example: Automatic Component Repair Management in Jade
2.5 SUMMARY
3 PROCESSES
3.1 THREADS
3.1.1 Introduction to Threads
3.1.2 Threads in Distributed Systems
3.2 VIRTUALIZATION
3.2.1 The Role of Virtualization in Distributed Systems
3.2.2 Architectures of Virtual Machines
3.3 CLIENTS
3.3.1 Networked User Interfaces
3.3.2 Client-Side Software for Distribution Transparency
3.4 SERVERS
3.4.1 General Design Issues
3.4.2 Server Clusters
3.4.3 Managing Server Clusters
3.5 CODE MIGRATION
3.5.1 Approaches to Code Migration
3.5.2 Migration and Local Resources
3.5.3 Migration in Heterogeneous Systems
3.6 SUMMARY
4 COMMUNICATION
4.1 FUNDAMENTALS
4.1.1 Layered Protocols
4.1.2 Types of Communication
4.2 REMOTE PROCEDURE CALL
4.2.1 Basic RPC Operation
4.2.2 Parameter Passing
4.2.3 Asynchronous RPC
4.2.4 Example: DCE RPC
4.3 MESSAGE-ORIENTED COMMUNICATION
4.3.1 Message-Oriented Transient Communication
4.3.2 Message-Oriented Persistent Communication
4.3.3 Example: IBM’s WebSphere Message-Queuing System
4.4 STREAM-ORIENTED COMMUNICATION
4.4.1 Support for Continuous Media
4.4.2 Streams and Quality of Service
4.4.3 Stream Synchronization
4.5 MULTICAST COMMUNICATION
4.5.1 Application-Level Multicasting
4.5.2 Gossip-Based Data Dissemination
4.6 SUMMARY
5 NAMING
5.1 NAMES, IDENTIFIERS, AND ADDRESSES
5.2 FLAT NAMING
5.2.1 Simple Solutions
5.2.2 Home-Based Approaches
5.2.3 Distributed Hash Tables
5.2.4 Hierarchical Approaches
5.3 STRUCTURED NAMING
5.3.1 Name Spaces
5.3.2 Name Resolution
5.3.3 The Implementation of a Name Space
5.3.4 Example: The Domain Name System
5.4 ATTRIBUTE-BASED NAMING
5.4.1 Directory Services
5.4.2 Hierarchical Implementations: LDAP
5.4.3 Decentralized Implementations
5.5 SUMMARY
6 SYNCHRONIZATION
6.1 CLOCK SYNCHRONIZATION
6.1.1 Physical Clocks
6.1.2 Global Positioning System
6.1.3 Clock Synchronization Algorithms
6.2 LOGICAL CLOCKS
6.2.1 Lamport’s Logical Clocks
6.2.2 Vector Clocks
6.3 MUTUAL EXCLUSION
6.3.1 Overview
6.3.2 A Centralized Algorithm
6.3.3 A Decentralized Algorithm
6.3.4 A Distributed Algorithm
6.3.5 A Token Ring Algorithm
6.3.6 A Comparison of the Four Algorithms
6.4 GLOBAL POSITIONING OF NODES
6.5 ELECTION ALGORITHMS
6.5.1 Traditional Election Algorithms
6.5.2 Elections in Wireless Environments
6.5.3 Elections in Large-Scale Systems
6.6 SUMMARY
7 CONSISTENCY AND REPLICATION
7.1 INTRODUCTION
7.1.1 Reasons for Replication
7.1.2 Replication as Scaling Technique
7.2 DATA-CENTRIC CONSISTENCY MODELS
7.2.1 Continuous Consistency
7.2.2 Consistent Ordering of Operations
7.3 CLIENT-CENTRIC CONSISTENCY MODELS
7.3.1 Eventual Consistency
7.3.2 Monotonic Reads
7.3.3 Monotonic Writes
7.3.4 Read Your Writes
7.3.5 Writes Follow Reads
7.4 REPLICA MANAGEMENT
7.4.1 Replica-Server Placement
7.4.2 Content Replication and Placement
7.4.3 Content Distribution
7.5 CONSISTENCY PROTOCOLS
7.5.1 Continuous Consistency
7.5.2 Primary-Based Protocols
7.5.3 Replicated-Write Protocols
7.5.4 Cache-Coherence Protocols
7.5.5 Implementing Client-Centric Consistency
7.6 SUMMARY
8 FAULT TOLERANCE
8.1 INTRODUCTION TO FAULT TOLERANCE
8.1.1 Basic Concepts
8.1.2 Failure Models
8.1.3 Failure Masking by Redundancy
8.2 PROCESS RESILIENCE
8.2.1 Design Issues
8.2.2 Failure Masking and Replication
8.2.3 Agreement in Faulty Systems
8.2.4 Failure Detection
8.3 RELIABLE CLIENT-SERVER COMMUNICATION
8.3.1 Point-to-Point Communication
8.3.2 RPC Semantics in the Presence of Failures
8.4 RELIABLE GROUP COMMUNICATION
8.4.1 Basic Reliable-Multicasting Schemes
8.4.2 Scalability in Reliable Multicasting
8.4.3 Atomic Multicast
8.5 DISTRIBUTED COMMIT
8.5.1 Two-Phase Commit
8.5.2 Three-Phase Commit
8.6 RECOVERY
8.6.1 Introduction
8.6.2 Checkpointing
8.6.3 Message Logging
8.6.4 Recovery-Oriented Computing
8.7 SUMMARY
9 SECURITY
9.1 INTRODUCTION TO SECURITY
9.1.1 Security Threats, Policies, and Mechanisms
9.1.2 Design Issues
9.1.3 Cryptography
9.2 SECURE CHANNELS
9.2.1 Authentication
9.2.2 Message Integrity and Confidentiality
9.2.3 Secure Group Communication
9.2.4 Example: Kerberos
9.3 ACCESS CONTROL
9.3.1 General Issues in Access Control
9.3.2 Firewalls
9.3.3 Secure Mobile Code
9.3.4 Denial of Service
9.4 SECURITY MANAGEMENT
9.4.1 Key Management
9.4.2 Secure Group Management
9.4.3 Authorization Management
9.5 SUMMARY
10 DISTRIBUTED OBJECT-BASED SYSTEMS
10.1 ARCHITECTURE
10.1.1 Distributed Objects
10.1.2 Example: Enterprise Java Beans
10.1.3 Example: Globe Distributed Shared Objects
10.2 PROCESSES
10.2.1 Object Servers
10.2.2 Example: The Ice Runtime System
10.3 COMMUNICATION
10.3.1 Binding a Client to an Object
10.3.2 Static versus Dynamic Remote Method Invocations
10.3.3 Parameter Passing
10.3.4 Example: Java RMI
10.3.5 Object-Based Messaging
10.4 NAMING
10.4.1 CORBA Object References
10.4.2 Globe Object References
10.5 SYNCHRONIZATION
10.6 CONSISTENCY AND REPLICATION
10.6.1 Entry Consistency
10.6.2 Replicated Invocations
10.7 FAULT TOLERANCE
10.7.1 Example: Fault-Tolerant CORBA
10.7.2 Example: Fault-Tolerant Java
10.8 SECURITY
10.8.1 Example: Globe
10.8.2 Security for Remote Objects
10.9 SUMMARY
11 DISTRIBUTED FILE SYSTEMS
11.1 ARCHITECTURE
11.1.1 Client-Server Architectures
11.1.2 Cluster-Based Distributed File Systems
11.1.3 Symmetric Architectures
11.2 PROCESSES
11.3 COMMUNICATION
11.3.1 RPCs in NFS
11.3.2 The RPC2 Subsystem
11.3.3 File-Oriented Communication in Plan 9
11.4 NAMING
11.4.1 Naming in NFS
11.4.2 Constructing a Global Name Space
11.5 SYNCHRONIZATION
11.5.1 Semantics of File Sharing
11.5.2 File Locking
11.5.3 Sharing Files in Coda
11.6 CONSISTENCY AND REPLICATION
11.6.1 Client-Side Caching
11.6.2 Server-Side Replication
11.6.3 Replication in Peer-to-Peer File Systems
11.6.4 File Replication in Grid Systems
11.7 FAULT TOLERANCE
11.7.1 Handling Byzantine Failures
11.7.2 High Availability in Peer-to-Peer Systems
11.8 SECURITY
11.8.1 Security in NFS
11.8.2 Decentralized Authentication
11.8.3 Secure Peer-to-Peer File-Sharing Systems
11.9 SUMMARY
12 DISTRIBUTED WEB-BASED SYSTEMS
12.1 ARCHITECTURE
12.1.1 Traditional Web-Based Systems
12.1.2 Web Services
12.2 PROCESSES
12.2.1 Clients
12.2.2 The Apache Web Server
12.2.3 Web Server Clusters
12.3 COMMUNICATION
12.3.1 Hypertext Transfer Protocol
12.3.2 Simple Object Access Protocol
12.4 NAMING
12.5 SYNCHRONIZATION
12.6 CONSISTENCY AND REPLICATION
12.6.1 Web Proxy Caching
12.6.2 Replication for Web Hosting Systems
12.6.3 Replication of Web Applications
12.7 FAULT TOLERANCE
12.8 SECURITY
12.9 SUMMARY
13 DISTRIBUTED COORDINATION-BASED
SYSTEMS
13.1 INTRODUCTION TO COORDINATION MODELS
13.2 ARCHITECTURES
13.2.1 Overall Approach
13.2.2 Traditional Architectures
13.2.3 Peer-to-Peer Architectures
13.2.4 Mobility and Coordination
13.3 PROCESSES
13.4 COMMUNICATION
13.4.1 Content-Based Routing
13.4.2 Supporting Composite Subscriptions
13.5 NAMING
13.5.1 Describing Composite Events
13.5.2 Matching Events and Subscriptions
13.6 SYNCHRONIZATION
13.7 CONSISTENCY AND REPLICATION
13.7.1 Static Approaches
13.7.2 Dynamic Replication
13.8 FAULT TOLERANCE
13.8.1 Reliable Publish-Subscribe Communication
13.8.2 Fault Tolerance in Shared Dataspaces
13.9 SECURITY
13.9.1 Confidentiality
13.9.2 Secure Shared Dataspaces
13.10 SUMMARY
14 SUGGESTIONS FOR FURTHER READING
AND BIBLIOGRAPHY
14.1 SUGGESTIONS FOR FURTHER READING
14.1.1 Introduction and General Works
14.1.2 Architectures
14.1.3 Processes
14.1.4 Communication
14.1.5 Naming
14.1.6 Synchronization
14.1.7 Consistency and Replication
14.1.8 Fault Tolerance
14.1.9 Security
14.1.10 Distributed Object-Based Systems
14.1.11 Distributed File Systems
14.1.12 Distributed Web-Based Systems
14.1.13 Distributed Coordination-Based Systems
14,2 ALPHABETICAL BIBLIOGRAPHY
INDEX
No comments:
Post a Comment