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

An easy way to combine both flow control and retransmission requests is to have R always send a packet stating whether it received the packet or not. If the packet arrived okay, R sends an ACK with the sequence number back to S. If the packet arrives but is corrupted by a transmission error, R sends a NAK with the sequence number, as discussed earlier. If the packet never arrives at R, S must have a timer of its own and it must resend the packet or even back up to an earlier point in the bit stream and resend all packets from that point on. Fig. 23.8.3 shows the stream of packets and ACKs and NAKs.


Fig. 23.8.3: ACKs and NAKs

Sending an ACK for every single packet will cause unnecessary traffic on the wire so many protocols, including TCP, arrange to send an ACK every so many packets. When S receives a message like "ACK 7", it knows that R received every packet from 0 up to and including 7. Separate ACKs for 4, 5 and 6 are not necessary.