TCP подтверждает прием определенного количества данных (окна)
флагом ACK и в этом же сегменте будет acknowlegment number, он
будет указывать на номер sequence который следующим ожидает
приемник. Если передатчик видит что подтвержден не тот сегмент что послан , то перепошлет его.
Ну и надо учитывать размер окна а так же флаг push, без которого приемник может не начать обрабатывать данные а ждать еще.