We said that TCP provides reliability guarantees, but UDP doesn’t. Yet, many applications run over UDP that one would imagine want reliability — DNS is a perfect example. How is it possible for an application (like DNS) to run over UDP, yet still enjoy reliable data transfer?
2) RDT Tools
For each of our RDT tools, describe what their mission is. Also describe their shortcomings.
3) ACK vs. NAK
I’d like you to think about why a protocol might use ACKs instead of NAKs.
Imagine a protocol that only uses NAKs. What would happen if the sender infrequently sends segments? Would NAK be better?
Now, suppose the sender has lots of data to send. Is that better? Why or why not?
Does it depend on the error rate? What if there are few errors? Which is better?
4) Sequence Numbers
Think about the GBN protocol with a window size of 4 and a 10-bit sequence number (i.e. sequence numbers are in the range 0 – 1023). Suppose that the receiver’s expected sequence number is k. Assume the network doesn’t re-order messages.
What are the possible ranges of sequence numbers in the sender’s window? Why?
What are all possible values in any ACK messages currently in ï¬‚ight back to the sender? Why?