Wednesday, January 14, 2009

Data Communications and Networking or Distributed Systems

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:
CONTENTS


 


1 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