什么是DNS?
DNS 是 Domain Name System(域名系统)的缩写,是互联网中用于将域名(例如 example.com)转换为 IP 地址(例如 192.0.2.1)的系统。
DNS被用在哪?
- 当你在浏览器中输入一个域名时,浏览器会向 DNS 服务器发送查询请求,获取该域名对应的 IP 地址,然后才能与服务器进行通信。
- DNS 不仅仅用于将域名转换为 IP 地址,还可以执行其他功能,如反向解析(通过 IP 地址查找对应的域名)和邮件交换记录(管理电子邮件服务器的信息)等。
DNS的工作原理?
**
- 用户在浏览器上输入域名,DNS解析器(递归解析器)接收到这个查询,将使用缓存的数据进行响应(当一个客户端请求的域名 IP 地址是另一个客户端最近请求的 IP 地址时,解析器可绕过与域名服务器进行通信的过程,并仅从第二个客户端的缓存中为第一个客户端提供所请求的记录),或者执行2
- 递归解析器将向13 个根域名服务器发送请求,根服务器接受包含域名的递归解析器的查询,然后执行3
- 根域名服务器根据该域的扩展名(.com、.net、.org 等),将递归解析器定向到 TLD 域名服务器进行响应,然后执行4
- 递归解析器将向 .com TLD 域名服务器发送查询
- TLD 域名服务器将通过针对该域的权威性域名服务器进行响应,该响应会将解析器定向到权威性域名服务器,执行6
- 权威性域名服务器包含特定于其所服务的域名的信息,并且它可为递归解析器提供在 DNS A 记录中找到的服务器的 IP 地址,或者如果该域具有 CNAME 记录(别名),它将为递归解析器提供一个别名域,这时递归解析器将必须执行全新 DNS 查找,以便从权威性域名服务器获取记录。
- DNS解析器将 IP 地址存储在本地缓存中
- 客户端接收到 IP 地址后,可以使用该 IP 地址与目标服务器建立连接,以进行后续的通信。并且会将结果存储在本地缓存中,以便将来的查询能够直接使用。这样,当客户端再次访问相同的域名时,它可以直接使用本地缓存中的 IP 地址,而不需要再次向 DNS 服务器发起查询。
DNS缓存机制
- 递归缓存:递归缓存是由 DNS 服务器使用的缓存机制。当 DNS 服务器收到一个查询请求时,它首先检查自己的缓存,看是否已经解析过该域名。如果有缓存记录,服务器直接返回缓存中的 IP 地址,减少了向其他 DNS 服务器发起查询的次数。如果没有缓存记录,服务器会从根域名服务器开始逐级向下进行递归查询,并把查询结果存储在缓存中,以供后续的查询使用。
- 迭代缓存:迭代缓存是由客户端(例如浏览器或操作系统)使用的缓存机制。当客户端收到一个 DNS 查询结果时,它会将结果存储在本地缓存中,以便将来的查询能够直接使用。这样,当客户端再次访问相同的域名时,它可以直接使用本地缓存中的 IP 地址,而不需要再次向 DNS 服务器发起查询。