Networking DNS名称是否看起来像IP地址?

Networking DNS名称是否看起来像IP地址?,networking,dns,ip,ip-address,domain-name,Networking,Dns,Ip,Ip Address,Domain Name,我的问题源于这个过程:假设一个应用程序有一个主机或地址字段,并且希望连接到该地址的某个服务。许多应用程序会查看该地址并猜测它是ip地址还是主机名。此应用程序可以使用类似inet\u pton()的函数来执行此检查。如果该地址看起来确实像ip地址,则应用程序不会执行DNS查找并直接使用该ip地址 现在,我不是说这是一个好主意,但是如果有人定义了一个类似于1.2.3.4的dns名称会怎么样呢。这看起来像一个ip地址,因此上面的应用程序将使用该as和ip地址,而不是DNS名称 从观察结果来看,似乎大多

我的问题源于这个过程:假设一个应用程序有一个主机或地址字段,并且希望连接到该地址的某个服务。许多应用程序会查看该地址并猜测它是ip地址还是主机名。此应用程序可以使用类似inet\u pton()的函数来执行此检查。如果该地址看起来确实像ip地址,则应用程序不会执行DNS查找并直接使用该ip地址

现在,我不是说这是一个好主意,但是如果有人定义了一个类似于1.2.3.4的dns名称会怎么样呢。这看起来像一个ip地址,因此上面的应用程序将使用该as和ip地址,而不是DNS名称


从观察结果来看,似乎大多数应用程序的行为都与第一段中描述的一样。这对我来说似乎有一些好处。是否有任何文档说明不应使用看起来像IP地址的DNS名称。或者任何说明即使有人将DNS名称定义为IP地址,也可以不将其视为IP地址的文档。

要查看的相关规范是:

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


要查看的相关规范是:

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


其他人已经回答了,但我会补充和巩固

相关RFC:

  • (原件)
  • (修订)
  • (额外)
最初,主机名不能以数字开头,以消除主机名和IP地址之间的歧义。在修订版中,这已更改,主机名可以以数字开头。因此,像127.0.0.1.com这样的域名是合法的。TLD不能以数字开头(TLD代表顶级域,其中.com、.net、.org、国家代码和其他成员)。名称必须至少包含一个字符,必须以字母数字字符开头和结尾,并且可以任意长达64个字符(尽管标准支持更长的主机名,但系统不需要支持长度超过64个字符的名称)


此外,如最终RFC中所述,某些SLD和TLD是保留的,无法注册。

其他SLD和TLD已回答,但我将添加并合并

相关RFC:

  • (原件)
  • (修订)
  • (额外)
最初,主机名不能以数字开头,以消除主机名和IP地址之间的歧义。在修订版中,这已更改,主机名可以以数字开头。因此,像127.0.0.1.com这样的域名是合法的。TLD不能以数字开头(TLD代表顶级域,其中.com、.net、.org、国家代码和其他成员)。名称必须至少包含一个字符,必须以字母数字字符开头和结尾,并且可以任意长达64个字符(尽管标准支持更长的主机名,但系统不需要支持长度超过64个字符的名称)

此外,如最终RFC中所述,一些SLD和TLD是保留的,无法注册