DNS域名解析过程

2024-01-07 23:23:15

DNS域名解析的过程

什么是DNS解析

在学习DNS域名解析之前,我们先要弄懂几个前提概念。

  • DNS是一个应用层的协议,和HTTP、SMTP、FTP等这些协议同属于一个级别
  • DNS协议要依赖的传输层协议是UDP,其使用UDP的53号端口。

现在我们明白了DNS协议是在哪一层,有哪些层间依赖,下面我们来粗略了解一下IP地址概念。

IP地址是互联网上每一台计算机唯一的逻辑地址,通过IP地址我们可以实现不同计算机之间的互相通信,每台联网计算机都需要通过IP地址来互相联系和分别。

但是由于IP地址是由一串容易混淆的数字串构成(例如192.168.45.128),人们很难记忆所有计算机的IP地址,这样对于我们日常工作生活访问不同网站是很困难的。

基于这种背景,人们在IP地址的基础上又发展出了一种更容易识别的符号化标识,这种标识由人们自行选择的字母和数字构成,相比IP地址更容易被识别和记忆,逐渐代替IP地址成为互联网用户进行访问互联的主要入口。这种符号化标识就是域名。(例如www.baidu.com)

域名虽然更容易被用户所接受和使用,但是计算机只能识别纯数字构成的IP地址,不能直接读取域名。因此想要达到访问效果,就需要将域名翻译成IP地址。

DNS协议承担了这个翻译责任,这个翻译过程,叫做DNS域名解析

解析过程

当我们在浏览器中输入www.bilibili.com时,DNS解析将会有10个步骤,具体的步骤过程如下

  • 浏览器缓存

首先,浏览器会检查自己的缓存中是否有目标域名对应的IP地址,如果有,解析过程结束,直接使用缓存中的IP地址访问目标网站。

浏览器缓存域名是有限制的,不仅浏览器缓存的大小有限制,而且缓存的时间也有限制,通常情况下为几分钟到几小时不等,域名被缓存的时间限制可以通过TTL属性来设置。这个缓存时间太长或太短都不好,如果时间太长,一旦域名被解析到的IP有变化,会导致被客户端缓存的域名无法解析到变化后的IP地址,以致该域名不能正常解析,这段时间有内有一部分用户无法访问网站;如果设置时间太短,会导致用户每次访问网站都要重新解析一次域名。

  • 操作系统缓存

如果浏览器中没有缓存,浏览器会查找操作系统缓存中是否有这个域名对应的DNS解析结果。

  • 本地DNS服务器查询

前两个过程无法解析的时候,就要用到我们网络配置中的”DNS服务器地址“了。

操作系统会把这个域名发送给这个本地DNS服务器。

大约百分之八十的域名解析到此就结束了,后续的DNS迭代和递归也是由本地DNS服务器负责。

  • 迭代查询
    • 如果本地DNS服务器仍然没有命中,就直接到根DNS服务器请求解析。
    • 根DNS服务器返回给本地DNS域名服务器一个顶级DNS服务器地址,它是国际顶级域名服务器,如.com、.cn、.org等。
    • 本地DNS服务器再向上一步获得的顶级DNS服务器发送解析请求。
    • 接受请求的顶级DNS服务器查找并返回此域名对应的Name Server域名服务器的地址,这个Name Server服务器就是我要访问的网站域名提供商3的服务器,其实该域名解析任务就是由域名提供商的服务器来完成。比如我现在要访问www.bilibili.com,这个域名是从A公司注册获取的,那么A公司上的服务器就保存有这个域名的信息,可以获取到IP地址。
    • Name Server服务器会查询存储的域名和IP的映射关系表,再把查询出来的域名和IP地址等信息,连同一个TTL值返回给本地DNS服务器。
    • 返回该域名对应的IP和TTL值,本地DNS服务器会缓存这个域名和IP的对应关系,缓存时间由TTL控制。
  • 返回结果

本地DNS服务器把解析的结果返回给本地电脑,本地电脑根据TTL值缓存在本地系统缓存中。

域名解析过程结束在实际的DNS解析过程中,可能不止这么多,如Name Server可能有很多级,或者有一个GTM来负载均衡控制,这都有可能影响域名解析过程。

递归查询和迭代查询

从请求主机到本地DNS服务器的查询是递归的,其余的查询是迭代的。

文章来源:https://blog.csdn.net/zyb_020826/article/details/135444292
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。