Назад к вопросам
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