Chapter 2. Communication

Table of Contents

2.1. Unreliable Unicast
2.1.1. Example: IP Addressing And Routing
2.1.2. Example: IP Fragmentation And Reassembly
2.2. Reliability In Unicast
2.2.1. Packet Damage
2.2.2. Packet Loss
2.2.3. Packet Duplication
2.2.4. Other Failures
2.2.5. Example: TCP Reliability
2.3. Flow And Congestion
2.3.1. Example: TCP Flow And Congestion
2.4. Timing Guarantees
2.4.1. Example: Resource Reservation Protocol
2.4.2. Example: Real Time Protocol
2.4.3. Example: Real Time Streaming Protocol
2.5. Rehearsal
2.6. Unreliable Multicast
2.6.1. Example: IP Multicast Addressing And Routing
2.7. Reliability In Multicast
2.7.1. Sender Initiated Error Recovery
2.7.2. Receiver Initiated Error Recovery
2.7.3. Tree Topology
2.7.4. Ring Topology
2.8. Ordering Guarantees
2.8.1. Causal Relation
2.8.2. Lamport Clock
2.8.3. Vector Clock
2.8.4. Example: Reliable Multicast Protocol
2.9. Rehearsal
2.10. Addressing By Content
2.11. Rehearsal
2.12. Messaging Interfaces
2.12.1. Messages
2.12.2. Addresses
2.12.3. Blocking
2.12.4. Synchronization
2.12.5. Underlying Protocol Issues
2.12.6. Rehearsal
2.13. Streaming Interfaces
2.13.1. Rehearsal
2.14. Remote Procedure Call
2.14.1. Stub Generation
2.14.2. Argument Passing
2.14.3. Parallelism
2.14.4. Lifecycle
2.14.5. Underlying Protocol Issues
2.14.6. Rehearsal
2.15. Distributed Shared Memory
2.15.1. Rehearsal

The support for communication in a distributed application is perhaps the most frequently offered middleware feature. The support for communication includes building network protocols on top of the functions provided by the network hardware, and building application interfaces on top of the functions provided by the network protocols.

The role of network protocols in middleware is efficiently supporting various forms of communication that the applications may require. The protocols are built in layers that form a protocol stack. At the very bottom of the stack are the functions provided by the network hardware, which allow sending and receiving packets on the network segment connected directly to the network hardware. Further up the protocol stack, other layers add necessary functions such as routing, fragmentation and reassembly, acknowledgement and retransmission, etc.

The role of application interfaces in middleware is seamlessly integrating various forms of communication into the applications. The interfaces take care of formatting the data to be communicated, synchronizing the communicating parties, reporting the communication errors, etc.

The following sections describe selected groups of network protocols, roughly in the order of increasing complexity, and selected groups of application interfaces.