Consider a simple protocol for transferring files over a link. After some
initial negotiation, A sends data packets of size \(1 \mathrm{~KB}\) to B; B
then replies with an acknowledgment. A always waits for each ACK before
sending the next data packet; this is known as stop-and-wait. Packets that are
overdue are presumed lost and are retransmitted.
(a) In the absence of any packet losses or duplications, explain why it is not
necessary to include any "sequence number" data in the packet headers.
(b) Suppose that the link can lose occasional packets, but that packets that
do arrive always arrive in the order sent. Is a 2-bit sequence number (that
is, \(N\) mod 4) enough for \(\mathrm{A}\) and \(\mathrm{B}\) to detect and resend
any lost packets? Is a 1-bit sequence number enough?
(c) Now suppose that the link can deliver out of order, and that sometimes a
packet can be delivered as much as 1 minute after subsequent packets. How does
this change the sequence number requirements?