Кратко
- TIME-WAIT сохраняет состояние после закрытия, чтобы задержанные сегменты прежнего соединения не были приняты за сегменты нового соединения с тем же четырёхкомпонентным идентификатором.
- RFC 1337 описал цепочку: неприемлемый старый сегмент вызывает ACK, узел без соответствующего соединения отвечает RST, а RST преждевременно удаляет TIME-WAIT.
- Предложение игнорировать RST в TIME-WAIT содержится в Informational RFC и не является универсальным требованием для современных реализаций.
- RFC 6191 допускает отдельные случаи раннего повторного использования только тогда, когда временные метки и номера последовательности подтверждают новый экземпляр соединения.
Состояние, которое хранит историю
После активного закрытия TCP обычно удерживает блок управления в течение 2×MSL. За это время старые дубликаты должны исчезнуть до повторного использования тех же адресов и портов. TIME-WAIT не задаёт повторные передачи и не ограничивает доставку приложению: оно разделяет поколения соединения.
Как состояние уничтожается
В примере RFC 1337 узел A находится в TIME-WAIT, а узел B уже перешёл в CLOSED. К A приходит старый сегмент данных или ACK, признанный неприемлемым. A отправляет ACK с текущими ожиданиями. У B нет соответствующего соединения, поэтому он отвечает RST. A принимает RST, удаляет блок управления и покидает TIME-WAIT раньше времени.
Каждое действие может быть локально корректным. Опасной становится их композиция: RST удаляет память, которая должна была удерживать старые дубликаты. Последующее нарушение может вызвать уже другой старый пакет, а не сам RST.
Простое исправление и проверяемое повторное использование
F1 из RFC 1337 предлагало игнорировать RST в TIME-WAIT. Документ называл это простым краткосрочным решением при соблюдении MSL и требовал длительных производственных испытаний. В базовой обработке RFC 9293 по-прежнему указано, что проверенный RST в TIME-WAIT переводит соединение в CLOSED и удаляет блок управления. Поэтому нельзя утверждать, что F1 целиком стало универсальным правилом.
RFC 6191 решает проблему высокой скорости установления иначе. Для входящего SYN проверяются временные метки и номера последовательности; при недостатке доказательств SYN молча отбрасывается, а TIME-WAIT сохраняется. RFC 9293 допускает прямое повторное открытие только при выполнении защитных условий для номера последовательности и возврате в TIME-WAIT, если SYN окажется старым дубликатом; для высокой частоты соединений он рекомендует алгоритм временных меток RFC 6191. Удаление состояния не доказывает безопасность нового экземпляра соединения.
Источники
Обзор для участников
Читать полный обзор тенденции
Участники читают полный обзор с примечаниями к источникам за каждым выводом.
Стратегическое сообщество
Ежедневный брифинг на вашем языке, основанный на изменениях, которые мы проверили.
Вступить за USD 20 в месяцОтменить можно в любое время.
Подать заявку в Альянс лидеров
Участники также получают всю библиотеку исследований, ежедневную сводку по сетям, за которыми следят, и закрытый форум.






