DNS 详解
1. 什么是 DNS?
DNS 是计算机域名系统(Domain Name System)的缩写。它是一种用于将域名转换为与之相对应的 IP 地址的服务。域名是一串用点分隔的名字组构成的互联网计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位。
2. 域名与 FQDN
-
域名 (Domain Name): 是由一串用点分隔的名字组构成的Internet上某一台计算机或计算机组的名称。 -
FQDN (Fully Qualified Domain Name): 即完全合格域名,由两个部分组成:主机名和域名。例如, www.example.com
。
3. 正向解析与反向解析
-
正向解析: 从 FQDN 转换为 IP 地址的过程。例如, www.example.com
被解析为192.168.1.1
。 -
反向解析: 从 IP 地址转换为 FQDN 的过程。例如, 192.168.1.1
被解析为www.example.com
。
4. 域名层次结构
域名空间是分层次管理的,包含以下几级:
根域 (Root Domain)
根域是域名层次结构的最高级别,通常表示为一个点 (.
)。根域由根域名服务器管理,它们是负责指向顶级域名服务器的关键部分。
顶级域 (Top-Level Domain, TLD)
顶级域是根域下的一层,分为以下几类:
-
通用顶级域名 (gTLD): 如 .com
、.net
、.org
。 -
国家代码顶级域名 (ccTLD): 如 .cn
(中国)、.uk
(英国)、.jp
(日本)。 -
基础设施顶级域名 (infrastructure TLD): 如 .arpa
,主要用于技术基础设施。
二级域 (Second-Level Domain)
二级域名是顶级域名下的一层,通常由域名注册机构分配给终端用户。例如:
-
在 example.com
中,example
就是二级域名。 -
在 bbc.co.uk
中,bbc
就是二级域名,而.co
是用于标识公司的二级顶级域。
子域 (Subdomain)
子域是二级域名之下的层次,用于更精细的组织和管理。例如:
-
在 news.example.com
中,news
是example.com
的子域。 -
在 blog.bbc.co.uk
中,blog
是bbc.co.uk
的子域。
主机名 (Hostname)
主机名是指特定主机的名称,通常是整个 FQDN 的最左边部分。例如:
-
在 ftp.example.com
中,ftp
是主机名。 -
在 mail.google.com
中,mail
是主机名。
举例
以 www.shop.example.com
为例:
-
根域: .
(隐含在域名最后) -
顶级域: .com
-
二级域: example
-
子域: shop
-
主机名: www
另一个例子是 ftp.research.university.edu
:
-
根域: .
(隐含在域名最后) -
顶级域: .edu
-
二级域: university
-
子域: research
-
主机名: ftp
5. DNS 查询类型
递归查询 (Recursive Query)
在递归查询中,DNS 服务器将完全负责返回查询结果。客户端(通常是用户的计算机或浏览器)向本地 DNS 服务器发出查询请求,如果本地 DNS 服务器没有缓存记录,它会依次查询其他 DNS 服务器,直到找到最终的 IP 地址,并将结果返回给客户端。
举例:递归查询
-
用户在浏览器中输入 www.example.com
。 -
客户端向本地 DNS 服务器(例如 ISP 提供的 DNS 服务器)发出查询请求。 -
本地 DNS 服务器查找缓存,如果没有找到,向根域名服务器发出请求。 -
根域名服务器返回一个指向 .com
顶级域名服务器的地址。 -
本地 DNS 服务器向 .com
顶级域名服务器发出请求。 -
.com
顶级域名服务器返回一个指向example.com
名称服务器的地址。 -
本地 DNS 服务器向 example.com
的 DNS 服务器发出请求。 -
example.com
的 DNS 服务器返回www.example.com
对应的 IP 地址(例如93.184.216.34
)。 -
本地 DNS 服务器将 IP 地址缓存,并返回给客户端。 -
客户端通过获得的 IP 地址访问 www.example.com
网站。
迭代查询 (Iterative Query)
在迭代查询中,DNS 服务器不会直接返回最终结果,而是告诉客户端去查询下一个 DNS 服务器。客户端必须依次向多个 DNS 服务器发出查询请求,直到找到最终的 IP 地址。
举例:迭代查询
-
用户在浏览器中输入 www.example.com
。 -
客户端向本地 DNS 服务器发出查询请求。 -
本地 DNS 服务器返回根域名服务器的地址。 -
客户端向根域名服务器发出查询请求。 -
根域名服务器返回一个指向 .com
顶级域名服务器的地址。 -
客户端向 .com
顶级域名服务器发出查询请求。 -
.com
顶级域名服务器返回一个指向example.com
名称服务器的地址。 -
客户端向 example.com
的 DNS 服务器发出查询请求。 -
example.com
的 DNS 服务器返回www.example.com
对应的 IP 地址(例如93.184.216.34
)。 -
客户端通过获得的 IP 地址访问 www.example.com
网站。
6. DNS 资源记录类型
DNS 资源记录是 DNS 数据库中的条目,用于将域名映射到 IP 地址或其他信息。常见的资源记录类型包括:
A 记录 (Address Record)
-
功能: 将域名映射到 IPv4 地址。 -
举例: www.example.com
的 A 记录是93.184.216.34
。
AAAA 记录 (IPv6 Address Record)
-
功能: 将域名映射到 IPv6 地址。 -
举例: www.example.com
的 AAAA 记录是2606:2800:220:1:248:1893:25c8:1946
。
NS 记录 (Name Server Record)
-
功能: 指定域名的 DNS 服务器。 -
举例: example.com
的 NS 记录是ns1.example.com
和ns2.example.com
。
SOA 记录 (Start of Authority Record)
-
功能: 指定 DNS 区域的权威信息,包括区域管理员的电子邮件地址、序列号、刷新间隔等。 -
举例: example.com
的 SOA 记录可能包含ns1.example.com
作为主要 DNS 服务器,hostmaster.example.com
作为管理员的电子邮件地址。
MX 记录 (Mail Exchange Record)
-
功能: 指定用于接收电子邮件的邮件服务器。 -
举例: example.com
的 MX 记录是mail.example.com
,优先级为 10。
CNAME 记录 (Canonical Name Record)
-
功能: 将一个域名别名映射到另一个正式的域名。 -
举例: www.example.com
的 CNAME 记录是example.com
,表示www
是example.com
的别名。
PTR 记录 (Pointer Record)
-
功能: 用于反向 DNS 查找,将 IP 地址映射到域名。 -
举例: IP 地址 93.184.216.34
的 PTR 记录是www.example.com
。
7. DNS 服务器类型与功能
-
主 DNS 服务器 (master): 为客户端提供域名解析的主要区域,默认开启端口53。主 DNS 服务器宕机,会启用从 DNS 服务器提供服务。 -
从 DNS 服务器 (slave): 保持与主 DNS 服务器的数据一致,主要是提供容错能力,加快查询速度和分担主域名服务器的负担。 -
缓存服务器 (caching only): 提供域名解析的缓存,本身不提供解析区域。 -
转发服务器 (forward): 当 DNS 服务器的解析区域(包括缓存)中无法为当前的请求提供权威应答时,将请求转发至其它的 DNS 服务器。
举例
-
正向解析示例:
-
用户在浏览器中输入 www.example.com
。 -
本地 DNS 服务器收到请求后,先查询缓存中是否有对应的记录。 -
如果缓存中没有,递归查询其他 DNS 服务器,最终获得 www.example.com
对应的 IP 地址93.184.216.34
。 -
将该 IP 地址返回给用户,并由用户的计算机通过该 IP 地址访问网站。
-
-
反向解析示例:
-
用户希望知道 93.184.216.34
对应的域名。 -
DNS 服务器接收请求后,首先查找反向解析区(PTR 记录)。 -
如果找到,则返回 www.example.com
,否则,递归查询其他 DNS 服务器直至找到。
-
原创文章,作者:速盾高防cdn,如若转载,请注明出处:https://www.sudun.com/ask/93500.html