前面写过一篇关于一次完整的HTTP请求,文章内容相对浅显,又是一年跳槽季,为了各位攻城狮们来年可以找到满意的工作和心仪的对象,几经思考,还是准备进一步细化讲解,今天就聊一聊骚气的csdn域名解析
再具体介绍之前,先上图,然后看图说话,这样有图有真相有助于肠胃吸收,不至于枯燥乏味
DNS是一个递归查询的过程,请先允许头盗图一张哈:
如图所示,DNS域名解析是一个递归查询和迭代查询的过程,下面将对每一个步骤进行详细的说明:
以chroom浏览器为例:
1、 Chrome浏览器 会首先搜索浏览器自身的DNS缓存(缓存时间比较短,大概只有1分钟,且只能容纳1000条缓存),看自身的缓存中是否有www.google.com 对应的条目,而且没有过期,如果有且没有过期则解析到此结束。
2、如果浏览器自身的缓存里面没有找到对应的条目,那么Chrome会搜索操作系统自身的DNS缓存,如果找到且没有过期则停止搜索解析到此结束.
3、如果在系统的DNS缓存也没有找到,那么尝试读取hosts文件
4、如果在hosts文件中也没有找到对应的条目,浏览器就会发起一个DNS的系统调用,就会向本地配置的首选DNS服务器[上图中的根域名服务器](一般是电信运营商提供的,也可以使用像Google提供的DNS服务器)发起域名解析请求,运营商的DNS服务器首先查找自身的缓存,找到对应的条目,且没有过期,则解析成功。如果没有找到对应的条目,则有运营商的DNS代我们的浏览器发起迭代DNS解析请求,它首先是会找根域的DNS的IP地址,找到根域的DNS地址,就会向其发起请求(请问www.google.com这个域名的IP地址是多少?),根域发现这是一个顶级域com域的一个域名,于是就告诉运营商的DNS我不知道这个域名的IP地址,但是我知道com域的IP地址,你去找它去,于是运营商的DNS就得到了com域的IP地址,又向com域的IP地址发起了请求(请问www.google.com这个域名的IP地址是多少?),com域这台服务器告诉运营商的DNS我不知道www.google.com这个域名的IP地址,但是我知道www.google.com这个域的DNS地址,你去找它去,于是运营商的DNS又向www.google.com这个域名的DNS地址(这个一般就是由域名注册商提供的,像万网,新网等)发起请求(请问www.google.com这个域名的IP地址是多少?),这个时候www.google.com域的DNS服务器一查,诶,果真在我这里,于是就把找到的结果发送给运营商的DNS服务器,这个时候运营商的DNS服务器就拿到了www.google.com这个域名对应的IP地址,并返回给系统内核,内核又把结果返回给浏览器,终于浏览器拿到了www.google.com对应的IP地址,该进行一步的动作了。
5、如果上述操作还是失败了,那兄弟我就帮不了你了,自求多福吧!!!
结束语:
老实说,这种东西身为一个前端开发攻城狮,不需要太深入,但是基本的了解是很有必要的,即便实际生产项目中不太关心,但是鹅厂的面试多多少少都会提及,多一分了解就多一份可能性
其它前端性能优化:
- 图片优化——质量与性能的博弈
- 浏览器缓存机制介绍与缓存策略剖析
- webpack 性能调优与 Gzip 原理
- 本地存储——从 Cookie 到 Web Storage、IndexDB
- CDN 的缓存与回源机制解析
- 服务端渲染的探索与实践
- 解锁浏览器背后的运行机制
- DOM 优化原理与基本实践
- Event Loop 与异步更新策略
- 回流(Reflow)与重绘(Repaint)
- Lazy-Load
- 事件的节流(throttle)与防抖(debounce
- 前端学习资料下载
- 技术体系分类
前端技术架构体系(没有链接的后续跟进):
- 调用堆栈
- 作用域闭包
- this全面解析
- 深浅拷贝的原理
- 原型prototype
- 事件机制、
- Event Loop
- Promise机制、
- async / await原理、
- 防抖/节流原理
- 模块化详解、
- es6重难点、
- 浏览器熏染原理、
- webpack配置(原理)
- 前端监控、
- 跨域和安全、
- 性能优化(参见上面性能优化相关)
- VirtualDom原理、
- Diff算法、
- 数据的双向绑定
- [TCP协议(三次握手、四次挥手)](https://blog.csdn.net/woleigequshawanyier/article/details/85223642
- DNS域名解析
其它相关
欢迎各位看官的批评和指正,共同学习和成长
希望该文章对您有帮助,你的 支持和鼓励会是我持续的动力