В каких случаях основной файл DNS может содержать CRLF? - PullRequest
1 голос
/ 20 октября 2019

При чтении RFC 1035, раздел 5.1 , чтобы написать синтаксический анализатор основного файла, я наткнулся на следующее утверждение:

5.1. Формат

Формат этих файлов представляет собой последовательность записей. Записи преимущественно ориентированы на строки, хотя скобки можно использовать для продолжения списка элементов через границу строки, а текстовые литералы могут содержать CRLF внутри текста . Любая комбинация знаков табуляции и пробелов действует как разделитель между отдельными элементами, составляющими запись. Конец любой строки в главном файле может заканчиваться комментарием. Комментарий начинается с ";"(точка с запятой).

Что авторы подразумевают под "текстовые литералы могут содержать CRLF внутри текста" ? Мне известно, что приведенная ниже запись действительна, как указано в Разделе 5.3 , но мне не удалось найти ни пример утверждения, ни правильное определение "текстовой литерал" . Кроме того, я безуспешно искал компаньона RFC 1034 для какого-либо упоминания вышеупомянутого утверждения.

@   IN  SOA     VENERA      Action\.domains (
                                 20     ; SERIAL
                                 7200   ; REFRESH
                                 600    ; RETRY
                                 3600000; EXPIRE
                                 60)    ; MINIMUM

Я бы предположил, что текстовый литерал может быть ограничен скобками. Будут ли какие-либо из следующих комментариев действительными в соответствии с RFC 1035 и каким образом CRLF будет действительным в файле?

@   IN  SOA     VENERA      Action\.domains (
                                 20     ;  Some example of a multi-line comment 
                                           inside parentheses
                                 7200
                                 600
                                 3600000
                                 60)    ;  (Some example of parentheses
                                           inside a multi-line comment)

1 Ответ

0 голосов
/ 20 октября 2019

Это означает, что это должно быть действительно:

example.com. IN TXT "hello,
world"

Авторы RFC, вероятно, ожидают, что оно будет эквивалентно:

example.com. IN TXT "hello,\013\010world"

Из-за неоднозначности кодировок конца строкив этих ситуациях (если платформа использует LF в качестве ограничителя строки, вы все еще получаете CRLF в записи TXT?), я сомневаюсь, что это широко реализовано.

...