0% found this document useful (0 votes)
11 views

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.

Uploaded by

ryan.spencer1220
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
11 views

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.

Uploaded by

ryan.spencer1220
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 3

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.

a.​
b.​

You might also like