Назад к вопросам
Middle
92
questionbank
Что вы можете рассказать о TCP-окне?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
TCP-окно (или окно приёма TCP) — это механизм управления потоком данных в протоколе TCP. Оно определяет объем данных, который отправитель может передать, не дожидаясь подтверждения от получателя (ACK). Размер окна динамически адаптируется, предотвращая переполнение буфера получателя и управляя скоростью передачи.
Основные моменты:
- Управление потоком: Главная функция - не допустить, чтобы отправитель посылал данные быстрее, чем получатель может их обработать.
- Размер окна: Объявляется получателем в каждом сегменте TCP (в поле "Window Size") и указывает, сколько байт получатель готов принять, начиная со следующего ожидаемого байта.
- Динамичность: Размер окна может меняться в процессе соединения в зависимости от загрузки буфера получателя.
- Буфер приёма: Фактический размер окна ограничен размером буфера приёма на стороне получателя.
- Масштабирование окна (Window Scaling): Опция TCP, позволяющая использовать окна большего размера (до 1 ГБ) для высокоскоростных сетей или сетей с большой задержкой, используя множитель, объявленный во время установления соединения (SYN/SYN-ACK).
- "Slim Window" Syndrome: Ситуация, когда размер окна становится очень мал, что может привести к неэффективной передаче данных.
- Zero Window: Если буфер получателя полностью заполнен, размер окна объявляется как 0. Отправитель должен остановить передачу данных, кроме сегмента Keep-Alive (при включенной опции) и повторно отправить последний сегмент, чтобы запросить обновление размера окна.
// Пример заголовка TCP, где указывается размер окна
// (поле "Window Size")
// Source Port: 12345
// Destination Port: 80
// Sequence Number: 1000
// Acknowledgment Number: 2000
// Data Offset: 20 bytes (5 words)
// Reserved: 0
// Flags: [ACK, PSH]
// Window Size: 65535 // Максимальный размер окна без масштабирования
// Checksum: 0xABCD
// Urgent Pointer: 0