Кратко
- TCP неявно выделяет SYN и FIN по одной позиции, чтобы повторная передача не стала вторым событием.
- SYN находится перед первым байтом данных, а FIN — после последнего байта данных своего сегмента.
- Это логические позиции, а не байты приложения; ACK, PSH и RST сами по себе длину
SEG.LENне увеличивают.
Номер для события
RFC 793 включил некоторые управляющие сведения в пространство последовательности. RFC 9293 сохранил эту логику: SYN и FIN можно подтверждать и передавать повторно без путаницы, поэтому обрабатывается только одно событие. Физического байта в области данных при этом не появляется.
Если установлен SYN, поле SEG.SEQ содержит ISN, а первый байт данных получает номер ISN+1. Для сегмента с N байтами данных и SYN логическая длина равна N+1. FIN занимает позицию сразу после данных. Поскольку подтверждение сообщает следующий ожидаемый номер, подтверждение SYN или FIN сдвигает границу на единицу даже при нулевой полезной нагрузке.
SEG.LEN включает байты данных, SYN и FIN. При повторной передаче используется исходная позиция. У каждого направления своё пространство последовательности: FIN означает, что его отправитель больше не передаёт данные, но не завершает обратное направление. RST пространства не занимает, как не добавляют позицию ACK и PSH.
Источники
Обзор для участников
Подробный контекст профиля
Войдите с подходящим уровнем подписки, чтобы открыть полный обзор и примечания к источникам.
Только для Стратегического сообщества
Стратегическое сообщество
Открыто всем читателям. Вступите и войдите, чтобы открыть обзоры профилей.
Вступить в Стратегическое сообществоТолько для Альянса лидеров
Альянс лидеров
Для проверенных владельцев IP-активов и руководителей. Войдите, чтобы открыть обзоры Альянса.
Вступить в Альянс лидеров
