我尝试在互联网上搜索 FQDN 的定义。维基百科说,一个 FQDN
指定其在域名系统(DNS)树状层次结构中的确切位置我将其解释为,它是可明确解析的(在DNS中)。
WP 上的示例(虽然我不想用这个作为参考)说明了使用hostname.example.com.
我发现的 RFC(RFC 1035是我发现的唯一一个非协议特定的)没有提供关于 FQDN 符合什么条件的信息。
我认为只有像 hostname.example.com 这样的标识符才是有效的 FQDN(包括所有主机名、域和 TLD),但这似乎是错误的。FQDN
是否需要始终在域旁边包含主机名,即使域仅由一个主机组成?或者 FQDN 的唯一定义应该是可通过 DNS 解析?例如,域 .tk 是明确可解析的,这是 FQDN 吗?
答案1
如果您无需添加任何其他标识符即可明确解析主机,我会认为该名称是完全合格的。如果不是这样,那么该名称将被视为相对的。
RFC1535讨论一个重要观点:
绝对“根” FQDN 的格式为 {name}{.} 非“根”域名的格式为 {name}
在上面的例子中,您将解析.tk
为tk.
以确保其无歧义。有趣的是,这实际上确实有一个有效的 A 记录。
$ dig tk.
; <<>> DiG 9.8.3-P1 <<>> tk.
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 812
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;tk. IN A
;; ANSWER SECTION:
tk. 20 IN A 217.119.57.22
编辑:RFC1535 还有另一句有趣的话:
此外,在任何情况下,只要指定的名称中存在“。”,就应该假定它是完全限定域名 (FQDN),并且应该首先尝试将其作为根名称。
答案2
在ACM 队列,我定义FQDN如下:
DNS 命名空间具有树形结构,其中每个节点都有一个父节点,但根节点除外,根节点是其自己的父节点。节点的标签长度为 1 到 63 个字符,但根节点的标签为空。域是上下文中的节点,完全限定域名的表示形式只是节点名称,从下往上,每个节点名称后跟一个句点 (.)。例如,www.google.com 是节点的完全限定名称,该节点的名称为 www,其父节点为 google,其祖父节点为 com,其曾祖父节点为 DNS 根节点。
任何时候使用“主机名”或“主机部分”或“域部分”等术语,您都会陷入困境,并且会发现没有一个 FQDN 定义完全符合您的目的。通过考虑其反义词:非完全限定域名,可以明确 FQDN 的含义(而不是定义)。完全限定意味着您指定了所有域标签,直到顶层,在这种情况下,您可以附加一个最后的点 (.) 来表示您已经这样做了。不完全限定意味着您正在查看的名称仅在搜索列表或默认域的上下文中才有意义。
RFC 1535 很有趣,因为到目前为止,我们中的许多人都使用多标签本地名称,并且仍然期望搜索列表行为——这破坏了太多其他东西,因此被禁止。但当我[电子邮件保护]1988-1993 年,可以从[电子邮件保护]发送至 matt@decvax 并将其扩展至[电子邮件保护]和[电子邮件保护]一切都成功了。结果我们不得不放弃。现在,如果你的表示层名称中有一个点(即你输入的或程序显示的),世界上所有的软件都会认为它是一个 FQDN。
我的Sendmail 手册(在我们都离开 DEC.COM 之后与 Fred Avolio 合著)也有一章关于这个主题,由于它是与 RFC 1535 同时编写的,因此读起来很有趣。
答案3
我的看法:
从最严格的意义上讲,FQDN 就是您在示例中所写的内容。
即 hostname.example.com。
包括末尾的点。
我认为它不必通过 DNS 进行解析,它只是一个语法定义。