The original TCP specification included a window size no larger than 64 KB. This limitation was introduced by the 16 bit header that specified window size. To achieve the recommended 1 MB window size, RFC 1323 TCP extensions must be enabled. The rest of this post is a somewhat detailed elaboration of how the RFC 1323 TCP window scaling option works.

The TCP window scaling option in RFC 1323 allows for a maximum window size of 1 GB. This particular limitation is derived from the original design of TCP that requires a data segment's sequence number to be within the first 231 bytes (2 GB) of the window. If the sequence number does not appear in that area, the data segment is considered old and discarded. To guarantee the sequence number is always withing the first 231 bytes, RFC 1323 requires the maximum window size to be less than 230 bytes.

The TCP window scaling option works by including a scale factor in a SYN packet. This scale factor informs the receiver that the sender is willing to do window scaling and offers a scale factor for the communication. The scale factor is used to shift the window field before the data segment is sent. The scale factor is limited to 14 to guarantee the window is less than the 231 maximum. Thus, 214 * (216 - 1) < 231 (or (216 - 1) << 14 < 231, if you prefer).

All of this is just a highly involved way of saying that in order to increase window size beyond the 64 KB limit, RFC 1323 window scaling options must be enabled. Most operating systems support this option, but not all of them have it enabled by default. When in doubt, make sure and enable it.