Скачиваний:
0
Добавлен:
04.02.2026
Размер:
221.68 Кб
Скачать

Механизмы обнаружения потери пакетов

TCP использует несколько механизмов обнаружения потери пакетов:protokols+2

1. Timeout (Таймаут)

Если отправитель не получает подтверждение в течение определённого времени (RTO — Retransmission Timeout), пакет считается потерянным.

text

Отправитель отправляет пакет

(ждёт RTO мс)

Если ACK не пришёл → TIMEOUT

Пакет считается потерянным

Повторная передача

Характеристики Timeout:

  • Долгий процесс: обычно 1-3 секунды

  • Неэффективный: может быть использован редко при хорошем соединении

2. Быстрый перезапрос (Fast Retransmit)

Если отправитель получает три повторных подтверждения (3 duplicate ACKs) для одного пакета, это означает, что пакет потерян, и нужна немедленная повторная передача без ожидания таймаута.asvk.msu+2

text

Отправитель отправил: пакеты 1, 2, 3, 4, 5

Получатель получил: 1, 2, ❌(3), 4, 5

(пакет 3 потерян)

Получатель отправляет:

ACK(2) ← потвер. что получил до 2

ACK(2) ← получил 4, но жду 3

ACK(2) ← получил 5, но жду 3

ACK(2) ← повторный ACK на 3-й раз

Отправитель видит: 3 одинаковых ACK(2)

Это означает: 4 и 5 пришли, но 3 потерян!

НЕМЕДЛЕННО переотправляет пакет 3

Быстрее, чем ждать таймаута!

Преимущества быстрого перезапроса:book.itep+1

  • Скорость: немедленная передача (миллисекунды вместо секунд)

  • Эффективность: не пропускаем RTO для одиночных потерь

Процесс быстрого перезапроса:

text

1. Отправка данных нормально (CWND растёт)

2. Потеря пакета обнаружена (3 dup ACKs)

3. НЕМЕДЛЕННАЯ переотправка (без RTO)

4. ssthresh = CWND / 2 ← новый порог

5. CWND = ssthresh + 3 ← начало быстрого восстановления

6. Продолжение отправки (слегка улучшенное окно)

Медленный старт (Slow Start)

Медленный старт (Slow Start) — это алгоритм, который постепенно увеличивает CWND от малого значения, позволяя TCP "почувствовать" возможности сети без её перегрузки.wikipedia+2

Почему это называется "медленный"?

Хотя название включает слово "медленный", алгоритм работает довольно быстро благодаря экспоненциальному росту окна. Он назывался так в сравнении с альтернативой, когда окно начинало расти ещё быстрее.wikipedia

Процесс медленного старта

Инициализация (начало соединения):

text

1. CWND = 1 MSS (Maximum Segment Size, обычно 1460 байт)

(или иногда 2 или 10 MSS в современных системах)

2. ssthresh (slow start threshold) = 65535 байт

(или другое начальное значение)

3. Условие медленного старта: если CWND ≤ ssthresh → используй Slow Start

Фаза экспоненциального роста:

text

Событие: Получен ACK на новый сегмент

Действие: CWND += 1 MSS

Результат: CWND растёт экспоненциально

Шаг 1: CWND = 1 MSS

Отправитель отправляет 1 пакет

Получает ACK(1)

Шаг 2: CWND = 2 MSS (1 + 1)

Отправитель отправляет 2 пакета

Получает ACK(2) и ACK(2)

Шаг 3: CWND = 4 MSS (2 + 1 + 1)

Отправитель отправляет 4 пакета

Получает 4 подтверждения

Шаг 4: CWND = 8 MSS

...

Видно: окно удваивается каждый RTT!

Соседние файлы в предмете Открытые информационные системы и сети