РД 45.134-2000, часть 10


If-Match :: = "If-Match" ":" ( "*" | 1#entity-tag )


Если хотя бы один тег сущностей совпадает с тегом сущности, которая могла бы быть возвращена на подобный безусловный запрос GET, либо если стоит символ “*” и существует текущая версия данного ресурса, тогда сервер может выполнить запрошенный метод.

Сервер должен использовать сильную функцию сравнения.

При отсутствии совпадения тегов, либо при отсутствии текущей версии сущности, сервер не должен выполнять указанный метод, а должен возвратить ответ 412.





5.12.26. If-None-Match


Поле заголовка запроса If- None-Match используется с методом, чтобы сделать его условным. Использование данного поля подобно полю If-Match.

Если ни один из тегов сущностей не совпадает с тегом сущности, которая могла бы быть возвращена на подобный безусловный запрос GET, либо если стоит символ “*” и не существует текущая версия данного ресурса, тогда сервер может выполнить запрошенный метод.

If-None-Match :: = "If-None-Match" ":" ( "*" | 1#entity-tag )



5.12.27. If-Range


Если у клиента есть в кэше частичная копия сущности, и он хочет получить актуальную целую сущность в свой кэш, он может использовать условный GET с полем If-Range.


If-Range :: = "If-Range" ":" ( entity-tag | HTTP-date )


Данный запрос будет означать: если сущность не изменилась, отправьте недостающую часть. В противном случае, отправьте целую сущность. Таким образом, сервер должен выдать ответ 206 либо 200.


5.12.28. If-Unmodified-Since


Поле заголовка запроса If- None-Match используется с целью сделать его условным. Если запрошенный ресурс не был изменен с указанного времени, сервер должен выполнить запрошенную операцию так, как если бы поле If-Unmodified-Since отсутствовало.


If-Unmodified-Since :: = "If-Unmodified-Since" ":" HTTP-date


Если запрошенный вариант был изменен с указанного времени, сервер должен выдать ответ 412.


5.12.29. Last-Modified


Поле сущности Last-Modified указывает дату и время, в которое, по сведениям сервера-источника, данный вариант был изменен последний раз.


Last-Modified :: = "Last-Modified" ":" HTTP-date


5.12.30. Location


Поле ответа Location используется для перенаправления получателя на иной адрес, чем Request-URI для выполнения запроса или идентификации нового ресурса.

Для ответа 201 в данном поле указывается новый созданный ресурс. Для ответов 3хх Location указывает на URL для автоматического перенаправления.


Location :: = "Location" ":" absoluteURI




5.12.31. Max-Forwards


Данное поле запроса может использоваться с методом TRACE для ограничения числа прокси или шлюзов, которые могут направлять запрос.


Max-Forwards :: = "Max-Forwards" ":" 1*DIGIT


Значение поля представляет собой десятичное число, показывающее остающееся число разрешенных пересылок сообщения.

Прокси, получивший запрос с полем Max-Forwards=0, не должен направлять данное сообщение, а должен выдать ответ 200.


5.12.32. Pragma


Поле общего заголовка Pragma используется для включения директив, зависящих от реализации, которые могут использоваться любым получателем в цепочке запрос/ответ. Все директивы Pragma определяют особые факультативные функции протокола.


Pragma :: = "Pragma" ":" 1#pragma-directive

pragma-directive :: = "no-cache" | extension-pragma

extension-pragma :: = token [ "=" ( token | quoted-string ) ]


Директивы Pragma должны передаваться без изменения через прокси или шлюз, вне зависимости от их значения для данного прокси или шлюза.


5.12.33. Proxy-Authenticate


Поле заголовка ответа Proxy-Authenticate должно быть включено в ответ 407. Значение данного поля состоит из вызова, указывающего схему идентификации и параметры, применимые к прокси, имеющему данный Request-URI.


Proxy-Authenticate :: = "Proxy-Authenticate" ":" challenge



5.12.34. Proxy-Authorization


Поле заголовка запроса Proxy-Authorization позволяет клиенту идентифицировать самого себя и пользователей. Значение поля состоит из мандатов, содержащих идентифицирующую информацию о клиенте для прокси и (или) пространство запрашиваемого ресурса.


Proxy-Authorization :: = "Proxy-Authorization" ":" credentials


В отличие от поля Authorization поле Proxy-Authorization используется только ближайшим внешним прокси, который затребовал идентификацию используя поле Proxy-Authenticate. В прокси может быть реализован механизм групповой идентификации клиента совместно с другими серверами прокси.






5.12.35. Public


Поле заголовка Public ответа содержит перечень методов, поддерживаемых сервером. Данное поле может использоваться совместно с полем Allow, которое в свою очередь перечисляет методы, применимые для конкретного Request-URI.


Public :: = "Public" ":" 1#method


Данное поле применимо только к серверу, имеющему непосредственное соединение с клиентом.

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


5.12.36. Range


5.12.36.1. Диапазоны байтов


Так как все сущности HTTP представлены в сообщениях HTTP в виде последовательности байтов, понятие диапазона байтов применимо для любой сущности. Но поддержка операции выделения диапазонов байтов не является обязательной.

Операция выделения диапазона байтов может определять один или несколько диапазонов байтов внутри одной сущности.


ranges-specifier :: = byte-ranges-specifier


byte-ranges-specifier :: = bytes-unit "=" byte-range-set


byte-range-set :: = 1#( byte-range-spec | suffix-byte-range-spec )


byte-range-spec :: = first-byte-pos "-" [last-byte-pos]


first-byte-pos :: = 1*DIGIT


last-byte-pos :: = 1*DIGIT


suffix-byte-range-spec :: = "-" suffix-length


suffix-length :: = 1*DIGIT


где

first-byte-pos – смещение первого байта диапазона,

last-byte-pos – смещение последнего байта в диапазоне. Диапазон определяется от поля first-byte-pos до last-byte-pos включительно. Смещение отсчитывается от нулевого байта сущности.

Получатель неправильно определенного диапазона должен его игнорировать.

С помощью поля suffix-byte-range-spec можно указать N последних байтов сообщения.

При превышении значением suffix-byte-range-spec длины сущности, диапазон определяет всю сущность.



5.12.36.2. Запросы на получение диапазона


Запрос на получение диапазона должен использовать условный или безусловный метод GET. Для определения диапазона используется поле заголовка запроса Range.


Range :: = "Range" ":" ranges-specifier


При выдаче успешного ответа на запрос с определенным диапазоном сервер должен использовать ответ 206.


5.12.37. Referer


Поле заголовка запроса Referer позволяет клиенту указать адрес (URI) ресурса, от которого был получен Request-URI.

Данное поле не должно включаться в заголовок, если источник, от которого был получен Request-URI, не имеет собственного URI (например, если Request-URI был введен с консоли пользователя).


Referer :: = "Referer" ":" ( absoluteURI | relativeURI )


Например:


Referer: http://www.w3.org/hypertext/DataSources/Overview.html


URI, указанное в поле Referer, не должно быть URI фрагмента. Для относительного URI в качестве базы должен использоваться Request-URI.

Рекомендуется, чтобы клиент имел возможность включать/отключать отправку поля Referer в запросах.


5.12.38. Retry-After


Поле заголовка ответа Retry-After может использоваться с ответом 503 для указания того, насколько долго сервис будет недоступен данному клиенту.


Retry-After :: = "Retry-After" ":" ( HTTP-date | delta-seconds )


5.12.39. Server


Поле заголовка ответа Server содержит информацию о программном обеспечении, используемом на сервере-источнике для обработки запроса.


Server :: = "Server" ":" 1*( product | comment )


Прокси не должен изменять заголовок Server при направлении ответа.

Прокси может включить поле Via для идентификации самого себя в качестве прокси, направившего ответ.


5.12.40. Transfer-Encoding


Поле общего заголовка Transfer-Encoding указывает, что к телу сообщения был применен определенный тип преобразования для обеспечения безопасной пересылки между отправителем и получателем (оно определяет кодирование при пересылке). В отличие от Content-Encoding значение поля применимо ко всему телу сообщения, а не к отдельной сущности.


Transfer-Encoding :: = "Transfer-Encoding" ":"

1#transfer-coding


5.12.41. Upgrade


Поле общего заголовка Upgrade позволяет клиенту указать поддерживаемый им дополнительный протокол связи, на который он предлагает серверу переключиться. Сервер должен использовать данное поле в ответе 101 для указания протокола, на который произошло переключение.


Upgrade :: = "Upgrade" ":" 1#product


Ответ 101 с полем Upgrade должен быть первым ответом сервера после переключения на альтернативный протокол по запросу клиента с полем Upgrade.

Согласование протокола с использованием поля Upgrade применимо только для текущего соединения транспортного уровня.

Поле заголовка Upgrade должно использоваться внутри поля заголовка Connection.


5.12.42. User-Agent


Поле заголовка запроса User-Agent содержит информацию о программном обеспечении клиента, выдавшего запрос. Клиенты не обязательно должны включать данное поле в запрос.


User-Agent :: = "User-Agent" ":" 1*( product | comment )



5.12.43. Vary


Поле заголовка ответа Vary используется сервером, чтобы сигнализировать, что сущность, содержащаяся в ответе, была выбрана из ряда доступных представлений с использованием механизма управляемого сервером согласования содержимого. Перечень полей, содержащихся в данном поле, указывает на размерность варьирования представления ресурса. Символ “*” указывает на то, что размерность варьирования не определена.


Vary :: = "Vary" ":" ( "*" | 1#field-name )


Поле Vary должно включаться в каждый кэшируемый ответ, являющийся предметом управляемого сервером согласования содержимого.

Поле Vary может включаться в некэшируемый ответ, являющийся предметом управляемого сервером согласования содержимого.

Если кэш получает запрос, Request-URI которого определяет одну или более содержащих поле Vary позиций кэша, он не должен использовать эти позиции кэша, если только в запросе не присутствуют все поля, перечисленные в поле Vary, и содержимое этих полей в запросе не совпадает с содержимым аналогичных полей в позиции кэша.

Сравнение полей заголовка производится без учета конкретного вида разделителей LWS.


5.12.44. Via


Поле общего заголовка Via должно использоваться шлюзами и серверами прокси для указания промежуточных получателей и протоколов, с помощью которых было передано сообщение между клиентом и запрашиваемым сервером или между сервером-источником и клиентом.


Via :: = "Via" ":" 1#( received-protocol received-by [ comment ] )


received-protocol :: = [ protocol-name "/" ] protocol-version

protocol-name :: = token

protocol-version :: = token

received-by :: = ( host [ ":" port ] ) | pseudonym

pseudonym :: = token


Если протоколом является HTTP, тогда (и только тогда) received-protocol может не указываться. Вместо настоящего имени узла может указываться псевдоним.

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

По умолчанию port=80.

Добавление информации в поле Via является необязательным.

Прокси, если он выполняет функции межсетевого экрана, может стереть информацию, добавленную в поле Via, либо заменять смежные цепочки идентификаторов получателей на единое имя.

Прокси не должен заменять смежные цепочки идентификаторов получателей на единое имя, если в данной цепочке присутствуют идентификаторы различных протоколов получателей.


5.12.45. Warning


Поле заголовка ответа Warning используется для переноса дополнительной информации о статусе ответа, которая не была отражена в коде статуса ответа.


Warning :: = "Warning" ":" 1#warning-value


warning-value :: = warn-code SP warn-agent SP warn-text

warn-code :: = 2DIGIT

warn-agent :: = ( host [ ":" port ] ) | pseudonym

; имя или псевдоним сервера, добавившего

; поле заголовка Warning

warn-text :: = quoted-string


Если в тесте warn-text используется набор символов, отличный от ISO-8859-1 [16] , текст должен быть закодирован в соответствии с RFC 2047 [17] .

Кэш не должен удалять поля Warning. Но при проверке актуальности позиции кэш должен удалить все поля Warning, ранее присоединенные к данному сообщению. Коды warn-code приведкны в табл. 3.





Таблица 3

Коды предупреждений warn-code


Код

Описание

10

Ответ устарел. Должен быть включен в устаревший ответ. Кэш не должен удалять данный код, пока не будет положительного ответа на проверку актуальности.

11

Ошибка проверки актуальности.

Должна быть включена в ответ, выдаваемый кэшем, если ответ является устаревшим, и возникла ошибка при попытке проверить актуальность ответа (возможно, из-за недостижимости сервера).

12

Работа в разъединенном режиме.

Может использоваться, если кэш намеренно отключен от остальной части сети на период времени.

13

Эвристическое истечение срока

Должно использоваться, если кэш эвристически выбрал срок актуальности более 24 часов, и возраст ответа превышает 24 часа.

14

Применено преобразование

Должно использоваться промежуточным кэшем или сервером прокси, если они применяют какое-либо преобразование, изменяющее кодировку содержимого (указанную в поле Content-Encoding) или тип информации (указанный в поле Content-Type) ответа.

Не должно удаляться из ответа даже после проверки актуальности.

99

Различные предупреждения

Текст предупреждения может включать произвольную информацию, предназначенную для чтения человеком-пользователем или для записи в журнальный файл. Система, получившая данное предупреждение, не должна автоматически предпринимать никаких действий.



5.12.46. WWW-Authenticate


Поле заголовка ответа WWW-Authenticate должно быть включено в сообщение ответа 401 ( п. 4.4.2, табл.1). Значение поля состоит как минимум из одного вызова, указывающего на схему идентификации и параметров, применимых для данного Request-URI.


WWW-Authenticate :: = "WWW-Authenticate" ":" 1#challenge














Приложение 6

Технические требования к техническим средствам службы доступа к информационным ресурсам по протоколу NNTP





1. Область применения


Настоящее приложение описывает технические требования к ТС службы доступа к информационным ресурсам а по протоколу NNTP в соответствии с RFC 977 [26] .

В приложении приведены o перации взаимодействия клиента с различными типами ресурсов сети передачи данных, доступ к которым осуществляется посредством сервера NNTP. NNTP обеспечивает распространение сообщений электронных новостей по сети передачи данных общего пользования с использованием протокола NNTP и предназначен для подключения к ВСС России. Протокол NNTP используется для передачи статей электронных новостей между серверами NNTP и от сервера клиенту.

Не все функции, содержащиеся в данном приложении, обязательны для ТС службы доступа к информационным ресурсам по протоколу NNTP , но если они выполняются , то их реализация должна соответствовать настоящему приложению.


2 . Функциональные требования к взаимодействию клиента NNTP и сервера NNTP

2 .1. Соединения

2.1.1. Протокол нижнего уровня


При использовании протоколом NNTP в качестве протокола нижнего уровня TCP, должен использоваться порт 119.

При использовании TCP каждый семибитный символ, передаваемый по соединению TCP должен передаваться в отдельном октете. При этом символ должен быть выровнен вправо, а старший бит октета установлен в 0.


2.1.2. Установление соединения и закрытие соединения


Клиент должен инициировать установление соединения протокола нижнего уровня. После установления соединения сервер должен выдать ответ 200 либо 201.

Закрытие соединения осуществляется в следующей последовательности: клиент выдает команду QUIT, сервер выдает ответ 205, сервер разрывает соединение протокола нижнего уровня.

3. Перечень и структура сообщений протокола NNTP


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

Сообщения NNTP подразделяются на команды и ответы .

3.1. Команды

3.1.1. Структура команд


Команда должна состоять из кода команды и аргументов. Для ряда команд аргумент не требуется. Слово команды и последующий аргумент, а также аргументы между собой должны быть отделены одним или более символами <SP>.

Различие между строчными и прописными символами в кодах команд и аргументах команд является несущественным.

Каждая команда должна заканчиваться символами <CRLF>.

Длина команды должна быть менее или равна 512 символов, включая все символы <SP>, символы разделителей и <CRLF>. Все команды должны состоять из одной строки.


3.1.2. Список команд


Список команд приведен в табл. 1.


Таблица 1

Список команд


Команда

ARTICLE [< message-id > / < nnn> ]

Аргументы

Message-id - идентификатор статьи

Nnn – числовой идентификатор статьи

Описание

Сервер выдает ответ статуса с указателем текущей статьи и идентификатором статьи, а также текстовый ответ с заголовком и текстом указанной статьи.

Message-id соответствует идентификатору, указанному в заголовке статьи.

Nnn соответствует числовому идентификатору статьи в данной группе новостей.

Если в качестве аргумента указан message-id, указатель текущей строки не должен меняться при выполнении данной команды.

Если аргумент отсутствует, должны выдаваться данные текущей статьи.

Если присутствует аргумент nnn, указатель текущей строки после выполнения команды должен быть установлен в nnn.

Ответы статуса

220, 221, 222, 223, 412, 420, 423, 430




Команда

BODY [<message-id > / < nnn> ]

Аргументы

Message-id - идентификатор статьи

nnn – числовой идентификатор статьи

Описание

Сервер выдает ответ статуса с указателем текущей статьи и идентификатором статьи, а также текстовый ответ с текстом указанной статьи.

Аргументы обрабатываются аналогично команде ARTICLE

Ответы статуса

220, 221, 222, 223, 412, 420, 423, 430




Команда

HEAD [< message-id > / < nnn> ]

Аргументы

message-id - идентификатор статьи

nnn - числовой идентификатор статьи

Описание

Сервер выдает ответ статуса с указателем текущей статьи и идентификатором статьи, а также текстовый ответ с заголовком указанной статьи.

Аргументы обрабатываются аналогично команде ARTICLE

Ответы статуса

220, 221, 222, 223, 412, 420, 423, 430


Команда

STAT [<message-id >/ < nnn> ]

Аргументы

message-id - идентификатор статьи

nnn - числовой идентификатор статьи

Описание

Сервер выдает ответ статуса с указателем текущей статьи и идентификатором статьи. Текстовый ответ не возвращается.

Данная команда используется для установки указателя текущей статьи.

Аргументы обрабатываются аналогично команде ARTICLE

Ответы статуса

220, 221, 222, 223, 412, 420, 423, 430


Команда

GROUP <ggg>

Аргументы

ggg - имя группы новостей

Описание

Выбор группы новостей.

Сервер выдает ответ статуса с номерами первой и последней статьи в группе, а также с примерным числом статей в группе.

Указатель текущей статьи должен быть установлен на первую статью в группе.

В случае указания неправильного (несуществующего) имени группы новостей остается выбранной предыдущая группа новостей, и указатель текущей статьи не меняется.

Разница между прописными и строчными буквами в имени группы новостей не должна быть существенна.

Ответы статуса

211, 411


Команда

HELP

Аргументы

-

Описание

Помощь.

Сервер должен выдавать ответ статуса и текстовый ответ, содержащий перечень команд, реализованных на данном сервере с кратким указанием их назначения.

Ответы статуса

100



Команда

IHAVE <message-id>

Аргументы

Message-id – идентификатор статьи

Описание

Команда информирует сервер, что у клиента есть статья с идентификатором message-id. Если на сервере есть копия данной статьи, он должен выдать ответ 335. Если на сервере нет копии данной статьи, он должен выдать ответ 435.

Если сервер выдал ответ 335, клиент должен выслать статью в формате, аналогичном формату текстового ответа сервера.

Ответы статуса

235, 335, 435, 436, 437



Команда

LAST

Аргументы

-

Описание

Команда устанавливает указатель текущей статьи на предшествующую статью в текущей группе новостей.

Ответы статуса

223, 412, 420, 422



Команда

LIST

Аргументы

-

Описание

Выдается список доступных групп новостей, относящаяся к ним информация в ответе статуса 215 со следующим за ним текстовом ответом. При отсутствии доступных групп новостей должен выдаваться пустой текстовый ответ.

Ответы статуса

215



Команда

NEWGROUPS < date> < time> [ GMT] [< distributions > ]

Аргументы

date - дата создания группы новостей в формате YY MM DD.

YY - год, MM - месяц, DD - день.

Для значений YY от 00 до 30 первые две цифры года равны 20 . Для значений YY от 70 до 99 берется 20 столетие - первые две цифры года равны 19.

time - время создания группы новостей в формате HHMMSS.

HH – часы, MM - минуты, SS - секунды.

GMT - указывает на то, что время задано относительно 0-го меридиана

distributions - список групп распространения

distributions ::= 1#distribution

distribution ::= <группа распространения новостей>

Описание

Выдается список групп новостей, созданных позднее времени, определяемого аргументами date и time, и группы распространения которых совпадают с указанными в аргументе distributions.

Время, указываемое date и time, предполагается вычисленным для временной зоны сервера, если только не указан аргумент GMT.

Ответы статуса

231





Команда

NEWNEWS <newsgroups> < date> < time> [ GMT] [< distribution>]

Аргументы

newsgroups - список шаблонов имени группы новостей.

newsgroups ::= 1#( ["!"] newsgroup) ; Символ "!" обозначает отрицание.

newsgroup ::= <шаблон имени группы новостей. В шаблоне имени новостей может использоваться символ "*" (звездочка) в качестве обозначения произвольного количества пропущенных символов.>

date - дата отправки или приема

time - время отправки или приема

Формат даты и времени аналогичен команде NEWGROUPS

GMT - указывает на то, что время задано относительно 0-го меридиана

distribution - список групп распространения. Используется аналогично команде NEWGROUPS

Описание

Сервер выдает список идентификаторов статей, которые были получены или отправлены в указанную группу новостей позднее указанной даты и времени. Список должен выдаваться в текстовом ответе. Под информацию об одной статье отводится одна строка.

При отсутствии статей, удовлетворяющих условию, должен выдаваться пустой текстовый ответ.

Ответы статуса

230


Команда

NEXT

Аргументы

-

Описание

Команда устанавливает указатель текущей статьи на следующую статью в текущей группе новостей.

Ответы статуса

223, 412, 420, 421


Команда

POST

Аргументы

-

Описание

Отправка статьи от клиента серверу.

После команды POST сервер выдает ответ статуса 340, если он разрешает отправку статьи, и 440, если отправка статьи запрещена.

При получении ответа сервера 340 клиент выдает статью в формате, аналогичном формату текстового ответа сервера.

Ответы статуса

240, 340, 440, 441


Команда

QUIT

Аргументы

-

Описание

На данную команду сервер должен выдать ответ 205 и закрыть соединение. Если соединение с клиентом разрывается по какой-либо причине, сервер не должен делать попытки восстановления соединения.

Ответы статуса

205



Команда

SLAVE

Аргументы

-

Описание

Данная команда показывает серверу, что клиентом является промежуточный сервер. Эта команда может быть использована сервером для установления повышенного приоритета данному соединению.

Ответы статуса

202

3.2. Ответы


Ответы делятся на текстовые ответы и ответы статуса.


3.2.1. Текстовый ответ должен состоять из серии текстовых строк. Каждая строка должна заканчиваться символами <CRLF>. Последовательность "<CRLF>.<CRLF>" (0x0D 0x0A 0x2E 0x0D 0x0A) указывает на конец текстового ответа.

При посылке сервером текстового ответа каждую последовательность "<CRLF>." (0x0D 0x0A 0x2E) сервер должен заменять на "<CRLF>.."(0x0D 0x0A 0x2E 0x2E). Клиент должен выполнять обратное преобразование. Указатель конца текстового ответа данному преобразованию не подвергается.


3.2.2. Ответ статуса должен состоять из 3-х значного кода ответа (передаваемого как три символа), за которым следует текст.

Значения номера ответа первой и второй цифры приведены в табл. 2 и табл. 3.


Таблица 2

Таблица 2. Содержание первой цифры ответа.



первая цифра

1

Информационное сообщение

2

Положительный окончательный ответ (успешное выполнение команды)

3

Положительный промежуточный ответ (часть операции успешно выполнена. Можно посылать следующую команду операции)

4

Временный отрицательный окончательный ответ (команда реализована, но не может быть выполнена по какой-либо причине)

5

Постоянный отрицательный окончательный ответ (команда не реализована, некорректно задана, произошла серьезная ошибка)




Таблица 3

Таблица 3. Содержание второй цифры ответа.




вторая цифра

0

Ошибки соединения, конфигурирования, другие ошибки

1

Выбор группы новостей

2

Выбор статьи новостей

3

Функции распространения

4

Отправка

8

Нестандартные расширения

9

Отладка


третья цифра позволяет сделать более точное разделение значений ответов по функциональным категориям, определенным второй цифрой.


Перед текстом ответа статуса могут следовать один или несколько параметров. Все числовые параметры представлены в виде десятичного числа. Параметры разделяются между собой, а также от последующего текста символами <SP>.


3.2.3. Список ответов


Должны быть реализованы ответы, перечисленные в табл. 4.









Таблица 4

Список ответов



Код

Текст

Последующий текстовый ответ

с учетом требований п. 3.2.1.

100

Далее следует текст помощи

Текстовые строки помощи

199

Вывод отладки

-

200

Сервер готов. Разрешена отправка статей на сервер.

-

201

Сервер готов. Запрещена отправка статей на сервер.

-

202

Учтен статус промежуточного сервера

-

205

Закрытие соединения

-

211

< n> < f> < l> < s> группа выбрана

n ::= <приблизительное число статей в группе>

f ::= <номер первой статьи в группе>

l ::= <номер последней статьи в группе>

s ::= <имя группы>

-

215

далее следует список групп новостей

Набор строк:

<g roup> < last> <first> <p>

group ::= <имя группы новостей>

last ::= <номер последней статьи в группе>

first ::= < номер первой статьи в группе>

p ::= "y"/"n" ; указывает на то, разрешена ли отправка статей в данную группу

220

< n> <a> статья получена

Далее следуют заголовок и тело статьи

n ::= <номер статьи>

a ::= <идентификатор статьи>

Если идентификатор статьи отсутствует в заголовке статьи, вместо него должен быть поставлен "0".

Заголовок и тело статьи в виде текстовых строк

221

< n> <a> статья получена

Далее следует заголовок статьи

Значения n и a аналогично ответу 220.

Заголовок статьи в виде текстовых строк с учетом.

222

< n> <a> статья получена

Далее следует тело статьи

Значения n и a аналогично ответу 220.

Тело статьи в виде текстовых строк

223

< n> <a> статья получена

Значения n и a аналогично ответу 220.

-

230

Далее следует перечень идентификаторов новых сообщений

набор строк

message-id <CRLF>

message-id ::= <идентификатор сообщения>

231

Далее следует список новых групп новостей

Список групп новостей в формате, аналогичном ответу 215

235

Статья передана без ошибок

-

240

Статья отправлена без ошибок

-

335

Жду передачи статьи.

-

340

Жду отправки статьи.

-

400

Служба не работает

-

411

Нет такой группы новостей

-

412

Не была выбрана группа новостей

-

420

Не был установлен указатель текущей статьи

-

421

Последняя статья в данной группе

-

422

Первая статья в данной группе

-

423

Нет статьи с таким номером в данной группе

-

430

Не найдена такая статья

-

435

Статья не нужна. Не отправлять.

-

436

Ошибка передачи. Попробуйте позже.

-

437

Статья отклонена. Больше ее не отправляйте.

-

440

Отправка не разрешена.

-

441

Ошибка отправки

-

500

Команда не распознана

-

501

Синтаксическая ошибка команды

-

502

Ограничение доступа. Нет разрешения.

-

503

Ошибка программы. Команда не выполнена.

-

Закрыть

Строительный каталог