DNS

158 阅读4分钟

什么是DNS

DNS(Domain Name System)域名系统,是一个层次化、分散化的互联网连接资源命名系统。DNS 维护着一个域名列表以及与之相关联的资源(例如 IP 地址)

--- MDN

域名系统(英语:Domain Name System,缩写:DNS)是互联网的一项服务。它作为将域名IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网

--- 维基百科

计算机之间的通信是通过IP地址(xx.xx.xx.xx)进行的,但是我们平时访问一个网页的时候,在浏览器地址栏输入的是这种格式的(www.baidu.com/),没有直接通过ip去访问,因为ip实在是不方便记忆,于是便用域名去代替,所以就需要DNS将域名转为ip

DNS域名解析

域名解析流程

DNS域名解析过程 (2).jpg 上面就是一个DNS域名解析的一个大致流程,接下来我们一步步的分析一下,假如我们要请求 www.baidu.com/,他的域名就是www.baidu.com.

  1. 用户在浏览器地址栏输入地址后,会先查看浏览器本地存储中是否有这个域名的解析记录,如果有的话,直接返回缓存的ip给浏览器,本次域名的解析结束
  2. 如果浏览器存储中没有,则会去查询操作系统的缓存,如果有域名对应的ip,则直接返回给浏览器,本次域名的解析结束
  3. 如果操作系统的缓存中没有,则会去查询本地的host文件,如果有域名对应的ip,则直接返回给浏览器,本次域名的解析结束
  4. 如果host文件里没有,则会向本地DNS服务器发起请求,本地DNS服务器会先查看自己的缓存中是否存在该域名和ip的映射关系,如果有的话,返回给浏览器,本次域名的解析结束
  5. 本地DNS域名服务器缓存里没有,则会向根域名服务器发送查询请求,根域名接收到www.baidu.com.,会返回给本地DNS服务器.com服务器的ip地址,让本地DNS服务器去.com那查询
  6. 本地DNS服务器向.com发送查询请求,.com将baidu.com的ip返回给本地DNS服务器
  7. 本地DNS服务器向baidu.com服务器发送查询请求,.baidu.com发现www是自己管理的,于是返回了www服务器的ip地址给本地DNS服务器
  8. 本地DNS服务器收到ip后返回给浏览器,并更新自身的缓存,操作系统缓存和浏览器缓存也会相应更新
  9. 浏览器拿到ip,与之建立连接,发起网络请求

以上就是一次域名解析的完整流程,在整个查询流程中,存在两种查询方式

  • 递归查询:浏览器和本地DNS服务器之间的查询
  • 迭代查询:本地DNS服务器和其他DNS服务器之间的查询

关于缓存时间

浏览器的DNS缓存时间

指DNS记录在浏览器中保留的有效时间,也称为TTL(Time-to-Live)。

TTL是由DNS服务器在返回DNS响应时设置的一个时间值,用于指示该DNS记录的有效期限。浏览器会根据TTL值来确定何时需要更新DNS缓存。

通常情况下,不同的DNS记录类型具有不同的默认TTL值,例如:

  1. IPv4地址记录(A记录):通常具有较短的TTL,例如5分钟到1小时。
  2. IPv6地址记录(AAAA记录):通常具有较短的TTL,例如5分钟到1小时。
  3. 别名记录(CNAME记录):通常具有较长的TTL,例如1小时到24小时。

操作系统的缓存时间

具体的DNS缓存时间可能因操作系统版本、配置和网络环境而有所不同

本地host文件的缓存时间

在大多数操作系统中,Hosts文件的缓存时间是永久性的,即一旦在Hosts文件中添加了域名和对应的IP地址映射,该映射将一直有效,直到手动修改或删除它

如何清除缓存

  • 清除浏览器缓存:在浏览器中清除缓存,这将包括DNS缓存。
  • 清除操作系统缓存:根据操作系统,使用相应的命令或工具来清除DNS缓存。
  • 手动修改host文件