什么是有效的主机名标签?

什么是有效的主机名标签?

我将主机名设置为一个数字,运行时hostname给出:

6592

但是当我跑步时ping 6592,我得到:

connect: Invalid argument

我查了相关的维基百科页面,并且它确实说允许这样的主机名(IIUC)。我缺少什么?

答案1

RFC 所说的内容实际上在这里并不重要。 RFC 指定了 DNS 级别上发生的情况,但如果 ping 一开始不进行 DNS 查询,那就没有意义了。当 ping 收到全数字参数时,它将其解释为 IP 地址。

IPv4 地址从技术上讲是 32 位数字。它们几乎总是写成点十进制表示法,所谓的“点四边形”,例如127.0.0.1。但它们也可以写成十进制2130706433或十六进制的单个数字0x7f000001

$ ping 2130706433    # 127*2^24 + 1
PING 2130706433 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.027 ms
$ ping 0.0.25.192
connect: Invalid argument

0.0.0.0/8 范围内的地址是预订的用作广播中的源地址。您无法向他们发送数据包,这就是connect(2)returns 的原因EINVAL

许多程序,包括大多数 ping 实现,都没有强制进行 DNS 查找的选项。如果您创建一个包含全数字子域的本地网络,并且最终得到一个看起来像点线四边形的有效主机名,您也会遇到类似的麻烦。

如果您的本地网络有名称,则ping 6592.mynetwork可以使用。但您可能会遇到类似的麻烦,因为您迟早会想要省略域名。只要顺其自然,并在开头写上一封信即可。

答案2

嗯,不完全是……维基百科以及 RFC 所说的是,自从最初的RFC 952,以前不允许使用前导数字,但现在您可以拥有它们。 (每RFC 1123) 你还是不能拥有全部虽然是数字,但这是你的问题。

您的“6952”不是有效的主机名,而“6952x”应该没问题。但是,除了 RFC 之外,在过去一年左右的时间里,我在前导数字方面遇到了问题。我会避开它们,除非有令人信服的理由不这么做。

相关内容