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

RECEIVE

  • Состояние CLOSED (TCB не существует)
  • Если у пользователя нет прав доступа к соединению, возвращается сообщение "error: connection illegal for this process" (некорректное соединение для данного процесса).

    В остальных случаях возвращается сообщение "error: connection does not exist" (соединения не существует).

  • Состояния LISTEN; SYN-SENT; SYN-RECEIVED
  • Данные помещаются в очередь для передачи после перехода в состояние ESTABLISHED. Если в очереди нет свободного места, возвращается сообщение "error: insufficient resources".

  • Состояния ESTABLISHED; FIN-WAIT-1; FIN-WAIT-2
  • Если для выполнения запроса не хватает входящих сегментов из очереди, запрашивается очередь. Если в очереди нет свободного места для запоминания RECEIVE, выдается сообщение "error: insufficient resources".

    Осуществляется сборка (Reassemble) входящих сегментов из очереди в приемный буфер и передача буфера пользователю. При наличии флага проталкивания функция возвращает пользователю флаг PUSH.

    Если передаваемым пользователю данным предшествует RCV.UP, пользователь получает уведомление о наличии срочных данных.

    Когда TCP принимает на себя ответственность за доставку данных пользователю, это фактически означает необходимость передачи отправителю подтверждений. Формирование подтверждений рассматривается ниже при обсуждении обработки входящих сегментов.

  • Состояние CLOSE-WAIT
  • Поскольку удаленная сторона уже передала FIN, вызов RECEIVE должен ограничиться данными, которые уже приняты, но не доставлены пользователю. Если ожидающих доставки данных уже нет, функция RECEIVE будет возвращать сообщение "error: connection closing" (соединение закрыто). В остальных случаях RECEIVE будет использовать все оставшиеся данные.

  • Состояния CLOSING; LAST-ACK; TIME-WAIT
  • Возвращается сообщение "error: connection closing".

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