据我所知,完全限定域名(FQDN)由两部分组成:
主机名部分:代表属于一个特定域的机器的单个标签。
域名部分:多个用点连接起来的标签,代表域,基本上是一组机器。
通常,只有使用 FQDN,我们才能从外部访问特定网络上的特定机器。仅使用主机名部分或域名部分都无法做到这一点。
例如,www.google.com
FQDN 指定主机名部分为www
,域名部分为google.com
。通过这个 FQDN,我们可以访问域中的一台机器google.com
。
一切看起来都很好,直到我遇到了一个可以用作域名的 FQDN在其他人手动设置的实验环境中。以下是我经历过的程序:
我打开 Wireshark 并开始捕获数据包。
我
cool.com
使用浏览器访问了。网页成功加载,Wireshark 也抓到了一些东西,显示本地 DNS 服务器向上级域名服务器询问服务器的 IP 地址时
cool.com
,被引导到该cool.com
域名的权威域名服务器,也就是ns.cool.com
,而这个权威域名服务器则回复了服务器的 IP 地址cool.com
。权威域名服务器体现在
cool.com
某个上级域名服务器返回的带有key的NS类型资源记录中,而该cool.com
服务器的IP地址体现在cool.com
权威域名服务器返回的带有key的A类型资源记录中,即ns.cool.com
。通过检查稍后发送到 的 HTTP 请求的标头
cool.com
,我确定我的浏览器没有玩弄诸如自动扩展cool.com
到 之类的花招www.cool.com
。所以我实际上是在访问cool.com
。
我的问题是,为什么cool.com
在这种情况下域名本身可以是 FQDN?我还没有定义主机名部分。FQDN 和其域名部分之间的界限似乎很模糊……
我最终访问哪台机器是由网络管理员决定的吗?如果有人能给我解释的话,非常感谢!
答案1
FQDN 并非仅由两部分组成。它由多个(甚至单个)标签组成,但应包含 TLD。在您的情况下www.cool.com
,cool.com
和com
都是域名(三级域名、二级域名和顶级域名,又称 TLD)和 FQDN。
域名最左边的部分(www
)是叶域、主机名、本地部分、主机部分。
同时,主机名并不被定义为单一的标签,主机名可以是任意的域名。
主机名可以指定为相对于某个域的单个标签(例如host
)。它可以指定为多个标签,并且仍然相对于某个域(例如host.internal-sub-domain
)。它可以指定为所有标签,直到 TLD,在这种情况下,它被称为 FQDN(完全限定域名),例如host.internal-sub-domain.second-level-domain.tld
。
只要域名/主机名具有 A 记录并响应 HTTP/HTTPS,您就可以使用浏览器访问它。甚至有些 TLD 已分配 A 记录(例如 http://ai/)