Як TCP виявляє втрату сегментів?
TCP виявляє втрату сегментів двома основними способами:
- за тайм-аутом,
- за повторюваними підтвердженнями (duplicate ACK).
Простіше: якщо підтвердження не прийшло вчасно або отримувач кілька разів повідомляє про той самий байт - TCP вважає сегмент втраченим.
Спосіб 1. Тайм-аут (Retransmission Timeout, RTO)
Як це працює
- TCP надсилає сегмент і запускає таймер
- якщо ACK не прийшов за очікуваний час:
- сегмент вважається втраченим
- TCP надсилає його повторно
Особливості
- спрацьовує завжди, навіть якщо мережа «мовчить»
- більш повільний, тому що потрібно чекати тайм-аут
- надійний як «остання лінія захисту»
Спосіб 2. Повторювані ACK (Duplicate ACK → Fast Retransmit)
Як це працює
- TCP очікує дані по порядку
- якщо отримувач отримав сегменти після пропуску, він:
- кілька разів підтверджує той самий номер ACK
- коли відправник отримує 3 однакових ACK поспіль:
- робить висновок, що сегмент між ними втрачено
- одразу переотправляє його (без очікування тайм-ауту)
Чому це швидко
- не потрібно чекати закінчення таймера
- втрата виявляється за поведінкою отримувача
- значно прискорює відновлення передачі
Наочний приклад
- Надіслано сегменти:
1, 2, 3, 4 - Сегмент
2загубився - Отримувач отримав
3і4, але чекає2 - Він надсилає ACK = 2 кілька разів
- Відправник бачить 3 однакових ACK
- Робить Fast Retransmit сегмента
2
Що важливо пам'ятати
- TCP не отримує явного повідомлення «пакет втрачено»
- він робить висновки опосередковано:
- за часом
- за повторюваними ACK
- після втрати TCP:
- зменшує швидкість передачі
- намагається не перевантажувати мережу
Коротко для співбесіди
TCP виявляє втрату сегментів за тайм-аутом відсутності підтвердження і за повторюваними ACK (механізм Fast Retransmit), що дозволяє вчасно переотправляти втрачені дані.
Коротка відповідь
Для співбесідиPremium
Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.