RFC: 793
Оригинал: Transmission Control Protocol
Предыдущие версии: RFC 761
Категория: Стандарт Интернета
Дата публикации:
Автор:
Перевод: Николай Малых

RFC 793, Страница 46 из 49

  • Состояние SYN-SENT
    1. Проверка бита ACK

      Если бит ACK установлен, выполняются следующие операции:

      Если SEG.ACK =< ISS или SEG.ACK > SND.NXT, передается сигнал сброса reset (если бит RST уже установлен, сегмент отбрасывается с возвратом управления)

      <SEQ=SEG.ACK><CTL=RST>

      и сегмент отбрасывается с возвратом управления.

      Если SND.UNA =< SEG.ACK =< SND.NXT, бит ACK считается допустимым и обработка продолжается.

    2. Проверка бита RST

      При наличии бита RST выполняются следующие операции:

      Если бит ACK был допустимым, пользователю передается сообщение "error: connection reset" (сброс соединения), сегмент отбрасывается и соединение переводится в состояние CLOSED с удалением TCB и возвратом управления. В противном случае (нет ACK) сегмент отбрасывается с возвратом управления.

    3. Проверка уровня безопасности и предпочтения

      Если уровень безопасности/разделения в принятом сегменте не соответствует в точности уровню безопасности 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), сегмент отбрасывается с возвратом управления.

    4. Проверка бита 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 и возвращается управление.

Страница 46 из 49

2007 - 2022 © Русские переводы RFC, IETF, ISOC.