网域名称(英语:Domain Name,简称:Domain),简称域名、网域。
域名是互联网上某一台计算机或计算机组的名称。
域名可以说是一个 IP 地址的代称,目的是为了便于记忆。例如,wikipedia.org 是一个域名。人们可以直接访问 wikipedia.org 来代替 IP 地址,然后 DNS 系统就会将域名转化成便于机器识别的 IP 地址。这样,人们只需要记忆 wikipedia.org 这一串带有特殊含义的字符,而不需要记忆没有含义的数字。
域名由多个部分组成,每个部分由 “.” 点分隔。最右边的一个部分是顶级域名,从右侧到左侧隔一个点依次下降一层。每个部分可以包含 1 到 63 个字节。域名的总长度则不能超过 253 个字节。域名里的英文字母不区分大小写。
整个互联网中的域名空间结构就像一棵倒置的树,如上图所示。
在每个域中,会有一台或多台服务器用来保存这个域名空间的所有信息,并且响应关于该域名空间的所有请求。这种服务器就叫做这个域的权威域名服务器(也常称为授权域名服务器),它拥有这个域所有的域名信息。
每个域都可以分为多个子域,而每个权威域名服务器可以给一个或多个区域进行解析。但即使各个区域被授权给同一个权威域名服务器,它们之间仍然是彼此独立的。例如,CDNbook.com 被划分为三个子域:a.CDNbook.com、b.CDNbook.com 和 c.CDNbook.com。每个子域都可以自行维护自己的权威域名服务器。当一个子域被授权出去,它原本所属的域就不再包含它的数据(A 记录),而只留下一些指针,这些指针指向相应子域的权威域名服务器(NS 记录)。如果有一个询问该子域信息的请求,所返回的应该是该子域的权威域名服务器列表。
一个域可以有多台权威域名服务器,但是只有一台是主域名服务器,这台主域名服务器负责向其他辅域名服务器分发每个域名空间的更新信息。
根 DNS 服务器、顶级 DNS 服务器和权威 DNS 服务器共同组成了 DNS 服务器层,共同维护分布式、层次化的 DNS 数据库。
DNS 系统采用树形设计的一个主要目的就是为了分散管理。而这种分散管理是通过 “授权” 来实现的。对域进行授权,就是域管理组织把子域授权给其他组织进行管理,由子域管理者来维护子域中的数据,可以自由改动数据,包括对子域再进行划分,再授权。
域名解析包括正向解析和反向解析。
本地 DNS 服务器收到客户端的域名解析请求后,会采用递归查询方式(recursive query)或者迭代查询方式(iterative query)向 DNS 系统中的其他远程 DNS 服务器发送查询请求。
在实际应用中,迭代查询方式是比较常见的。下图描述的就是一个典型的 DNS 递归查询过程。
当用户在浏览器的地址栏中输入 URL 并点击回车后,浏览器首先判断 URL 中的是 IP 地址,还是域名。如果 URL 中的是域名,那么首先要做的就是域名解析。
域名解析的流程:首先是浏览器查看浏览器的缓存。如果浏览器中没有该域名的缓存,那么浏览器询问【本地 DNS 解析器】,【本地 DNS 解析器】首先查看本地 DNS 缓存。如果本地 DNS 缓存中没有该域名的缓存,那么【本地 DNS 解析器】请求【本地 DNS 服务器】进行域名解析。如果【本地 DNS 服务器】中没有该域名的缓存,那么【本地 DNS 服务器】向 DNS 系统中的其他远程 DNS 服务器发送查询请求。
不能把数据永远放在缓存中,缓存中的数据都被设置了一个生存时间(time to live,TTL)。超过 TTL 时间的数据会被清除,需要再重新获取新的数据。
以【本地 DNS 解析器】请求【本地 DNS 服务器】进行 www.CDNbook.com 域名的解析为例:
(1)【本地 DNS 解析器】向【本地 DNS 服务器】发送域名解析请求。(8)【本地 DNS 解析器】收到来自【本地 DNS 服务器】的应答。
(2)【本地 DNS 服务器】向【根 DNS 服务器】发送域名解析请求,【根 DNS 服务器】返回 .com 顶级域的域名服务器列表(多条 NS 记录)。
(4)【本地 DNS 服务器】收到应答后,在 .com 顶级域的域名服务器列表中选择一个 IP 地址,向这个 IP 地址对应的 DNS 服务器发送域名解析请求,.com 顶级域的域名服务器返回 CDNbook.com 域的域名服务器列表。
(6)【本地 DNS 服务器】收到应答后,在 CDNbook.com 域的域名服务器列表中选择一个 IP 地址,向这个 IP 地址对应的 DNS 服务器发送域名解析请求,CDNbook.com 域的域名服务器返回 www.CDNbook.com 域的 A 记录列表(多个 IP 地址)。
(8)【本地 DNS 服务器】收到应答后,在 www.CDNbook.com 域的 A 记录列表中选择一个 IP 地址,将该 IP 地址返回给【本地 DNS 解析器】。
域名服务器是根据资源记录来对域名解析请求进行应答的。在 DNS 系统中,最常见的资源记录是 Internet 类记录。
资源记录是一个包含了下列字段的 4 元组:Name、Value、Type、TTL。
Internet 类资源记录主要分为以下几种类型:
假设有上述的 DNS zone:当要查询 bar.example.com 的 A 记录时,域名解析服务器会查到对应的 CNAME 记录,即foo.example.com,随即开始查询 foo.example.com 域名的 A 记录,查到 192.0.2.23 返回结果。
CNAME 的意思是真实名称。正确的理解是:bar.example.com 的真实名称是 foo.example.com。请求访问bar.example.com 的客户端会得到 foo.example.com 返回的结果。
域名服务器可以将域名映射为 IP 地址。基于这个特点,域名解析除了可以用于浏览器之外,域名解析还可以用于以下的场景:
《CDN 技术详解》雷葆华著
CDN技术详解-雷葆华著-微信读书 (qq.com)
DNS 原理入门 - 阮一峰的网络日志 (ruanyifeng.com)
06 | 域名里有哪些门道? (geekbang.org)