AI Summary
[DOCUMENT_TYPE: user_assignment]
**What This Document Is**
This document outlines Project 2 for COM SCI 118, Computer Network Fundamentals at UCLA. It’s a practical, hands-on assignment focused on implementing a reliable data transfer protocol using the C/C++ programming languages and UDP sockets. This project requires students to build network applications – a sender and a receiver – capable of file transfer while managing the inherent unreliability of the UDP transport layer. It’s a core component of understanding how higher-level protocols function on top of lower-level network infrastructure.
**Why This Document Matters**
This project is essential for students seeking a deep understanding of network communication principles. It’s particularly valuable for those interested in network engineering, software development related to networking, or cybersecurity. Successfully completing this assignment demonstrates a practical ability to translate theoretical knowledge of reliable data transfer protocols into functional code. It’s best utilized during the project phase of the course, serving as a detailed guide for development, testing, and demonstration of the implemented solution.
**Topics Covered**
* Reliable Data Transfer Protocols (Selective Repeat & Go-Back-N)
* UDP Socket Programming in C/C++
* Packet Loss and Corruption Simulation
* Header Design for Reliable Delivery
* Network Application Development (Client-Server Model)
* Acknowledgement (ACK) Mechanisms
* Timer Implementation for Retransmission
* Windowing Concepts
**What This Document Provides**
* A clear project goal and detailed instructions for implementation.
* Guidelines for simulating real-world network conditions (packet loss and corruption).
* Suggestions for an incremental development approach.
* Specifications for command-line arguments and program execution.
* Requirements for debugging output and program demonstration.
* Information on how project credit will be distributed based on completed functions.
* Parameters for controlling window size, packet loss, and corruption probabilities during testing.