Syntax 哪些RFC指定主机名的语法和DNS主机名的约束?

Syntax 哪些RFC指定主机名的语法和DNS主机名的约束?,syntax,dns,hostname,rfc,Syntax,Dns,Hostname,Rfc,关于主机名的语法,对以下问题的回答经常提到和,但没有提到这似乎对主机名施加了额外的限制。以后可能会有一堆关于(和)的RFC,其中包括DNS处理的主机名约束 主机名和DNS处理的主机名的有效语法有很多混淆 哪些RFC指定主机名的语法要求,哪些RFC指定DNS处理的主机名的附加约束?您可以查看。 这是一个纯粹基于DNS的RFC,并解释了其中的一些限制。您引用RFC 1123和RFC 952是正确的,但您省略了“DNS规范的澄清”。具体而言,§11包含以下内容: 。。。任何二进制字符串都可以用作任何资

关于主机名的语法,对以下问题的回答经常提到和,但没有提到这似乎对主机名施加了额外的限制。以后可能会有一堆关于(和)的RFC,其中包括DNS处理的主机名约束

主机名和DNS处理的主机名的有效语法有很多混淆


哪些RFC指定主机名的语法要求,哪些RFC指定DNS处理的主机名的附加约束?

您可以查看。
这是一个纯粹基于DNS的RFC,并解释了其中的一些限制。

您引用RFC 1123和RFC 952是正确的,但您省略了“DNS规范的澄清”。具体而言,§11包含以下内容:

。。。任何二进制字符串都可以用作任何资源记录的标签

由于“主机名”是一个具有
a
记录的域名,因此此文本似乎允许任何有效的域名也被视为有效的主机名

几年前,我问这篇文章的一位作者,这是否是预期的解释,他证实了这一点。然而,这一观点并没有被广泛接受,对于您提出的什么是合法主机名的问题,DNS社区内仍然没有一致同意的答案


p、 你们误读了RFC1123,它并没有说63和255是标签和域名的下限。63限制实际上是由DNS标签的有线格式强制执行的,该格式仅为标签长度保留6位。

由更新。RFC 2181的哪些更新也可能与此相关。这是RFC的问题之一-它们已经存在很长时间了,并且它们之间并不总是像它们应该的那样相互一致。我提到的RFC2181实际上是规范文本——任何二进制八位组都可以使用。然而,4343的效果是,您不能保证DNS服务器不会将其中的任何字母字符更改为不同的大小写。然而,4343并没有提到非字母数字,所以根据2181,它们仍然是公平的游戏。不要尝试将utf-8放在域名中,尽管-八位字节上的大小写混乱可能会损坏代码点。为了避免UTF8/UTF16的问题,添加了一些很好的“特性”(punycode,“xn-”)。我在IPAM行业看到的一个经典案例是,主机名是使用RFC1035定义的(只使用字母数字,不使用前导下划线和一系列其他规则),而Microsoft DNS记录以“\uuuux”开头是一个例外。不过,这只是一个“经典”用例,我想说的并不是什么正式的东西。@NaeiKinDus确实-punycode编码规避了区分大小写的问题,当然,大多数注册中心都不会让你注册一个实际的域名,而且它也不会包含任意的二进制字符。警告是试图在标签中使用原始二进制文件,尽管RFC 6891放弃了RFC 2671(EDNS)@ NaEnKeNoD中引入的特殊的“二进制标签”格式,虽然我考虑RFC 1035强制阅读,但是IHO是关于合法主机名称语法问题的最不有用的DNS RFC之一。谢谢!RFC 1123在2.1中指出“主机软件必须处理最多63个字符的主机名,并且应处理最多255个字符的主机名。”我已更正了原来的问题。@Jotik这些仍然是上限。这意味着软件实现必须处理所有合法标签,并且应该处理所有合法域。没有任何地方表明它们应该支持高于这些限制的值。它应该被理解为“不超过N”!