Кратко

  • RFC 793 зарезервировал шесть битов заголовка TCP и потребовал передавать их нулевыми.
  • RFC 3168 назначил две из этих позиций флагам ECE и CWR для явного уведомления о перегрузке.
  • RFC 9293 оставляет четыре зарезервированных бита: не реализованные биты передаются нулевыми и игнорируются при получении.

Пустое место, закреплённое правилом

RFC 793 1981 года определил шесть зарезервированных битов сразу после поля Data Offset. Это поле указывает начало полезной нагрузки. Зарезервированные биты предназначались для будущего использования и должны были иметь нулевое значение. Они не были скрытой опцией и не служили для удлинения заголовка.

Так сохранялась неизменной базовая форма сегмента. Отправитель не мог самовольно придать позиции локальный смысл, а получатель продолжал видеть устойчивую структуру. Пространство оставалось неактивным, но было доступно для последующего стандарта.

Две позиции получают язык перегрузки

В 2001 году RFC 3168 назначил бит 9 флагу ECE, а бит 8 — CWR. Биты 4–7 остались зарезервированными. Новая возможность использовала прежний заголовок и не сдвигала границу его базовой части.

Цепочка сигналов выглядит так. Перегруженный маршрутизатор может пометить IP-пакет кодом Congestion Experienced, не полагаясь только на потерю пакетов. Получатель сообщает об отметке отправителю, устанавливая ECE в подтверждении TCP. Отправитель реагирует на уведомление о перегрузке, уменьшает окно перегрузки и затем устанавливает CWR, сообщая о сделанном уменьшении.

RFC 3168 также требует согласовать поддержку ECN при установлении TCP-соединения. Наличие самой битовой позиции ещё не означает, что оба конца поддерживают её смысл.

Современное правило действует в обе стороны

RFC 9293 описывает четырёхбитное зарезервированное поле. Если реализация не поддерживает будущую функцию, при формировании сегментов соответствующие биты должны быть нулевыми, а при получении их следует игнорировать. Нулевое значение при отправке предотвращает случайные или частные сигналы; игнорирование при приёме не даёт неизвестному биту само по себе стать причиной отказа.

Распределение позиций регулирует реестр TCP Header Flags IANA. RFC 9293 перечисляет CWR и ECE вместе с шестью исходными флагами, а смещения 4–7 оставляет для будущего использования. Зарезервированная позиция не даёт права на произвольную трактовку: её смысл требует публичной спецификации и управляемого назначения.

Чего эта история не доказывает

Исходное резервирование не доказывает, что разработчики 1981 года конкретно предвидели ECN. Подтверждается более узкий вывод: они сохранили позиции для будущих управляющих функций, а позднейший стандарт использовал две из них для определённого механизма обратной связи о перегрузке.

Резервирование также не гарантирует внедрение. Реализации могут запаздывать, промежуточные устройства — исходить из других предположений, а новая функция — требовать согласования, изменений автомата состояний и эксплуатационных данных. Указанные RFC не измеряют эти препятствия.

Источники