rd_45.134-2000 (524304), страница 12
Текст из файла (страница 12)
[""]
flag ::= "\Answered" / "\Flagged" / "\Deleted" /
"\Seen" / "\Draft" / flag_keyword / flag_extension
flag_extension ::= "\" atom
;; Future expansion. Client implementations
;; MUST accept flag_extension flags. Server
;; implementations MUST NOT generate
;; flag_extension flags except as defined by
;; future standard or standards-track
;; revisions of this specification.
;; (Будущее перспективное расширение. Клиентские реализации
;; должны иметь доступ к флагам flag_extension. Реализации
;; сервера не должны осуществлять
;; генерацию флагов flag_extension, за
;; исключением случаев, определенных вводимыми стандартами
;; или поправками - версиями ревизий - данной спецификации)
flag_keyword ::= atom
flag_list ::= "(" #flag ")"
greeting ::= "*" SPACE (resp_cond_auth / resp_cond_bye) CRLF
header_fld_name ::= astring
header_list ::= "(" 1#header_fld_name ")"
HTAB ::=
LF ::=
linear-white-space ::= 1*([CRLF] LWSP-char)
list ::= "LIST" SPACE mailbox SPACE list_mailbox
list_mailbox ::= 1*(ATOM_CHAR / list_wildcards) / string
list_wildcards ::= "%" / "*"
literal ::= "{" number "}" CRLF *CHAR8
;; Number represents the number of CHAR8 octets
;; (Number представляет число октетов CHAR8)
login ::= "LOGIN" SPACE userid SPACE password
lsub ::= "LSUB" SPACE mailbox SPACE list_mailbox
LWSP-char ::= SPACE / HTAB
mailbox ::= "INBOX" / astring
;; INBOX is case-insensitive. All case variants of
;; INBOX (e.g. "iNbOx") MUST be interpreted as INBOX
;; not as an astring. Refer to section 5.1 for
;; further semantic details of mailbox names.
;; (INBOX зависит от ргистра букв. Все варианты случаев
;; INBOX (напрмер "iNbOx") должны быть интерпретированы
;; и не astring. См. раздел 5.1 для
;; более подробного рассмотрения имен почтовых яиков.)
mailbox_data ::= "FLAGS" SPACE flag_list /
"LIST" SPACE mailbox_list /
"LSUB" SPACE mailbox_list /
"MAILBOX" SPACE text /
"SEARCH" [SPACE 1#nz_number] /
"STATUS" SPACE mailbox SPACE
"(" # number SPACE "EXISTS" / number SPACE "RECENT" mailbox_list ::= "(" #("\Marked" / "\Noinferiors" / "\Noselect" / "\Unmarked" / flag_extension) ")" SPACE ( QUOTED_CHAR / nil) SPACE mailbox media_basic ::= ( ("APPLICATION" / "AUDIO" / "IMAGE" / "MESSAGE" / "VIDEO") ) / string) SPACE media_subtype ;; Defined in [MIME-IMT] (Определены в [MIME-IMT]) media_message ::= "MESSAGE" SPACE "RFC822" ;; Defined in [MIME-IMT] (Определены в [MIME-IMT]) media_subtype ::= string ;; Defined in [MIME-IMT] (Определены в [MIME-IMT]) media_text ::= "TEXT" SPACE media_subtype ;; Defined in [MIME-IMT] (Определены в [MIME-IMT]) message_data ::= nz_number SPACE ("EXPUNGE" / ("FETCH" SPACE msg_att)) msg_att ::= "(" 1#("ENVELOPE" SPACE envelope / "FLAGS" SPACE "(" #(flag / "\Recent") ")" / "INTERNALDATE" SPACE date_time / "RFC822" [".HEADER" / ".TEXT"] SPACE nstring / "RFC822.SIZE" SPACE number / "BODY" ["STRUCTURE"] SPACE body / "BODY" section [""] SPACE nstring / "UID" SPACE uniqueid) ")" nil ::= "NIL" nstring ::= string / nil number ::= 1*digit ;; Unsigned 32-bit integer (Целые без знака.32 бита) ;; (0 <= n < 4,294,967,296) nz_number ::= digit_nz *digit ;; Non-zero unsigned 32-bit integer (Ненулевые целые без ;; знака, 32 бита) ;; (0 < n < 4,294,967,296) password ::= astring quoted ::= *QUOTED_CHAR QUOTED_CHAR ::= / "\" quoted_specials quoted_specials ::= / "\" rename ::= "RENAME" SPACE mailbox SPACE mailbox ;; Use of INBOX as a destination gives a NO error ;; (Использование INBOX, выдающего сообщение об отсутствии ;; ошибок как пункта назначения) response ::= *(continue_req / response_data) response_done response_data ::= "*" SPACE (resp_cond_state / resp_cond_bye / mailbox_data / message_data / capability_data) CRLF response_done ::= response_tagged / response_fatal response_fatal ::= "*" SPACE resp_cond_bye CRLF ;; Server closes connection immediately ;; (Сервер немедленно закрывает соединение) response_tagged ::= tag SPACE resp_cond_state CRLF resp_cond_auth ::= ("OK" / "PREAUTH") SPACE resp_text ;; Authentication condition (Условие аутоидентификации) resp_cond_bye ::= "BYE" SPACE resp_text resp_cond_state ::= ("OK" / "NO" / "BAD") SPACE resp_text ;; Status condition (Условие статуса) resp_text ::= ["[" resp_text_code "]" SPACE] (text_mime2 / text) ;; text SHOULD NOT begin with "[" or "=" ;; (текст не следует начинать с символа "[" или "=") resp_text_code ::= "ALERT" / "PARSE" / "PERMANENTFLAGS" SPACE "(" #(flag / "\*") ")" / "READ-ONLY" / "READ-WRITE" / "TRYCREATE" / "UIDVALIDITY" SPACE nz_number / "UNSEEN" SPACE nz_number / atom [SPACE 1*] search ::= "SEARCH" SPACE ["CHARSET" SPACE astring SPACE] 1#search_key ;; [CHARSET] MUST be registered with IANA ;; ( [CHARSET] должен быть зарегистрирован с именем IANA) search_key ::= "ALL" / "ANSWERED" / "BCC" SPACE astring / "BEFORE" SPACE date / "BODY" SPACE astring / "CC" SPACE astring / "DELETED" / "FLAGGED" / "FROM" SPACE astring / "KEYWORD" SPACE flag_keyword / "NEW" / "OLD" / "ON" SPACE date / "RECENT" / "SEEN" / "SINCE" SPACE date / "SUBJECT" SPACE astring / "TEXT" SPACE astring / "TO" SPACE astring / "UNANSWERED" / "UNDELETED" / "UNFLAGGED" / "UNKEYWORD" SPACE flag_keyword / "UNSEEN" / ;; Above this line were in [IMAP2] ;; (Ранее эта строка была в [IMAP2]) "DRAFT" / "HEADER" SPACE header_fld_name SPACE astring / "LARGER" SPACE number / "NOT" SPACE search_key / "OR" SPACE search_key SPACE search_key / "SENTBEFORE" SPACE date / "SENTON" SPACE date / "SENTSINCE" SPACE date / "SMALLER" SPACE number / "UID" SPACE set / "UNDRAFT" / set / "(" 1#search_key ")" section ::= "[" [section_text / (nz_number *["." nz_number] ["." (section_text / "MIME")])] "]" section_text ::= "HEADER" / "HEADER.FIELDS" [".NOT"] SPACE header_list / "TEXT" select ::= "SELECT" SPACE mailbox sequence_num ::= nz_number / "*" ;; * is the largest number in use. For message ;; sequence numbers, it is the number of messages ;; in the mailbox. For unique identifiers, it is ;; the unique identifier of the last message in ;; the mailbox. ;; (* -наибольше используемое число. Для последовательного ;; подсчета сообщений - это число сообщений в почтовом ящике. ;; Для уникального идентификатора - это уникальный иденти- ;; фикатор последнего сообщения в почтовом ящике) set ::= sequence_num / (sequence_num ":" sequence_num) / (set "," set) ;; Identifies a set of messages. For message ;; sequence numbers, these are consecutive ;; numbers from 1 to the number of messages in ;; the mailbox ;; Comma delimits individual numbers, colon ;; delimits between two numbers inclusive. ;; Example: 2,4:7,9,12:* is 2,4,5,6,7,9,12,13, ;; 14,15 for a mailbox with 15 messages. ;; (Определяет набор сообщений. Для подсчета последовательных ;; сообщений это - последовательные числа от 1 до числа ;; сообщений в почтовом ящике. Запятая разделяет отдельные ;; числа, двоеточие указывает наличие промежуточных чисел. ;; Например, 2,4:7,9,12:* это 2,4,5,6,7,9,12,13,14,15 для ;; почтового ящика с 15-ью сообщениями) SPACE ::= status ::= "STATUS" SPACE mailbox SPACE "(" 1#status_att ")" status_att ::= "MESSAGES" / "RECENT" / "UIDNEXT" / "UIDVALIDITY" / "UNSEEN" store ::= "STORE" SPACE set SPACE store_att_flags store_att_flags ::= (["+" / "-"] "FLAGS" [".SILENT"]) SPACE (flag_list / #flag) string ::= quoted / literal subscribe ::= "SUBSCRIBE" SPACE mailbox tag ::= 1* text ::= 1*TEXT_CHAR text_mime2 ::= "=?" "?" "?" "?=" ;; Syntax defined in [MIME-HDRS] ;;(Синтаксис определен в [MIME-IMT]) TEXT_CHAR ::= time ::= 2digit ":" 2digit ":" 2digit ;; Hours minutes seconds (Часы минуты секунды) uid ::= "UID" SPACE (copy / fetch / search / store) ;; Unique identifiers used instead of message ;; sequence numbers ;; (Уникальные идентификаторы, используемые вместо ;; номера последовательных сообщений) uniqueid ::= nz_number ;; Strictly ascending (Строго по восходящей) unsubscribe ::= "UNSUBSCRIBE" SPACE mailbox userid ::= astring x_command ::= "X" atom zone ::= ("+" / "-") 4digit ;; Signed four-digit value of hhmm representing ;; hours and minutes west of Greenwich (that is, ;; (the amount that the given time differs from ;; Universal Time). Subtracting the timezone ;; from the given time will give the UT form. ;; The Universal Time zone is "+0000". ;; (4-х значное величина hhmm со знаком, отображающая ;; часы и минуты по Гринвичу, то есть значение, которое ;; дает отличие времени от значения Универсального ;; времени). Вычитание временной зоны из данного времени ;; даст значение UT-формы - формы Универсального времени. ;; Зона Универсального времени - это "+0000".) Сообщение состоит из заголовка и необязательного тела сообщения. Тело сообщения является простым набором линий, содержащих символы ASCII. Тело сообщения отделено от заголовка NULL-строкой (строкой, состоящей только из символов ). Заголовок сообщения состоит из полей заголовка. Каждое поле состоит из имени поля, двоеточия - символа ":" и значения поля. Значение поля может быть разбито на части символами . При этом символы должны немедленно следовать за символом . Далее поля заголовка описываются в предположении, что из их значений выброшены символы . Приведено определение структуры сообщения с использованием формы Наура-Бекуса. В определениях используются элементы, определенные в п. 5. = ; ( 42, 34.) addr-spec = local-part "@" domain ; глобальный адрес address = mailbox ; один адресат / group ; именованный список ALPHA = <любой алфавитный символ ASCII> ; (101-132, 65.- 90.) ; (141-172, 97.-122.) atom = 1* authentic = "From" ":" mailbox ; Единственный автор / ( "Sender" ":" mailbox ; Настоящий отправитель "From" ":" 1#mailbox) ; Много авторов CHAR = ; ( 0-177, 0.-127.) CTL = <любой символ ASCII control ; ( 0- 37, 0.- 31.) и DEL> ; ( 177, 127.) comment = "(" *(ctext / quoted-pair / comment) ")" CR = ; ( 15, 13.) CRLF = CR LF ctext = may be folded ")", "\" & CR, & including linear-white-space> date = 1*2DIGIT month 2DIGIT ; day month year ; e.g. 20 Jun 82 date-time = [ day "," ] date time ; dd mm yy ; hh:mm:ss zzz dates = orig-date ; Отправлено [ resent-date ] ; Переслано day = "Mon" / "Tue" / "Wed" / "Thu" / "Fri" / "Sat" / "Sun" delimiters = specials / linear-white-space / comment destination = "To" ":" 1#address ; Первичный / "Resent-To" ":" 1#address / "cc" ":" 1#address ; Вторичный / "Resent-cc" ":" 1#address / "bcc" ":" #address ; Слепая пересылка / "Resent-bcc" ":" #address DIGIT = ; ( 60- 71, 48.- 57.) domain = sub-domain *("." sub-domain) domain-literal = "[" *(dtext / quoted-pair) "]" domain-ref = atom ; символическая ссылка dtext = may be folded "]", "\" и CR, и включая linear-white-space> fields = dates ; Требуется Дата создания source ; id автора и один 1*destination ; адрес. Другие поля *optional-field ; факультативные group = phrase ":" [#mailbox] ";" hour = 2DIGIT ":" 2DIGIT [":" 2DIGIT] HTAB = ; ( 11, 9.) LF = ; ( 12, 10.) linear-white-space = 1*([CRLF] LWSP-char) ; local-part = word *("." word) ; протоколом не интерпретируется LWSP-char = SPACE / HTAB mailbox = addr-spec ; простой адрес / phrase route-addr ; name & addr-spec message = fields *( CRLF *text ) ; Все, что следует после ; первой пустой строки - ; это тело сообщения month = "Jan" / "Feb" / "Mar" / "Apr" / "May" / "Jun" / "Jul" / "Aug" / "Sep" / "Oct" / "Nov" / "Dec" msg-id = "" ; Уникальный идент. сообщения optional-field = / "Message-ID" ":" msg-id / "Resent-Message-ID" ":" msg-id / "In-Reply-To" ":" *(phrase / msg-id) / "References" ":" *(phrase / msg-id) / "Keywords" ":" #phrase / "Subject" ":" *text / "Comments" ":" *text / "Encrypted" ":" 1#2word / extension-field / user-defined-field ; может быть пустым orig-date = "Date" ":" date-time originator = authentic ; идентифицированный адрес [ "Reply-To" ":" 1#address] ) phrase = 1*word quoted-pair = "\" CHAR quoted-string = *(qtext/quoted-pair) ; qtext = <любой CHAR кроме , ; => may be folded "\" и CR, и включая linear-white-space> received = "Received" ":" ; один на ["from" domain] ; оправлюящий узел ["by" domain] ; получающий узел ["via" atom] ; физический путь *("with" atom) ; протокол соединения/почты ["id" msg-id] ; идентификатор сообщения ; получателя ["for" addr-spec] ; начальная форма ";" date-time ; время получения resent = resent-authentic [ "Resent-Reply-To" ":" 1#address] ) resent-authentic = = "Resent-From" ":" mailbox / ( "Resent-Sender" ":" mailbox "Resent-From" ":" 1#mailbox ) resent-date = "Resent-Date" ":" date-time return = "Return-path" ":" route-addr ; обратный адрес route-addr = "" route = 1#("@" domain) ":" ; path-relative ; case-preserved source = [ trace ] ; сетевые узлы, originator ; переславшие сообщение [ resent ] ; SPACE = ; ( 40, 32.) specials = "(" / ")" / "" / "@" ; Для использования / "," / ";" / ":" / "\" / ; внутри слова должен быть / "." / "[" / "]" ; в кавычках sub-domain = domain-ref / domain-literal text = atoms, specials, CR & bare LF, but NOT ; comments и including CRLF> ; quoted-strings ; не распознаются time = hour zone ; ANSI и Military ; 00:00:00 - 23:59:59 trace = return ; путь к отправителю 1*received ; тэги получения word = atom / quoted-string zone = "UT" / "GMT" ; Время по Гринвичу ; North American : UT / "EST" / "EDT" ; Eastern: - 5/ - 4 / "CST" / "CDT" ; Central: - 6/ - 5 / "MST" / "MDT" ; Mountain: - 7/ - 6 / "PST" / "PDT" ; Pacific: - 8/ - 7 / 1ALPHA ; Military: Z = UT; ; A:-1; (J not used) ; M:-12; N:+1; Y:+12 / ( ("+" / "-") 4DIGIT ) ; Местное время Настоящее приложение описывает технические требования к ТС службы доменных имен по протоколу DNS в соответствии с RFC 1034 [12] и RFC 1035 [13]. В приложении приведены процедуры обращения клиента к распределенной базе данных доменных имен с целью получения информации, связанной с указанным доменным именем, а также описывает функционирование распределенной базы данных доменых имен. Не все функции, содержащиеся в данном приложении, обязательны для ТС служб lдоменных имен по протоколу DNS, но если они выполняются, то их реализация должна соответствовать настоящему приложению. Сообщения DNS должны передаваться в датаграммах UDP или с использованием виртуального соединения TCP. Контрольные файлы DNS должны передаваться с использованием протоколов надежной передачи файлов по сети передачи данных. При использовании протокола UDP на сервере должен использоваться порт с десятичным номером 53. При использовании UDP максимальный размер сообщения DNS должен составлять 512 байт. Более длинные сообщения должны усекаться с установкой бита TC заголовка сообщения (см. п. 4.1.2.). Протокол UDP не должен использоваться для пересылки зоны. При использовании протокола TCP на сервере должен использоваться порт с десятичным номером 53. При пересылке сообщений по соединению TCP сообщениям должно предшествовать поле длины размером 2 байта, содержащее значение длины сообщения без учета данного дополнительного поля. При использовании TCP каждый семибитный символ, передаваемый по соединению TCP, должен передаваться в отдельном октете. При этом символ должен быть выровнен вправо, а старший бит октета установлен в 0. 2.1.4. Установление соединения и закрытие соединения При обмене сообщениями DNS в случае использования виртуального соединения соединение должно инициироваться стороной клиента. Данные должны передаваться либо в форме сообщений DNS, либо в форме контрольных файлов. Обмен данными в форме сообщений DNS должен происходить как последовательность запросов DNS и ответов DNS. Сервер DNS должен поддерживать как клиентскую, так и серверную часть протокола DNS. 3.1.1. Формат сообщений DNS должен соответствовать п. 5.4.1. 3.1.2. Заголовок сообщения DNS должен состоять из полей: ID, QR, OPCODE, AA, TC, RD, RA, Z, RCODE, QDCOUNT, ANCOUNT, NSCOUNT, ARCOUNT. 3.1.3. Формат записей ресурсов в сообщениях DNS должен соответствовать п. 5.3.2. 3.1.4. Должны поддерживаться следующие виды сообщений DNS: запрос; ответ. 3.1.5. Должен поддерживаться стандартный тип запроса. Порядок обработки запроса должен соответствовать п. 5.4.2.1. 3.1.6. Если поддерживается инверсный тип запроса, порядок его обработки должен соответствовать п. 5.4.2.2. 3.1.7. Должны поддерживаться следующие коды ответа: 0 - нет ошибки; 1 - ошибка формата запроса; 2 - внутренняя ошибка сервера; 3 - ошибка имени; 4 - данный вид запроса не реализован; 5 - отказ выполнения операции; 3.1.8. Если поддерживаются рекурсивные запросы, порядок согласования выполнения рекурсивного запроса должен соответствовать п. 5.5.5., а алгоритм обработки рекурсивного запроса должен соответствовать п. 5.5.2. 3.1.9. При выдаче сервером ответа в поле ID заголовка ответа должен содержаться идентификационный номер, совпадающий с идентификационным номером соответствующего запроса. 3.1.10. При выдаче ответа авторитетным сервером в поле AA заголовка ответа должна быть установлена 1. 3.1.11. При усечении сообщения в поле TC заголовка сообщения должна устанавливаться 1. 3.1.12. Если в сервере реализована обработка инверсных запросов, формат запроса и ответа должен соответствовать п. 5.4.2.2. При сравнении любых элементов данных протокола DNS не должно делаться различия между строчными и прописными символами. Символьная форма доменного имени должна соответствовать 5.2.1.2., а двоичная форма доменного имени должна соответствовать 5.2.1.1. Если сервер DNS поддерживает сжатие сообщений, механизм сжатия должен соответствовать п. 5.4.3. В сервере должна быть реализована загрузка информации о доменном дереве из управляющего файла в формате, соответствующем п. 5.4.4. Должны быть исключены ситуации, когда загрузка контрольного файла осуществляется не полностью. При ошибке загрузки контрольного файла сервер имен не должен использовать информацию из данного контрольного файла. После загрузки контрольного файла записи RR, выдаваемые в ответах сервера, должны соответствовать записям загруженного контрольного файла, если только не поступила информация об изменении зоны . 4.1.1. УТС DNS должен обеспечивать функции сервера DNS и функции клиента DNS 4.1.2. При реализации кэширования отрицательных ответов к дополнительной секции авторитетного ответа должна добавляться запись RR типа SOA. Описание типа SOA дано в п. 5.3.2.1.6. 4.1.3. При реализации разрешающей системы и проведения поиска данных по псевдониму, должна быть выполнена цепочка запросов до получения требуемых данных, либо до выяснения ошибочного состояния. Данное требования не распространяется на запросы общего поиска. 4.1.4. Должны поддерживаться записи RR с шаблонными именами владельца согласно п. 5.3.4. 4.1.5. Должен поддерживаться субдомен IN-ADDR.ARPA. согласно п. 5.2.4. Максимальный размер элементов протокола должен соответствовать табл. 1 Таблица 1 Максимальный размер элементов протокола. Элементы Максимальный размер Labels Метки 63 октета Names Имена 255 октетов TTL время жизни Максимальное положительное значение 32-х битового целого со знаком UDP messages пакеты UDP 512 октетов 4.3.1. Если сервер поддерживает функции вторичного сервера зоны DNS, временные параметры REFRESH, RETRY, EXPIRE процедуры отслеживания изменений зоны на первичном сервере должны соответствовать значениям, установленным в записи RR SOA для данной зоны. 5. Структура почтового сообщения в соответствии с RFC 822
Приложение 4
Технические требования к техническим средствам службы доменных имен протоколу dns
1. Область применения
2. Функциональные требования к серверу DNS
2.1. Соединения
2.1.1. Протокол нижнего уровня
2.1.2. Требования к использованию протокола UDP
2.1.3. Требования к использованию протокола TCP
3. Перечень и структура данных, передаваемых по протоколу DNS
3.1. Формат сообщений DNS
3.2. Кодирование данных в сообщениях DNS
3.3. Сжатие сообщений
3.4. Контрольные файлы
4. Требования к реализации сервера DNS
4.1. Общие требования к реализации сервера DNS
4.2. Требования к размеру элементов протокола
4.3. Реализация вторичного сервера зоны
Характеристики
Список файлов стандарта















