Transmission Control Protocol (TCP) defines how data is transferred between sending and receiving devices through a network. To enable transmission of data from a sending device, a receiving device communicates an “advertised window” of memory capacity that sets an upper limit on the amount of data the sending device can send without receiving acknowledgement from the receiving device. The term “buffer” is often used to refer to some standard quantity of memory and the advertised window may communicate a number of buffers that have been allocated to the sending device and thus are available at the receiving device.
The sending device tracks how many “buffers” of data that the sending device has sent and will cease sending data when the sending device has sent data equivalent to the number of buffers in the advertised window. As the receiving device receives data from the sending device, it acknowledges receipt of the data and may communicate an additional quantity of buffers (e.g., a new advertised window) that have been allocated to the sending device. The sending device can then send data enough to fill the new advertised window. Thus, in TCP communication, the advertised window communicated to a sending device by a receiving device controls the flow of data from the sending device to the receiving device.