Mark Asked: 2014-10-21 01:24:56 +0800 CST2014-10-21 01:24:56 +0800 CST 2014-10-21 01:24:56 +0800 CST 主机名以数字开头是否有效? 772 主机名以数字开头是否有效?例如8server 从阅读RFC 1123看来,这是一个有效的主机名。但是,我不清楚主机名是否只能在有后缀时以数字开头,例如8server.com 这个问题的起源是InternetDomainName.isValid("8server");在 Google Guava 库(Javadoc)中拒绝输入。我还在Guava 讨论组上发布了一个具体问题。 hostname 3 个回答 Voted Best Answer Xavier Lucas 2014-10-21T02:10:37+08:002014-10-21T02:10:37+08:00 RFC 1123放宽了 RFC 952 的约束,该约束指定了由 DNS 替换的主机名服务器协议(在RFC 953中描述)的传统。因此,对于这些 RFC,全数字主机名将是有效的。 RFC 1123 本身讨论了 IP 与主机名解析的后果: 如果可以在没有此类标识分隔符的情况下输入点分十进制数字,则必须进行完整的语法检查,因为现在允许主机域名的一部分以数字开头并且可以合法地完全是数字 (参见第 6.1 节)。 2.4)。但是,有效的主机名永远不能采用点分十进制形式#.#.#.#,因为至少最高级别的组件标签将是字母。 但是,由于实施问题, RFC 1178指南中提供了选择有效主机名的方法。许多这些实现不能很好地识别数字主机名,并尝试将它们解析为 IP,直到它们包含至少一个非数字字符,无论位置如何。 此外,您会发现实现并不总是遵守 RFC 952 的其他原始约束,例如允许主机名以减号或句点结尾。 DNS 保留了这些原始的主机名规范,并增加了对下划线的支持 ( RFC 2782 )。 更新根据评论中的要求,对句子进行澄清:但是,有效的主机名永远不能具有点分十进制形式#.#.#.#,因为至少最高级别的组件标签将是 alphabetic。这意味着顶级域名必须是字母,因此完全限定的主机名永远不会与 IPv4 地址混淆。RFC 3696已经为 DNS 阐明了这个想法,并将其更改为not all-numeric。注意细微的差别。 Céline Aussourd 2014-10-21T01:40:05+08:002014-10-21T01:40:05+08:00 最初主机名不能以数字或下划线 ( RFC 952 ) 开头,但正如您所提到的,新规范 RFC 1123 允许它。 关于对 isValid() 的调用,在这种情况下,应在参数中传递完整的域名:InternetDomainName.isValid("8server.com"); Anonymous Coward 2014-10-21T04:42:29+08:002014-10-21T04:42:29+08:00 是的。RFC 1123 明确允许这样做,这里有一个例子: http://9292.nl/ 它是荷兰公共交通的路线规划器。
RFC 1123放宽了 RFC 952 的约束,该约束指定了由 DNS 替换的主机名服务器协议(在RFC 953中描述)的传统。因此,对于这些 RFC,全数字主机名将是有效的。
RFC 1123 本身讨论了 IP 与主机名解析的后果:
但是,由于实施问题, RFC 1178指南中提供了选择有效主机名的方法。许多这些实现不能很好地识别数字主机名,并尝试将它们解析为 IP,直到它们包含至少一个非数字字符,无论位置如何。
此外,您会发现实现并不总是遵守 RFC 952 的其他原始约束,例如允许主机名以减号或句点结尾。
DNS 保留了这些原始的主机名规范,并增加了对下划线的支持 ( RFC 2782 )。
更新根据评论中的要求,对句子进行澄清:但是,有效的主机名永远不能具有点分十进制形式#.#.#.#,因为至少最高级别的组件标签将是 alphabetic。这意味着顶级域名必须是字母,因此完全限定的主机名永远不会与 IPv4 地址混淆。RFC 3696已经为 DNS 阐明了这个想法,并将其更改为not all-numeric。注意细微的差别。
最初主机名不能以数字或下划线 ( RFC 952 ) 开头,但正如您所提到的,新规范 RFC 1123 允许它。
关于对 isValid() 的调用,在这种情况下,应在参数中传递完整的域名:
InternetDomainName.isValid("8server.com");
是的。RFC 1123 明确允许这样做,这里有一个例子:
http://9292.nl/
它是荷兰公共交通的路线规划器。