РД 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 |
Ошибка программы. Команда не выполнена. |
- |