Prof. Mourad Elhadef, Ph. D. teaches CSC408 focusing on distributed information systems.
Chapter 02A covers key topics: UDP (User Datagram Protocol), TCP (Transmission Control Protocol), and Multicast.
The applications discussed revolve around simple client-server systems and group communication.
Students will learn to develop distributed systems utilizing:
UDP Datagram Communication: Implementing systems using UDP.
TCP Stream Communication: Implementing systems using TCP.
Multicast Group Communication: Exploring communication strategies for groups.
Introduction: Understand the fundamentals of client-server communication.
UDP Datagram Communication: Insights into how datagrams are transmitted.
TCP Stream Communication: Characteristics and strategies for using TCP.
Group Communication (Multicast): Techniques for utilizing multicast in distributed systems.
Synchronous: Processes synchronize for every message.
Asynchronous: Flexible, with no synchronization between sending and receiving processes.
Send/Receive Operations:
Synchronous: blocking operations that wait for completion.
Asynchronous: non-blocking, allowing processes to continue execution.
Destinations: Messages are sent to secure addresses defined by Internet address and ports.
Reliability:
Integrity: Confirmation that messages are received intact.
Validity: Ensuring messages hold necessary content.
Ordering: Required for applications needing messages in sequence.
Sockets: Endpoints for communications, bound to local ports and an Internet address.
Each protocol (UDP or TCP) correlates to a specific socket, with 216 possible ports available for binding.
Client processes wait for server replies; reliability hinges on acknowledgment of requests.
Types of faults:
Omission Faults: Messages may be lost, requiring robust handling strategies like timeouts and idempotent operations.
Variants define how messages (Request, Reply) are sent and acknowledged.
UDP transmits datagrams without acknowledgments or retries, which speeds up communication but lacks delivery guarantees.
Failure Modes: Messages can be dropped (omission failures) or arrive out of order.
Efficient performance as it minimizes overheads typically found in guaranteed delivery methods.
InetAddress class: Represents Internet addresses for communication.
DatagramPacket class: For creating packets of data for transmission.
Structure includes socket creation and operations to send/receive data, handling various exceptions.
Utilizes streams with guaranteed delivery mechanisms. Handles message sizes, lost messages, flow control, and data integrity.
Flow matching: TCP servers synchronize their read/write speeds with connected processes.
Socket class: Facilitates connection to servers.
ServerSocket class: Used for accepting new client connections.
Code examples illustrate how a client sends messages and how a server responds, handling potential exceptions during communication.
Sends one message to multiple group members, promoting fault tolerance and efficiency through replicated services.
IP multicast is primarily executed within UDP.
MulticastSocket Class: Provides functionalities for joining/leaving groups, sending/receiving messages, and setting network interfaces for multicast packets.
Code snippets demonstrate a multicast peer's behavior, including how to send and receive datagrams efficiently.