On Tue, 7 Aug 2001, Mike Sutton [ awacs ] wrote:
TCP Header
Could an expert tell me "how" the "window" value is generated and "what" explicitly it means...
This is probably hopelessly off-topic (and I'm no expert!), but here goes: The TCP Window field in the header is the amount of data that you can send without receiving an acknowledgement from the other end of the connection. Think of it as the amount of data that's allowed to be "outstanding" (i.e. waiting for an acknowledgement) before you have to stop and wait for an acknowledgement for at least some of it. Originally, TCP had a 16 bit value to describe the window size (up to 64Kb window size), but later enhancement added a "window scaling" option which allows the negotiation of much larger window values. How this value is "set" varies between operating systems. Supported options (e.g. sliding window) are normally negotiated at connection time, and further adjustments (e.g. window size) take place over the life of the connection (successful transmission generally pushes the window size up). Detailed info on tuning specific operating systems is at http://www.psc.edu/networking/perf_tune.html. If you're writing your own sockets code, most operating systems calculate the maximum buffer size as a function of the socket send and receive buffer sizes. There are some exceptions to this, however -- linux is typically perverse, and some Windows-flavoured things lack bits to twiddle. The purpose of all of this, in case you're still wondering, is efficient negotiable rate control (my cluster of Alphaservers can't hammer your Windows CE PDA into the ground with a chunk of data larger than your device's entire memory) while still making the most efficient use of the link available. Like much of the IP, this is an elegant mechanism that achieves something very clever by being deceptively simple. We like IP. IP good. Mmmm. Good. <R>< --------- To unsubscribe from nznog, send email to majordomo(a)list.waikato.ac.nz where the body of your message reads: unsubscribe nznog