Я просто хочу кое-что прояснить. Допустим, получатель объявляет окно размером 2000 байт. Отправитель отправляет 1500 байтов и получает подтверждение от получателя с размером окна 100. Подтверждение не подтверждает отправку 1500 байтов. Что будет делать отправитель? Перестанет ли он ждать, пока окно его неподтвержденных байтов станет меньше окна получателя?
Пока оба конца крепкие, это не имеет большого значения. Надежная реализация TCP никогда не сжимает окно. Надежная реализация TCP либо игнорирует, либо принимает данные за пределами своего окна. Надежная реализация TCP будет периодически передавать по крайней мере один байт данных за пределами нулевого окна. Чтобы случилось что-нибудь плохое, придется сломать все три из них.
Предоставляемые механизмы позволяют протоколу TCP объявлять большое окно и впоследствии объявлять окно гораздо меньшего размера, не принимая такой объем данных. Это, так называемое «уменьшение окна», настоятельно не рекомендуется. Принцип устойчивости требует, чтобы TCP не сжимал окно самостоятельно, но был готов к такому поведению со стороны других TCP.
Отправляющий TCP должен быть готов принять от пользователя и отправить хотя бы один октет новых данных, даже если окно отправки равно нулю. Отправляющий TCP должен регулярно повторно передавать принимающий TCP, даже если окно равно нулю. Две минуты рекомендуется для интервала повторной передачи, когда окно равно нулю. Эта повторная передача необходима для гарантии того, что, когда один из TCP имеет нулевое окно, о повторном открытии окна будет надежно сообщено другому. - RFC793
Итак, ответ на ваш вопрос: «возможно, но это не имеет большого значения».