When sending data, an application will have to check the number of available bytes in the send window and adjust the number of bytes to send accordingly. The size of the send window is dictated by the memory configuration as well as the buffer space announced by the receiver of the data. If no buffer space is available, the application has to defer the send and wait until later.
Buffer space becomes available when an acknowledgment from the receiver of the data has been received. The stack informs the application of this event, and the application may then repeat the sending procedure.