Что такое TCP-окно?

«Что такое TCP-окно?» — вопрос из категории Сети, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

TCP-окно (Window) — это механизм управления потоком и контроля перегрузки в протоколе TCP. Оно определяет объём данных (в байтах), который отправитель может передать, не дожидаясь подтверждения (ACK) от получателя.

Ключевые аспекты:

  • Размер окна объявляется получателем в поле Window Size заголовка TCP и динамически меняется.
  • Цель: Оптимизировать пропускную способность, избежать переполнения буферов получателя и перегрузки сети.
  • Масштабирование окна (Window Scaling): Опция, позволяющая увеличить окно свыше стандартного максимума в 65 535 байт для высокоскоростных сетей (например, 10G+).
  • Алгоритмы контроля перегрузки, такие как CUBIC (по умолчанию в Linux) или BBR, регулируют размер окна на основе потерь пакетов и RTT (Round-Trip Time).

Практический пример настройки в Linux (для увеличения производительности):

# Включить масштабирование окна
sudo sysctl -w net.ipv4.tcp_window_scaling=1

# Увеличить размеры буферов приёма (rmem) и передачи (wmem)
# Формат: min default max
sudo sysctl -w net.ipv4.tcp_rmem="4096 87380 33554432"
sudo sysctl -w net.ipv4.tcp_wmem="4096 65536 33554432"

# Проверить текущие настройки
sysctl net.ipv4.tcp_window_scaling net.ipv4.tcp_rmem net.ipv4.tcp_wmem

Важные нюансы для DevOps:

  • Слишком большое окно при высокой задержке (Bufferbloat) может привести к накоплению очередей на маршрутизаторах и росту latency.
  • Настройка TCP-параметров — часть тюнинга производительности сетевых сервисов и баз данных в высоконагруженных системах.