主机名以数字开头是否有效?

Mar*_*ark 51 hostname

主机名以数字开头是否有效?例如8server

从阅读RFC 1123看来,这是一个有效的主机名。但是,我不清楚主机名是否只能在有后缀时以数字开头,例如8server.com

这个问题的起源是InternetDomainName.isValid("8server");在谷歌番石榴库(Javadoc)拒绝输入。我还在番石榴讨论组上发布了一个具体问题。

Xav*_*cas 36

RFC 1123 放宽了 RFC 952 的约束,该约束指定了由 DNS 取代的主机名服务器协议(在RFC 953 中描述)的传统。因此,根据这些 RFC,全数字主机名将是有效的。

RFC 1123 本身讨论了 IP 与主机名解析的后果:

如果可以在没有此类标识分隔符的情况下输入点分十进制数,则必须进行完整的语法检查,因为现在允许主机域名的一段以数字开头并且可以合法地完全为数字 (参见第 6.1 节。 2.4)。但是,有效的主机名永远不能采用点分十进制形式#.#.#.#,因为至少最高级别的组件标签将是字母。

但是,由于实现问题,RFC 1178指南中提供了选择有效主机名的方法。许多这些实现不能很好地识别数字主机名,并尝试将它们解析为 IP,直到它们包含至少一个非数字字符,无论位置如何。

此外,您会发现实现并不总是遵守 RFC 952 的其他原始约束,例如允许主机名以减号或句点结尾。

DNS 保留了这些主机名的原始规范,并添加了对下划线的支持 ( RFC 2782 )。

更新根据评论中的要求,对句子进行澄清:但是,有效的主机名永远不能具有点分十进制形式#.#.#.#,因为至少最高级别的组件标签将是字母的。这意味着顶级域名必须是字母的,因此完全限定的主机名永远不会与 IPv4 地址混淆。这个想法已由RFC 3696 for DNS澄清并更改为not all-numeric。注意细微的差别。

  • 哈哈,不,我不会。几乎没有一天我_没有_有理由用 RFC 击败某些开发人员。 (12认同)
  • 请记住,无法处理名称中数字的实现可以追溯到 1980 年代;RFC 1178 于 1990 年发布。现在任何无法处理它的东西都是有问题的。 (8认同)
  • @迈克尔汉普顿:你不会相信我有时从开发者那里看到的狗屎。几周前,我有一个人在 ip-camera 中制作了一个网络配置网页,以便用户可以输入摄像头的主机名。他没有对自由格式的用户输入进行任何验证。Beta-test 用户输入“Room 1.10”,摄像机愉快地将其作为 DHCP 客户端标识符发送。我可以向你保证 Microsoft DHCP 和 DNS 服务器不喜欢那样。好在我在进入生产版本之前注意到了。想到有时会传达给客户的信息,我只能不寒而栗…… (2认同)

Cél*_*urd 15

最初主机名不能以数字或下划线(RFC 952)开头,但正如您提到的,新规范 RFC 1123 允许它。

关于对 isValid() 的调用,在这种情况下,应在参数中传递完整的域名: InternetDomainName.isValid("8server.com");


小智 9

是的。RFC 1123 明确允许这样做,这里有一个例子:

http://9292.nl/

它是荷兰公共交通的路线规划器。

  • 还有更多:http://9gag.com、http://4chan.org 等。 (3认同)