DNS 作用 :作 域名 与 IP 的映射关系,用户只需要记住域名,而不需要记住不便于记忆的 IP 地址;DNS 服务器就是记录这个映射关系。
DNS 协议运行在 UDP 协议之上,使用的是 53 端口;DNS 是应用层协议。
DNS 资源记录(RR) 记录一条 域名信息映射关系。
TTL,就是生存周期,是递归服务器会在缓存中保存该资源记录的时长。
网络/协议类型,它的代表的标识是IN,IN就是internet,目前DNS系统主要支持的协议是IN。
type,就是资源记录类型,一般的网站都是A记录(IPv4的主机地址)。
rdata是资源记录数据,就是域名关联的信息数据。
DNS 解析过程
解析的顺序,逐级向上查找:
如果浏览器有缓存,则使用浏览器的缓存( chrome 为 1 分钟缓存,最大存储 1000 条)
如果操作系统有缓存,则使用操作系统的缓存(会参考 TTL 值,但不完全是 TTL 值)
-
如果本机的 hosts 文件有该域名的设置,则使用 HOST 文件(是否为本机 127.0.0.1 也是在 HOST 文件中,每次修改 hosts 文件会清空操作系统缓存)
chrome 中的缓存不清,等自行清除;如果在 chrome dns 缓存期间继续访问该域名,则缓存时间会重记,即延长当前缓存
如果路由器有缓存,则使用路由器的缓存
向本地 DNS 域名服务器发起 DNS 查询请求(一般由互联网服务提供商即 ISP 提供,在电脑接入网络时就分配)
向根服务器发起请求,进行递归查询
实际上每层 DNS 域名服务器都有缓存。
DNS 服务器递归请求
如访问 www.baidu.com 域名,会进行如下查询:
首先本地 DNS 域名服务器向 根域名服务器 发起请求,获取 顶级域名服务器 ( .com ) 的 NS 记录和 A 记录( IP 地址 )
本地域名服务器拿到这个 顶级域名服务器(.com) 的地址后,就向其发起请求,获取 权威域名服务器(.baidu.com,在这里也叫二级域名服务器) 的 NS 记录和 A 记录( IP 地址 )
本地域名服务器根据 权威域名服务器(.baidu.com) 的地址向其发起请求,最终得到该域名对应的 IP 地址
实际上可能还有 三级、四级 DNS域名服务器,具体看域名服务商的划分。
定义上的分级与口头上的分级:
1)定义:com 为顶级域名,baidu 为二级域名(www.baidu.com 解析等同于 baidu.com,因此没有继续找三级域名服务器)
2)口头:baidu.com 为一级域名,www.baidu.com 为二级域名,平时习惯按照这个来叫