For example, in Windows OS, the TCP window size always change around 30000~60000 (of course, max 65535). The objective of window size is to inform the TCP sender and receiver, and improve the packet transmission efficiency.

I heard that some OS (e.g. solaris) always use fixed window size. Then why not Windows OS always keep the window size at max 65535 or a large value? What determine the window size and always change it?

  • 2
    This question would be better asked on Serverfault.com. Questions about operating systems are off-topic here.
    – Ron Trunk
    Commented Jun 16, 2016 at 13:12

1 Answer 1


Window sizes are used by the receiver to let the sender know how much memory (buffer) it has for that particular TCP connection. The size will keep dropping until the receiver sends am ACK to the sender which acknowledges it has received the traffic the sender has sent. At this point in time the window size is increased to accommodate the size of the traffic which had been acknowledged. For example, if 8KB of data was sent, the window size would drop by 8KB. If then 3KB is acknowledged, it will be increased by 3KB at that point in time.

If the sender does not send an ACK, the window size will eventually drop to 0 and the sender will stop sending new traffic to the receiver until it receives an ACK (it will resend old data if it doesn't receive an ACK within a reasonable amount of time (this is called a retransmission)).

In regards to the maximum window size, this can be increased using the window scaling option. This option is used to allow more data to be sent before the sender has to wait for an ACK. This is to ensure that high latency links can still fully utilise their links (see Long Fat Networks and Bandwidth Delay Product for more information).

Also, please see this link for more information on both TCP windows and scaling.

Not the answer you're looking for? Browse other questions tagged or ask your own question.