I am reading Stevens, Chappell and some Microsoft articles and I am not sure if I have a clear understanding on when delayed acks start.
I think Stevens says the timer is started at basically PC boot up and when a packet arrives needing a ACK a flag is set, so this could occur any where from 200ms to 0ms. So a delayed ack packet can be seen say at 10ms.
But some Microsoft articles seem to say the delayed ack timer starts at the arrival of the packet so would be 200ms from that point.
Is it one or the other or might it depend on the implementation?
Thanks for all answers.
asked 28 Jun '11, 19:24
Short answer: The timer starts at packet arrival.
Longer answer: RFC 1122 says two things about Delayed ACKs:
Most systems set the delay at 200 ms.
So, if delayed ACK is implemented, and it's a stream of full-sized segments, the receiver will send ACKs for packets 2, 4, 6, 8, 10, 12, etc. If there were no delayed ACK timer, what would happen if there was an odd number of packets? Suppose there were 5 packets. The receiver would do nothing when packet 1 arrives, ACK packet 2, do nothing when packet 3 arrives, ACK packet 4, do nothing when packet 5 arrives, and then be stuck waiting for packet 6 to arrive.
What happens with the delayed ACK timer?
Packet 1 arrives: Start the 200 ms delayed ACK timer. Before the timer expires,
Packet 2 arrives: Send an ACK
Packet 3 arrives: Start the delayed ACK timer. Before the timer expires,
Packet 4 arrives: Send an ACK
Packet 5 arrives: Start the delayed ACK timer. After 200 ms, the timer expires, send an ACK.
answered 28 Jun '11, 21:41