Skip to main content

Як TCP виявляє втрату сегментів?

TCP виявляє втрату сегментів двома основними способами:

  1. за тайм-аутом,
  2. за повторюваними підтвердженнями (duplicate ACK).

Простіше: якщо підтвердження не прийшло вчасно або отримувач кілька разів повідомляє про той самий байт - TCP вважає сегмент втраченим.


Спосіб 1. Тайм-аут (Retransmission Timeout, RTO)

Як це працює

  • TCP надсилає сегмент і запускає таймер
  • якщо ACK не прийшов за очікуваний час:
    • сегмент вважається втраченим
    • TCP надсилає його повторно

Особливості

  • спрацьовує завжди, навіть якщо мережа «мовчить»
  • більш повільний, тому що потрібно чекати тайм-аут
  • надійний як «остання лінія захисту»

Спосіб 2. Повторювані ACK (Duplicate ACK → Fast Retransmit)

Як це працює

  • TCP очікує дані по порядку
  • якщо отримувач отримав сегменти після пропуску, він:
    • кілька разів підтверджує той самий номер ACK
  • коли відправник отримує 3 однакових ACK поспіль:
    • робить висновок, що сегмент між ними втрачено
    • одразу переотправляє його (без очікування тайм-ауту)

Чому це швидко

  • не потрібно чекати закінчення таймера
  • втрата виявляється за поведінкою отримувача
  • значно прискорює відновлення передачі

Наочний приклад

  1. Надіслано сегменти: 1, 2, 3, 4
  2. Сегмент 2 загубився
  3. Отримувач отримав 3 і 4, але чекає 2
  4. Він надсилає ACK = 2 кілька разів
  5. Відправник бачить 3 однакових ACK
  6. Робить Fast Retransmit сегмента 2

Що важливо пам'ятати

  • TCP не отримує явного повідомлення «пакет втрачено»
  • він робить висновки опосередковано:
    • за часом
    • за повторюваними ACK
  • після втрати TCP:
    • зменшує швидкість передачі
    • намагається не перевантажувати мережу

Коротко для співбесіди

TCP виявляє втрату сегментів за тайм-аутом відсутності підтвердження і за повторюваними ACK (механізм Fast Retransmit), що дозволяє вчасно переотправляти втрачені дані.

Коротка відповідь

Для співбесіди
Premium

Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.