根据RFC1035,dns名称可能包含\ ddd \ x和quote符号。请解释一下这些例子。
答案 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字符的名称的别名。