Если tcp-программа A отправляет два пакета данных другой TCP-программе B, пакет 1: порядковый номер от 1000 до 2000; пакет 2: следующий номер от 2000 до 3000.
Обычно B должен ответить 2 ACK, один для подтверждения пакета 1, а другой для пакета 2. Теперь, если А получит только второй ACK, будет ли A ждать первого ACK или нет?
Я знаю, что TCP является байтово-ориентированным потоковым протоколом. так что не стоит ждать первого ACK, верно? Теоретически это так, как на счет реального реализованного стека TCP?
Кстати, у меня есть особый вопрос. Если A отправляет B B ACK с номером подтверждения 3001(это для подтверждения пакета 2). Но кто-то посередине меняет номер ack seq на 2501, то есть B подтверждает половину TCP-пакета. Тогда будет ли A повторная передача из байта, что соответствует 2000 или 2501?