Ответ
Размер окна в 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.