Запрос RECEIVE

Состояние CLOSED (например, отсутствует блок TCB)

Если клиент не имеет доступа к такому соединению, вернуть сообщение "error: connection illegal for this process". В противном случае вернуть сообщение "error: connection does not exist".

Состояния

      LISTEN
      SYN-SENT
      SYN-RECEIVED

Поместить запрос в очередь на обслуживание после установления ESTABISHED состояния. Если в очереди для этого нет места, вернуть сообщение "error: insufficient resources".

Состояния

      ESTABLISHED
      FIN-WAIT-1
      FIN-WAIT-2

Если в пришедших сегментах недостаточно данных для выполнения данного запроса, поместить последний в очередь на обслуживание. Если же в очереди нет места для размещения запроса RECEIVE, вернуть сообщение "error: insufficient resources".

Собрать данные из приходящих сегментов в буфере получения, а затем передать их клиенту. Установить флаг "обнаружено проталкивание" (PUSH), если это имеет место.

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

Состояние CLOSE-WAIT

Поскольку партнер на другом конце соединения уже послал сигнал FIN, то команды RECEIVE должны получать данные, уже имеющиеся в системе, а не только те, которые уже переданы клиенту. Если в системе больше нет текста, ждущего своего запроса RECIVE, то передать клиенту сообщение "error connection closing". В противном случае использовать для удовлетворения запроса RECEIVE любую имеющуюся информацию.

Состояния

      CLOSING
      LAST-ACK
      TIME-WAIT

Вернуть сообщение "error connection closing".

Hosted by uCoz