Основная задача протокола TCP — обеспечение надёжной доставки данных. Одна из возможных проблем — потеря сообщений на промежуточных устройствах в силу ошибок или переполнения памяти. Для предотвращения таких потерь используется управление перегрузкой в TCP.
В управлении перегрузкой отправитель регулирует скорость передачи данных, постепенно увеличивая её и уменьшая скорость передачи при возникновении ошибки. Существует множество алгоритмов управления перегрузкой. Один из них — Tahoe. В нём используются следующие понятия:
- RTT (Round-Trip Time) — номинальное время полного пути пакета, то есть интервал между отправкой сегмента TCP и получением соответствующего ACK (подтверждения). В течение времени, равного RTT, отправитель может отправить большое количество пакетов, не дожидаясь ACK.
- cwnd (Congestion Window) — окно перегрузки, переменная на стороне отправителя, определяющая максимальное количество неподтверждённых сегментов, которое можно отправить в сеть без ACK.
- MSS (Maximum Segment Size) — максимальный размер полезной нагрузки TCP-сегмента (обычно 1460 байт для Ethernet); используется как единица для роста cwnd.
- ssthresh (Slow Start Threshold) — пороговое значение окна перегрузки; разделяет фазы медленного старта и предотвращения перегрузки. В Tahoe изначально ssthresh не задаётся фиксированно (принимается равным бесконечности), а устанавливается динамически при первой потере. Будем считать, что при первой потере ssthresh = cwnd/2.
- Slow Start — фаза, где cwnd удваивается каждый RTT (при начальном значении, равном 1 MSS), чтобы быстро «нащупать» реальную пропускную способность сети.
- Congestion Avoidance — фаза, наступающая после достижения ssthresh. В этой фазе cwnd растёт линейно (+1 MSS за RTT).
Сначала скорость передачи растёт согласно Slow Start, а как случается первая потеря, рассчитывается ssthresh, после чего cwnd сбрасывается в 1 MSS, заново запускается Slow Start (cwnd удваивается каждый RTT), но уже до установленного ssthresh. Достигнув ssthresh, алгоритм переходит в режим Congestion Avoidance, при котором рост cwnd +1 MSS за RTT, пока не произойдёт новая потеря, после чего ssthresh уменьшается вдвое снова. Это создаёт «зубчатую» кривую cwnd.
Пусть файл из 64 сегментов (по 1460 байт) передаётся по сети с RTT = 120 мс. Используется алгоритм TCP Tahoe.
- Slow Start: cwnd удваивается каждый RTT, начиная с 1 MSS.
- После потери: ssthresh = cwnd / 2, cwnd = 1 MSS.
- Достигнув ssthresh, переход к Congestion Avoidance (+1 MSS/RTT).
- Потеря происходит при cwnd = 16 MSS.
Найдите общее время передачи всех 64 сегментов в миллисекундах. Выберите наиболее близкий к полученному значению вариант ответа: 590, 840, 1150, 1430, 1710, 1990, 2160, 2270, 2400, 2550.