轻松搞懂域名解析

时间:2022-01-15 来源:未知网络 作者:996建站网

❝ 大家好,我是「辉夜真是太可爱啦」 。故事的开始,要从一道经典的面试题开始说起, 「从输入 URL 到页面加载完成,发生了什么?」 相信大家应该对这个题目也很耳熟了。本系列是我 「《一文搞懂JS系列》」 之后的第二个系列。旨在让大家搞懂这个加载过程,从「简答以及深入解答都能够对答如流」

前言

首先,有一点,「互联网计算机都是通过 IP 地址进行标识和通信的」

所以,当我们在通过域名,比方说是通过 https://www.baidu.com/访问百度网站的时候,其实,都是内部经过了域名解析,找到百度的 IP 地址,再从对方的服务器中获取加载页面所需要的资源文件( HTML + CSS + JS 或者是图片视频文件等…)

所以,并不是大家所想的那样,是直接可以通过域名进行通信的。

而记 IP 地址,往往对人不是那么友好,为了方便记忆,采用域名来代替IP地址标识站点地址。

而域名解析,总共可以分为两个过程,「先是请求缓存,缓存找不到,再去寻找 DNS 服务器」,我们就主要按这两种类型来接下去往下面分析。

缓存解析浏览器缓存

当用户在浏览器中输入 URL 地址,敲下回车的时候,那么,我们的域名解析工作就开始了。

首先呢,浏览器会检查缓存中是否有这个域名对应的 IP 地址,如果有,那么解析到这就已经结束了。

当然,也并不是每次都能那么幸运,缓存中刚好就有。

因为浏览器的缓存域名也是有限制的。「不仅浏览器缓存的大小受限制,同样地,它的时间也会有相应限制」。通常情况下为几分钟到几小时不等。

而这个缓存时间,太长或者太短都不好,因为太短的话下一次又要重新解析,有点浪费资源。但是太 长的话,如果这个域名绑定的 IP 地址已经有所更换,那么,一直通过缓存定向到旧的服务器地址,页面一直是老的。亦或者是对方直接索性更换服务器了呢,那不是直接连页面都打不开了。(人家都搬家了,你还一直找别人的老住址,这不是人都傻了!)

操作系统缓存

当然,如果上面的浏览器缓存没找到,我们的操作系统也有相应的缓存,计算机的设计还挺靠谱。

Windows 中可以通过 C:\Windows\System32\drivers\etc\hosts 文件来设置,你可以将任何域名解析到任何能够访问的 IP 地址。你也可以「自己指定域名对应的 IP 地址」。但就是那么一个小小的功能,让黑客有了可乘之机。

通过程序修改系统的域名解析系统,将你想访问的域名,解析到他指定的 IP 地址上,这种时候,就发生了所谓的「域名劫持」

所以,在后来的更新中,将 hosts 改为了只读文件,无法修改,才避免了上述的问题。

路由器缓存缓存

如果操作系统也没有缓存,就会查找路由器中是否有该 IP 地址解析的结果。

需要注意的是,(「缓存只是将解析的结果保存下来,两者并没有实际能完成域名解析的能力」

DNS概念

DNS(Domain Name System),域名解析系统,是互联网基础资源的核心服务,主要用于承载 IP 地址和互联网域名之间的转换。它的主要作用就是相当于互联网 IP 地址的电话簿。

LDNS

当然,如果上述缓存中,都没有相应的域名解析结果,就会真正的请求域名服务器来请求结果了,首先请求的就是 LDNS ,即本地 DNS。这些服务器一般架设在离用户不远的地方,而且性能都很好,所以一般都会缓存域名解析结果,大约80%的域名解析都会在这一步完成。所以 LDNS 承担了主要的域名解析工作。

当缓存服务器中也没有的时候,就会把信息传递给根域名服务器。

DNS服务器

DNS 服务器中,主要分为三种

轻松搞懂域名解析插图

在全球一共有13组根域名服务器(注:这里并不是指13台服务器,是指13个ip地址,按字母a-m编号),根域名服务器不会直接解析域名,而是把不同的解析请求分配给下面的其它服务器来完成。

https://www.baidu.com 为例:

当根域名接收到本地 DNS的解析请求后,获知后缀是 .com ,于是就把负责 .com 的顶级域名服务器 IP 地址返回给本地 DNS

然后本地 DNS 再向负责 .com 的顶级域名服务器发起请求, .com 顶级域名服务器也检查自己是否有这个域名的解析结果,没有的话,则将 qq.com 的权威 DNS 服务器的 IP 地址返回给本地 DNS ,依次再是 www.qq.com ,如此往复,根据域名的层级来依次递归。

轻松搞懂域名解析插图

可以看到我们的域名和 DNS 服务器的层级,有着密不可分的关系。

得以将互联网庞大的网络进行分层处理。

轻松搞懂域名解析插图1

微信扫一扫 关注公众号

微信扫一扫 使用小程序

百度扫一扫 使用小程序