Windows, Buffers, and Watermarks

This section is about windows, buffers, and watermarks. It should still be considered a work in progress. The explanations available to me were very confusing, though the new Stevens helped to clear up a few things. If you have corrections to this section, please let me know and contribute to an update of the page. Many readers will thank you!

Buffers and related issues

Figure C-4. Buffers and related issues

Here is just a short trip through the network layer to explain what happens where. Your application can send any size data to the transport layer, which is either UDP or TCP. The socket buffers are implemented on the transport layer. Depending on your choice of transport protocol, different actions are taken on this level (see Figure 3.4).

TCP

All application data is copied into the socket buffer. If there is insufficient room, the application will be put to sleep. From the socket buffer, TCP will create segments. No chunk exceeds the MSS.

Only when the data has been acknowledged from the peer instance can the data be removed from the socket buffer. For slow connections, this implies that some data may occupy the buffer for a very long time.

UDP

The socket buffer size of UDP is simply the maximum size datagram UDP is able to transmit. Larger datagrams ought to elicit the EMSGSIZE error response from the socket layer. With UDP implementing an unreliable service, there is ...

Get Web Performance Tuning now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.