Principles of Protocol Design 2008 Edition


Table of Contents

Preface

1 Introduction

1.1 What is a Protocol?

1.2 Protocols as Processes

1.3 Techniques for Actual Protocols

1.4 Real Protocols

1.5 Reader's Guide

2 CSP Descriptions and Proof Rules

2.1 Processes and Process Synchronisation

2.1.1 Process Expressions
2.1.2 Process Algebra
2.1.3 Process Expressions for Process Networks

2.2 Channel History Semantics

2.2.1 Transitions and Traces
2.2.2 Inference Rules for Specifications Based on Traces

2.3 Failure Semantics

3 Protocols and Services

3.1 Providing a Service

3.1.1 Proving the Protocol Correct
3.1.2 Structuring your Proof

3.2 Service Features

3.2.1 Sequence Preservation
3.2.2 Data Unit Synchronisation
3.2.3 Flow Control
3.2.4 Freedom from Error
3.2.5 Service Reset
3.2.6 Connection Establishment and Release
3.2.7 Change of Mode
3.2.8 Information about Peer Change of State
3.2.9 Expedited Data
3.2.10 Security

3.3 OSI and Other Layered Architectures

3.3.1 The Internet and Other Layered Architectures

4 Basic Protocol Mechanisms

4.1 Sequence Control and Error Control

4.1.1 Corruption Control
4.1.2 Simple ACK/NACK protocols
4.1.3 Simple Polling Protocols
4.1.4 ACK/NACK Protocols with Timeout
4.1.5 The Alternating Bit Protocol
4.1.6 The Case of the Floating Corpses

4.2 Flow Control

4.2.1 Fixed Window Protocols
4.2.2 Protocols with Receive Window Size 1
4.2.3 Protocols with Receive Window Size Greater than 1
4.2.4 Dynamic Window Systems and the Concept of Credit

4.3 Indication of Change of Peer State

4.3.1 Two-way Exchanges
4.3.2 Atomic Two-way Exchanges
4.3.3 Exchanges in the Presence of Errors

4.4 Change of Service Mode

4.4.1 Connection-mode and Connectionless-mode
4.4.2 Point-to-point and Multi-peer
4.4.3 Simplex and Duplex

4.5 Multiplexing and Splitting

4.5.1 Multiplexing
4.5.2 Splitting

4.6 Segmentation and Reassembly

4.7 Prioritisation

5 Multi-peer Consensus

5.1 Reliable Broadcasts

5.2 Election

5.3 Commitment

5.4 Byzantine Agreement

5.4.1 Using unsigned messages
5.4.2 Using signed messages
5.4.3 Other forms of Byzantine agreement

5.5 Clock Synchronisation

5.5.1 Logical Clocks
5.5.2 Real time Clocks
5.5.3 Byzantine Clock Synchronisation

5.6 Finding the Global State

6 Security

6.1 Cryptographic Methods

6.1.1 Encipherment
6.1.2 Secret Key Cryptosystems
6.1.3 Public Key Cryptosystems

6.2 Integrity

6.3 Digital Signatures

6.4 Entity Authentication

6.4.1 Authentication with Secret Key Cryptosystems
6.4.2 Authentication with Public Key Cryptosystems
6.4.3 Proofs of Authentication Protocols
6.4.4 Certification Authorities

6.5 Key Exchange

6.6 Non-cryptographic Methods

7 Naming, Addressing and Routing

7.1 General Principles of Naming and Addressing

7.1.1 Naming Strategies in the Upper Layers of the System
7.1.2 Directories and Servers
7.1.3 Distributed Directories
7.1.4 Internet Naming and the INternet DNS

7.2 Addressing Structures

7.2.1 OSI Addressing
7.2.2 Internet Addressing
7.2.3 MOTIS/MHS Addressing

7.3 Routing

7.3.1 Flooding
7.3.2 Static Routing
7.3.3 Tree Routing
7.3.4 Centralised Adaptive Routing
7.3.5 Isolated Adaptive Routing
7.3.6 Distributed Adaptive Routing
7.3.7 Exploratory Routing

7.4 Congestion

7.4.1 Discarding
7.4.2 Limiting the Number of PDUs
7.4.3 Timeout-based Control
7.4.4 Explicit Feedback
7.4.5 Deadlock

8 Protocol Encoding

8.1 Simple Binary Encoding

8.2 TLV Encoding

8.3 ASN.1 Encoding

8.3.1 ASN.1 Types
8.3.2 ASN.1 Values
8.3.3 ASN.1 Encoding Rules

8.4 ASCII Encodings

8.4.1 MIME Encoding
8.4.2 S/MIME Encoding
8.4.3 XML Encoding
8.4.4 XML Types
8.4.5 XML Security

9 Protocols in the OSI Lower Layers

9.1 Data Link Layer

9.1.1 Connection-mode
9.1.2 Connectionless-mode

9.2 Network Layer

9.2.1 Connection-mode
9.2.2 Connectionless-mode
9.2.3 Network Layer Security

9.3 Transport Layer

9.3.1 Connection-mode
9.3.2 Connectionless-mode

10 Application Support Protocols

10.1 Session Layer

10.2 Presentation Layer

10.3 Application Layer

10.4 Basic Application Service Elements

10.4.1 Association Control
10.4.2 Remote Operations

10.5 Commitment, Concurrency and Recovery

10.6 Client-server Systems

10.6.1 Remote Procedure Call
10.6.1 Binding
10.6.1 Asynchronous RPC
10.6.1 Object Services and Middleware
10.6.1 SOAP

10.7 Security Middleware

11 Application Protocols

11.1 File Transfer

11.1.1 ISO File Transfer and Management
11.1.2 Internet FTP
11.1.3 Network File System

11.2 Distributed Transaction Processing

11.3 Message Handling

11.3.1 The MOTIS Message Transfer Sub-layer
11.3.2 The MOTIS Interpersonal Message Service
11.3.3 Internet Mail Protocols

11.4 Message Handling

11.4.1 Uniform Resource Identifiers
11.4.2 Hypertext Transfer Protocols
11.4.3 Web Caching
11.4.3 HTTP Authentication
11.4.3 Stateful HTTP and Cookies
11.4.3 Secure HTTP

11.5 Message Handling

11.5.1 Web Service Description Language
11.5.2 Publication and Discovery of Web Services
11.5.3 Web Service Architectures

Appendix A. Notation

A.1 Data Types and Variables

A.2 Data Values and Expressions

A.3 Processes and Process Expressions

A.4 Traces, Failures and Transitions

A.5 Inference Rules for Process Specifications

A.6 Security

Appendix B. Standardisation of Protocols

B.1 Standards Organisations

B.2 Standards Documents

B.2.1 ISO standards
B.2.2 ITU-T recommendations
B.2.3 Internet standards

References

Index