Что такое размер окна в TCP

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

Ответ

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

Пример:

// Пример настройки размера окна в Go (net.TCPConn)
conn, _ := net.Dial("tcp", "example.com:80")
tcpConn := conn.(*net.TCPConn)

// Установка размера окна чтения (получатель)
tcpConn.SetReadBuffer(8192) // 8 KB

// Установка размера окна записи (отправитель)
tcpConn.SetWriteBuffer(8192)

Нюансы:

  • Получатель управляет окном через Window Size в заголовке TCP.
  • Нулевое окно — получатель временно приостанавливает передачу (flow control).
  • Масштабирование окна (RFC 1323) позволяет увеличить окно до 1GB.