TCP window size can dramatically impact the performance of the network. If
the TCP window size is too small, the result will be additional network
overhead from segment acknowledgments. A lot of time is also wasted when the
sending host waits for acknowledgments. Increasing the window size allows the
sending host to transmit more than one packet at a time, increase network
bandwidth utilization and decrease the time spent waiting for acknowledgements.
Having a TCP window too large can also cause problems, especially on a
congested network. If the network is dropping a lot of TCP packets and
acknowledgements, the sending host wastes a lot of time waiting for retransmit
timers to expire. The sending host also adds to the congestion problem by
sending large amounts of retransmission traffic. Making the window smaller
forces the sending host to send less data at once, reduces its impact on the
congestion, and improves the chances of TCP packets and acknowledgements
getting through the network successfully.
When operating correctly, TCP
self-tunes its behavior according to network conditions. Recall from previous
content that TCP window sizes are self-tuning. This self-tuning mechanism can
be seen in action when downloading a large file from the Internet.
When the
download starts, the rate of transfer is slow, as the initial window size is
small. As the download proceeds, the rate of download increases rapidly as the
window size expands. As the TCP window approaches its optimal size, the
increase in the download rate slows until the rate is almost constant. For the
remainder of the download, the window size self-tunes to suit prevailing
network conditions.