RE: Question regarding TCP behavior

From: David Schwartz
Date: Thu May 29 2008 - 12:56:51 EST



> Greetings.
>
> I have a question about how linux's TCP stack behaves.
> I apologize if this is not the right place to ask this question and
> please redirect me.
>
> When a TCP end point (A) sends x bytes of data to the other end point (B),
> does B immediately ACK the received bytes or will it do so only
> when the data
> is passed to the upper layer ?
>
>
> Thanks
> Thomas

If the TCP connection was idle and there is no unacknowledged data in either
direction, the answer is neither.

Acknowledging the data immediately is wasteful. There's a very good chance
another packet is right behind this one and delaying the acknowledgement
would save a packet.

Waiting for upper layers is disastrous, it could result in the other end
timing out and retransmitting and would limit the end of slow start based on
user-space speeds.

Google "delayed ACK".
http://www.freesoft.org/CIE/RFC/1122/110.htm

DS


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/