evaluating capture packets, client sends packets with seq numbers 1271, 2646, 4021, 5396, 6771, 8146, 9521, 10896, 12271, 13646 Receiver sends acknowledgements with acks= 5396, 8146, 10896, 13646
Why are acknowledgements sent for every other packet and where in the packet can this information be found?
asked 13 Oct '17, 16:02
The ACK frequency (every other packet) is something that was proposed in the TCP RFC, e.g. in https://tools.ietf.org/html/rfc1122 at section "220.127.116.11 When to Send an ACK Segment". Every stack can chose the acknowledgement frequency it wants to use, but usually it's "every other packet". ACKing each packet would send unnecessary amounts of packets in most situations.
answered 14 Oct '17, 01:26
Because the communication path between the sender and the recipient and back may introduce a significant amount of delay, sending a packet only after receiving the acknowledge for the previously sent one could seriously limit the throughput. To mitigate the influence of RTT (Round-Trip Time) to the throughput, TCP has introduced a concept of receive window and a summary ACK which confirms reception of all bytes from the first one up to the ACKed one, rather than reception of individual packets. So there is no need to send ACK for each SEQ.
There is an add-on to this philosophy which allows to inform the sender about ranges of data newer than the ACKed ones which have already been received and which are still missing, it is called Selective Acknowledge - SACK.
answered 14 Oct '17, 01:36
edited 14 Oct '17, 01:38