根据RFC1035,dns名称可以包含\ddd \x和引号符号。请举例说明。
发布于 2008-10-24 15:05:31
RFC1035没有说DNS names可以包含这些字符。在第5节(主文件)中,它指出包含RR信息的文件可以包含这些字符。具体地说:“因为这些文件是文本文件,所以需要几种特殊的编码来允许加载任意数据。”除了域之外,还有其他文本可以放入区域文件。例如,TXT记录中的条目是自由文本,因此您可能希望在其中放置一个二进制字符,用\ddd字符串表示,等等。您还可以进行注释,因此您可以在注释中使用这些“特殊编码”。
有对国际化域名的支持,但RFC1035是从1987年开始的,当时它还没有讨论i18n域名。
编辑:我刚刚重读了一遍,我想我错了。上面的内容在技术上是关于文件格式的。然而,这也在RFC的3.1节中:
尽管标签可以包含组成标签的任何8位二进制八位数的值,但强烈建议标签遵循本备忘录中其他地方介绍的首选语法,这与现有的主机命名约定兼容。名称服务器和解析器必须以不区分大小写的方式(即,A=a)比较标签,假定ASCII码具有零奇偶校验。非字母代码必须完全匹配。
因此,这意味着任何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发布于 2009-10-19 07:06:31
推荐的读物是RFC 2181,它的第11节很好地解释了这个问题。
否则,有关示例,请参阅maps-to-nonascii.rfc-test.net。此名称是包含非ASCII字符的名称的别名。
https://stackoverflow.com/questions/233721
复制相似问题