2012-07-31 37 views
1

我的问题源于这个过程:假设一个应用程序有一个主机或地址字段,并希望连接到该地址的某个服务。许多应用程序将查看该地址并猜测它是否是IP地址或主机名。此应用程序可能会使用像inet_pton()这样的函数来执行此检查。如果地址看起来像一个IP地址,则应用程序不会执行DNS查找并直接使用该IP地址。DNS名称可能看起来像IP地址吗?

现在,我不是说这是一个好主意,但如果某人定义了一个类似于1.2.3.4的dns名称会怎样。这看起来像一个IP地址,所以上面的应用程序将使用该IP地址,而不是作为DNS名称。

从观察,似乎大多数应用程序的行为如第一段所述。对我来说这似乎有好处。是否有任何文档指出不应使用看起来像IP地址的DNS名称。或者任何说明,即使某人将DNS名称定义为IP地址的文档,也可以不尊重它。

回答

6

其他人已经回答了,但我会添加和合并。

相关RFC:

本来,一个主机名不能以数字开头,消除歧义主机名和IP地址之间。在修订版中,这一点已更改,主机名可以以数字开头。因此,域名如127.0.0.1.com是合法的。 TLD不能以数字开头(TLD代表顶级域名,其中.com,.net,.org,国家代码和其他成员均为成员)。名称必须至少包含一个字符,必须以字母数字字符开头和结尾,最多可以有64个字符长(尽管标准支持更长的主机名,系统不需要支持超过64个字符的名称)。

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

3

有关规范来看看是Section 2.1 of RFC 1123

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