Programming Project 2 – Reliable Data Transmission (RDT)
The document outlines the requirements for Programming Project 2, which focuses on Reliable Data Transmission (RDT). It details the code submission, key logic functions, timeout resolution, packet dropping handling, and retransmission policy. Additionally, it instructs on testing with two different text lengths and capturing screenshots of the code execution for submission.
Programming Project 2 – Reliable Data Transmission (RDT)
The document outlines the requirements for Programming Project 2, which focuses on Reliable Data Transmission (RDT). It details the code submission, key logic functions, timeout resolution, packet dropping handling, and retransmission policy. Additionally, it instructs on testing with two different text lengths and capturing screenshots of the code execution for submission.
Programming Project 2 – Reliable Data Transmission (RDT)
1. Include a copy of all your code.
2. Include the answers and screenshots for the following questions: a. Where did the bulk of logic occur? (3 pts) i. The majority of the logic occurs in the processSend() function and processReceiveAndSendRespond() function. These functions are responsible for handling incoming data and handling potential issues like dropped packets or timeouts. b. How were the timeouts resolved? What happens if timeouts have been resolved? (3+ 2 pts) i. Sent packets are stored in the unackedSegments dictionary and the segment’s corresponding send time is stored in sentTimestamps. Each time processSend() is called, unackedSegments is checked to see if the timeout has been exceeded. ii. If a timeout is identified, processSend() resends all packets starting at the earliest acknowledged sequence number. Finally, the countSegmentTimeouts variable is incremented. iii. Once timeouts are resolved, the segment is removed from the unackedSegments data structure. If unackedSegments is empty, the next segment is transmitted as normal. c. How was the packet dropping handled? (2 pts) i. As mentioned above, the unackedSegments dictionary is used to keep track of any unacknowledged segments. If an ACK never arrives, the timeout mechanism is triggered. If a timeout is triggered, all unacknowledged packets are resent. d. How was the retransmission policy implemented (5 pts)? Please provide a screenshot of the output to show the policy clearly. i. Retransmission is initiated whenever the timeout mechanism is triggered, this results in all unacknowledged segments being resent, starting at the first unacknowledged segment. ii. 3. In rdt_main.py, you will see two different length texts to send through the RDTLayer. Start with the smaller one, then try the larger one. 4. Take screenshots of your running code for both the larger and smaller texts and include it in your submission doc.