Кратко

  • RFC 5925 дополняет 32-битный номер TCP локальными состояниями SND.SNE и RCV.SNE до вычисления или проверки MAC TCP-AO.
  • Расширение не передаётся отдельным полем: получатель выводит старшую часть из переходов номера, контекста соединения и сегментов, пришедших не по порядку у границы оборота.

Маршрутная сессия может прожить до полного оборота счётчика TCP. Новый сегмент тогда несёт то же видимое число, что и очень старый. Окно TCP всё ещё помещает его в текущий поток, но аутентификации требуется ещё одно различие: совпадение младших битов не должно превращать два исторических момента в одинаковый криптографический вход.

RFC 5925 определяет 32-битное расширение номера последовательности — Sequence Number Extension (SNE). SND.SNE и RCV.SNE начинаются с нуля. При отправке расширение ставится перед псевдозаголовком IP и материалом TCP во входе MAC. При приёме другая сторона восстанавливает старшую часть до проверки. Вместе они имитируют 64-битное пространство последовательности для аутентификации.

SNE намеренно отсутствует на проводе. Второй передаваемый счётчик мог бы разойтись с состоянием TCP. Отправитель способен хранить внутренний 64-битный номер и брать его верхнюю половину. Получатель видит лишь 32 бита сегмента и должен выводить RCV.SNE из истории соединения.

RFC предлагает один вариант реализации. Переход из верхней половины пространства в нижнюю увеличивает SNE. Если затем приходит высокий номер, это может быть задержавшийся сегмент прошлого оборота, пришедший после более новых, и для него применяется прежнее расширение. Флаг не допускает второго увеличения до противоположной переходной области. Обязателен правильный результат, а не именно такая внутренняя структура.

Повторившееся видимое число относится к новой аутентифицированной эпохе. SNE — не часы и не глобальный идентификатор. Оно имеет смысл для одного направления одного соединения и зависит от сохранённого локального контекста.

Источники