TCP – Do All TCP Packets Have an ACK Reply?

Networkprotocol-theorytcp

The TCP Acknowledgements you see in the diagram's green arrows, have ACK numbers separated by 3000(two 1500 bytes).

I have a question, why the Ack number is separated by two packets? Or is it just convenient for the drawing? Should every TCP packet have a Ack reply?

Best Answer

This is a standard TCP feature (see RFC 1122) called Delayed ACK. The spec says you can wait before ACKing a packet but :

  • You shouldn't wait more than 500ms
  • You should ack every other packet if you are receiving full size packets.

It cuts down on the number of ACKs that you need to send.