Hypothetical reliable data transfer protocol: A jumping window based Go-back-N ARQ protocol for file transfer using UDP as the transport protocol:
In this protocol, a window of size W is used. The sender continuously sends W packets corresponding to the current window, and then waits for an acknowledgement. The receiver receives W packets. If all the packets are error-free, it sends out a positive acknowledgement, say RR-i (RR: Receiver Ready). The receiver then moves its window starting from the packet with the sequence number i. Upon receiving RR-i the sender moves its window starting from the packet with the sequence number i. If a receiver receives a damaged packet (say, with the sequence number j) in its current window, it receives and discards all the remaining packets in the current window and it sends out a negative acknowledgement, say REJ-j (REJ: Reject). The receiver then moves its window starting from the packet with the sequence number j. Upon receiving REJ-j the sender moves its window starting from the packet with the sequence number j and sends out packets starting from j. Assume that the packet sequence number is in the range from 0 to 7. For each packet, 100 bytes of data is sent. Assume that a packet can be damaged according to a specified packet error probability. Ignore packet losses, ACK damages and losses. Implement the protocol, and measure and plot the throughput for different values of W (1, 2, 3, 4, and 5) and different error probabilities in the range from 0 to 0.5 in steps of 0.1. Use the random number generator to generate uniform distribution and declare a packet as damaged according to the specified error probability. Write a Report describing your implementation, how you carried out the performance study, performance graphs, and discussion on results.