В каких случаях главный файл DNS может содержать CRLF?
Читая 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 ответ
Это означает, что это должно быть действительным:
example.com. IN TXT "hello,
world"
Авторы RFC, вероятно, ожидают, что он будет эквивалентен:
example.com. IN TXT "hello,\013\010world"
Из-за неоднозначности кодировки окончания строки в этих ситуациях (если платформа использует LF в качестве терминатора строки, вы все еще получаете CRLF в записи TXT?), Я сомневаюсь, что это широко применяется.