Кратко
- 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. Удаление состояния не доказывает безопасность нового экземпляра соединения.
Источники
Обзор для участников
Подробный контекст профиля
Войдите с подходящим уровнем подписки, чтобы открыть полный обзор и примечания к источникам.
Только для Стратегического сообщества
Стратегическое сообщество
Открыто всем читателям. Вступите и войдите, чтобы открыть обзоры профилей.
Вступить в Стратегическое сообществоТолько для Альянса лидеров
Альянс лидеров
Для проверенных владельцев IP-активов и руководителей. Войдите, чтобы открыть обзоры Альянса.
Вступить в Альянс лидеров
