DNS域名语法示例

时间:2008-10-24 14:18:36

标签: dns

根据RFC1035,dns名称可能包含\ ddd \ x和quote符号。请解释一下这些例子。

2 个答案:

答案 0 :(得分:2)

RFC1035并未说DNS 名称可以包含这些字符。在第5节(主文件)中,它表示包含RR信息的文件可以包含这些字符。具体来说:“因为这些文件是文本文件,所以有几种特殊编码 允许加载任意数据是必要的。“除了可以进入区域文件的域之外的文本。例如,TXT记录中的条目是自由文本,因此您可能希望在其中放入二进制字符,用\ ddd string等。您也可以发表评论,因此您可以在评论中使用这些“特殊编码”。

支持国际化域名,但RFC1035是从1987年开始的,当时并不是在谈论i18n域名。

编辑:我只是重读它,我想我错了。上面的内容在技术上与文件格式有关。但是,这也在3.1节中的RFC中:

Although labels can contain any 8 bit values in octets that make up a
label, it is strongly recommended that labels follow the preferred
syntax described elsewhere in this memo, which is compatible with
existing host naming conventions.  Name servers and resolvers must
compare labels in a case-insensitive manner (i.e., A=a), assuming ASCII
with zero parity.  Non-alphabetic codes must match exactly.

因此,这表示任何8位字符都可以是标签的一部分(标签是点之间域名的一部分)。不过,本文档描述了DNS协议的技术能力。常见用法是另一回事。实际上,在“2.3.1。首选名称语法”一节中:

The following syntax will result in
fewer problems with many applications
that use domain names (e.g., mail,
TELNET).

<domain> ::= <subdomain> | " "

<subdomain> ::= <label> | <subdomain>
"." <label>

<label> ::= <letter> [ [ <ldh-str> ]
<let-dig> ]

<ldh-str> ::= <let-dig-hyp> |
<let-dig-hyp> <ldh-str>

<let-dig-hyp> ::= <let-dig> | "-"

<let-dig> ::= <letter> | <digit>

<letter> ::= any one of the 52
alphabetic characters A through Z in
upper case and a through z in lower
case

<digit> ::= any one of the ten digits
0 through 9

换句话说,DNS协议从一开始就定义为使用8位ascii。但是,如果您确实希望您的程序能够使用DNS中的域,那么您应该坚持使用[a-z - ]。

至于一个例子,我认为这只是意味着你可以拥有这样的DNS条目:

IHaveAn\020EmbeddedTab  IN A 172.24.3.1

答案 1 :(得分:1)

推荐读数为RFC 2181,其第11节解释了该问题。

否则,例如,请参阅maps-to-nonascii.rfc-test.net。此名称是具有非ASCII字符的名称的别名。