什么是DNS域名解析?它的流程是咋样的?
DNS(Domain Name System) 是域名系统的英文缩写,提供的服务是用于将主机名和域名转换为IP的工作
比如请求http://qq.com 会先 请求DNS服务 然后把这个域名 对应的ip地址取出来 然后在进行网络访问地址
http://qq.com ------ DNS ------- IP 58.247.214.47
1.浏览器根据URL先在自身(浏览器)缓存查找DNS(域名服务器)中的解析记录
如果存在(命中),直接返回IP地址
如果不存在(还没命中),2.会查询当前操作系统的hosts文件(Windows-c盘-hosts) 是否有 该域名的DNS解析记录
题外话: 但是这种操作系统级别的域名解析规程也被很多黑客利用,通过修改你的hosts文件里的内容把特定的域名解析到他指定的ip地址上,造成所谓的域名劫持。所以在windows7中将hosts文件设置成了readonly,防止被恶意篡改。
有(命中) 直接返回IP地址
没有(还没有命中)该域名或者已经过期了,3.会先请求本地域名服务器(LDNS) 解析 该域名
题外话:本地域名服务器(LDNS)这台服务器一般在你的城市的某个角落,距离你不会很远,并且这台服务器的性能都很好,一般都会缓存域名解析结果,大约80%的域名解析到这里就完成了
解析成功(命中)就返回IP地址
如果解析不了,4.会跳到根域名服务器(Root Server)请求解析,根域名服务器(Root Server)会返回一个 主域名服务器(所查询域的主域名服务器(gTLD Server,国际顶尖域名服务器,如.com .cn .org...)--------- 本地域名服务器会接收到 主域名服务器
5.然后本地域名服务器(LDNS)再发送解析请求给上一步返回的主域名服务器(gTLD)
6.主域服务器(gTLD)接收到解析请求之后,查找 域名(name server,你在浏览器输入的域名) 对应的域名服务器的地址(域名服务器会查询存储的域名和IP映射关系表,返回目标IP记录以及一个TTL(Time To Live)值)并 返回给本地域名服务器(LDNS)
7.本地域名服务器接收到IP和TTL值,进行缓存,缓存时间由TTL值控制 8.然后 将解析的结果返回给用户,用户根据TTL值缓存在本地系统缓存中,域名解析过程结束
参考:
2019 面试准备 - JS 防抖与节流(https://juejin.im/post/5c87b54ce51d455f7943dddb)
详解DNS域名解析全过程(https://blog.csdn.net/yanshuanche3765/article/details/82589210)