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!

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
EMSGSIZEerror response from the socket layer. With UDP implementing an unreliable service, there is ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access