Section 23.8: Simple two-party transmission with guaranteed delivery (Frame 4)                     [prev][home][next]

An even worse thing can happen if the NAK is altered or even lost altogether. The receiver can only discover this if it sets a timer when it sends the NAK and if the new packet doesn't arrive before the timer goes off, it must resend the NAK.

The complications do not stop here, but in fact get thornier. Suppose that S keeps sending packets while R is waiting for the earlier packet. R is supposed to deliver a seamless bit stream up to the final destination process, all the bytes exactly in the order that the sender sends them. But memory is always limited and if S keeps sending packets, R is supposed to buffer them up but not deliver them to its upper level, because it must wait for the earlier packet to be retransmitted. Thus, R must have a way of yelling STOP! to the S. This is called flow control and is always a part of connection-oriented protocols. Otherwise, R will have to just ignore the incoming packets which causes S to waste its time and unnecessarily tie up the wire sending packets that will only have to be resent later.