Messages in this thread | | | From | "David Schwartz" <> | Subject | RE: Question regarding TCP behavior | Date | Thu, 29 May 2008 09:56:09 -0700 |
| |
> 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
| |