- Состояние SYN-SENT
Проверка бита ACK
Если бит ACK установлен, выполняются следующие операции:
Если SEG.ACK =< ISS или SEG.ACK > SND.NXT, передается сигнал сброса reset (если бит RST уже установлен, сегмент отбрасывается с возвратом управления)
<SEQ=SEG.ACK><CTL=RST>
и сегмент отбрасывается с возвратом управления.
Если SND.UNA =< SEG.ACK =< SND.NXT, бит ACK считается допустимым и обработка продолжается.
Проверка бита RST
При наличии бита RST выполняются следующие операции:
Если бит ACK был допустимым, пользователю передается сообщение "error: connection reset" (сброс соединения), сегмент отбрасывается и соединение переводится в состояние CLOSED с удалением TCB и возвратом управления. В противном случае (нет ACK) сегмент отбрасывается с возвратом управления.
Проверка уровня безопасности и предпочтения
Если уровень безопасности/разделения в принятом сегменте не соответствует в точности уровню безопасности TCB, передается сигнал сброса (reset):
бит ACK установлен
<SEQ=SEG.ACK><CTL=RST>
бит ACK не установлен
<SEQ=0><ACK=SEG.SEQ+SEG.LEN><CTL=RST,ACK>
Если уровни безопасности совпадают, выполняются следующие операции:
бит ACK установлен
если уровень предпочтения в сегменте не соответствует уровню в TCB, передается сигнал сброса
<SEQ=SEG.ACK><CTL=RST>
бит ACK не установлен
если уровень предпочтения в сегменте выше уровня в TCB, с позволения пользователя и системы повышается уровень предпочтения в TCB до совпадения с уровнем в сегменте; при невозможности повысить уровень предпочтения передается сигнал сброса
<SEQ=0><ACK=SEG.SEQ+SEG.LEN><CTL=RST,ACK>
Если уровень предпочтения в сегменте ниже уровня в TCB, продолжается обработка вызова.
Если был передан сигнал сброса (reset), сегмент отбрасывается с возвратом управления.
Проверка бита SYN
Этот этап выполняется только при корректном ACK или отсутствии ACK, если сегмент не содержит RST.
Если бит SYN установлен и параметры безопасности/предпочтения приемлемы, устанавливаются значения RCV.NXT = SEG.SEQ+1 и IRS = SEG.SEQ. Значение SND.UNA должно быть увеличено до SEG.ACK (если имеется ACK) и все сегменты из очереди повторной передачи, которые таким образом будут подтверждены, должны быть удалены из очереди.
Если SND.UNA > ISS (сегмент SYN был подтвержден), состояние соединения меняется на ESTABLISHED, формируется и передается сегмент ACK
<SEQ=SND.NXT><ACK=RCV.NXT><CTL=ACK>
В этот сегмент могут быть включены данные и сигналы управления из очереди на повторную передачу. Если в сегменте присутствуют другие данные или поля управления, продолжается обработка этого сегмента с проверки бита URG (см. этап (6) ниже), в противном случае обработка завершается с возвратом управления.
Если бит SYN не установлен, соединение переходит в состояние SYN-RECEIVED, формируется и передается сегмент SYN,ACK
<SEQ=ISS><ACK=RCV.NXT><CTL=SYN,ACK>
Если в сегменте присутствуют другие данные или поля управления, они помещаются в очередь для обработки после перехода соединения в состояние ESTABLISHED и возвращается управление.
- RFC: 793
- Оригинал: Transmission Control Protocol
- Предыдущие версии: RFC 761
- Категория: Стандарт Интернета
- Дата публикации:
- Автор: J. Postel
- Перевод: Николай Малых
RFC 793, Страница 46 из 49
Страница 46 из 49
2007 - 2022 © Русские переводы RFC, IETF, ISOC.