This is a static archive of our old Q&A Site. Please post any new questions and answers at ask.wireshark.org.

tcp ack sequence

0

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

PaulPi's gravatar image

PaulPi
6112
accept rate: 0%


2 Answers:

0

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 "4.2.3.2 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

Jasper's gravatar image

Jasper ♦♦
23.8k551284
accept rate: 18%

0

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

sindy's gravatar image

sindy
6.0k4851
accept rate: 24%

edited 14 Oct '17, 01:38