一、前言
在平时工作中相信大家都离不开 DNS 解析,因为 DNS 解析是互联网访问的第一步,无论是使用笔记本浏览器访问网络还是打开手机APP的时候,访问网络资源的第一步必然要经过DNS解析流程。
二、DNS 是什么
DNS(域名系统 Domain Name System),它是一个记录域名和Ip地址相互映射的一个系统,是互联网的“电话簿”,负责将人类可读的域名(如 example.com
)转换为机器可识别的 IP 地址(如 127.0.0.1
)。
其核心功能就是域名解析,能够将用户访问互联网时使用的域名地址转换成对应的IP地址。正向解析:将域名转换为 IP 地址; 反向解析:将 IP 地址转换为域名。 通过域名得到域名对应的IP地址的过程被称为域名解析。DNS运行在 UDP 协议之上,使用的端口为53。
三、DNS 分层结构
DNS 是一个树状分层系统,分为以下层级:
- 根域名服务器(
.
):全球 13 组,管理顶级域(如.com
)。 - 顶级域服务器(TLD,如
.com
、.org
):管理二级域名(如google.com
)。 - 权威域名服务器:由域名注册商或用户自行管理,存储具体域名的记录(如
A
、MX
)。
详细结构:
主机名.次级域名.域名.根域名
host.sld.tld.root
主机名 | 次级域名 | 顶级域名 | 根域名 |
---|---|---|---|
host. | sld. | tld. | root |
如上图所示,域名结构是树状结构,树的最顶端代表根服务器,根的下一层就是由我们所熟知的.com、.net、.cn等通用域和.cn、.uk等国家域组成,称为顶级域。网上注册的域名基本都是二级域名,比如 google.com
、baidu.com等等二级域名,它们基本上是归企业和运维人员管理。接下来是三级或者四级域名,这里不多赘述。总体概括来说域名是由整体到局部的机制结构。
四、常见 DNS 记录类型
记录类型 | 用途 | 示例 |
---|---|---|
A | 域名 → IPv4 地址 | example.com → 1.1.1.1 |
AAAA | 域名 → IPv6 地址 | example.com → 2001:db8::1 |
CNAME | 域名别名(指向另一个域名) | www.example.com → test.example.com |
MX | 邮件服务器地址 | example.com → mail.example.com |
TXT | 文本信息(如 SPF、DKIM 配置) | "v=spf1 include:_spf.google.com ~all" |
NS | 指定域名的权威 DNS 服务器 | example.com → ns1.example-dns.com |
PTR | IP → 域名(反向解析) | 1.1.1.1 → example.com |
SOA | 域名的权威起始记录(管理信息) | 包含主 DNS 服务器、管理员邮箱等 |
五、DNS 解析流程
如上图所示,详细阐述 DNS 解析流程:
1、首先客户端位置是一台电脑或手机,在打开浏览器以后,输入 http://www.zdns.cn\
,它首先是由浏览器发起一个 DNS 解析请求,如果本地缓存服务器中找不到结果,则首先会向根服务器查询,根服务器里面记录的都是各个顶级域所在的服务器的位置,当向根请求 http://www.zdns.cn 的时候,根服务器就会返回 .cn 服务器的位置信息。
2、递归服务器拿到 .cn 的权威服务器地址以后,就会寻问 cn 的权威服务器,知不知道http://www.zdns.cn 的位置。这个时候cn权威服务器查找并返 http:... 服务器的地址。
3、继续向 http://zdns.cn的权威服务器去查询这个地址,由http://zdns.cn 的服务器给出了地址:202.173.11.10
4、最终才能进行http的链接,顺利访问网站。
5、补充说明,一旦递归服务器拿到解析记录以后,就会在本地进行缓存,如果下次客户端再请求本地的递归域名服务器相同域名的时候,就不会再这样一层一层查了,因为本地服务器里面已经有缓存了,这个时候就直接把 http://www.zdns.cn 的A记录返回给客户端就可以了。
六、DNS 服务类型
常见的 DNS 服务器就是两种:权威解析服务器和递归解析服务器,递归解析服务器也可以叫做localDNS。
权威解析服务器
DNS 权威服务器保存着域名空间中部分区域的数据。如果 DNS 服务器负责管辖一个或多个区域时,称此 DNS 服务器为这些区域的权威服务器。
根权威 DNS 或者二级权威服务器中的资源记录标记被指定为区域权威服务器的 DNS 服务器。通过资源记录中列出服务器,其他服务器就认为它是该区域的权威服务器。这意味着在 NS 资源记录中指定的任何服务器都被其他服务器当作权威的来源,并且能肯定应答区域内所含名称的查询。
递归服务器
递归服务器在正常情况下,初始的时候里面没有任何域名解析数据,里面所有的域名解析数据都来自于它到权威解析服务器的查询结果,一旦查询完毕,递归服务器就会根据TTL时间在本地形成一条缓存记录,并为用户提供DNS解析的查询服务,这是递归服务器的功能。
七、DNS 查询方式
DNS 的查询方式有两种,分为递归查询(recursion)和迭代查询(iteration)。
递归查询
客户端发起一个DNS解析请求,若本地DNS服务器若不能为客户端直接解析域名,则域名服务器会代替客户端(下级服务器)向域名系统中的各分支的上下级服务器进行递归查询,直到有服务器响应回答了该请求后,将该请求结果返回客户端。在此期间,客户端将一直处于等待状态。
迭代查询
客户端(下级服务器)发起一个DNS解析请求后,若上级DNS服务器并不能直接提供该DNS的解析结果,则该上级DNS服务器会告知客户端(下级服务器)另一个可能查询到该DNS解析结果的DNS服务器IP,客户端(下级服务器)再次向这个DNS服务器发起解析请求,如此类推,直到查询到对应的结果为止。
通常递归查询这种方式用于PC机与本地DNS服务器之间的查询,而迭代查询则多用于DNS服务器之间的查询,如下图:
总结
DNS 域名解析是互联网基础服务的重要组成部分,通过易记的名称简化了网络资源的访问。了解DNS 解析的过程和原理对于网络工程师和开发者来说非常重要,它有助于诊断网络问题和优化网络性能。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。