0

I was going through the book TCP/IP Illustrated and in the zero windows section, I noticed the use of a TCP persist timer - which is used to avoid losing a window update message from a receiver after a zero window scenario has just ended. Apparently, losing the window update message is of higher probability since it's a 'pure ACK' packet, as opposed to a packet with actual data.

Can someone please tell me what the difference in delivery of a pure ack packet and a data packet is? Thanks!

2

Can someone please tell me what the difference in delivery of a pure ack packet and a data packet is?

The difference is just that the one contains data (application payload) while the other does not. If a packet contains data it needs to be acknowledged by the recipient. If it does not contain data it will not be acknowledged.

This means that a loss of the packet will be recognized by the sender only if the ACK is outstanding. This is not true for a pure window update.

Or in maybe more clear scenarios:

  • A sends dataA to B. B sends ACK(dataA)+dataB to A.
    A loss of the latter packet will be detected by B since an ACK(dataB) from A is expected.
  • A sends dataA to B. B sends just an ACK without data back: ACK(dataA).
    A loss of the latter packet will not be directly detected by B. But A will miss the ACK(dataA) and thus retransmit dataA, resulting in B sending ACK(dataA) again.
  • B has already send ACK(dataA). It now send ACK(dataA) with just a window update and no data.
    A will not detect if this packet got lost because it got ACK(dataA) before. B will not detect if this packet got lost either because it does not expect A to reply to it.
1

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.