| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 系统运维 -> 前端开发也要知道的 DNS -> 正文阅读 |
|
[系统运维]前端开发也要知道的 DNS |
前端开发也要知道的 DNSDNS是什么关于这个,网上的说明非常多。通俗一点。DNS其实就是一个电话本翻译系统,用来把域名解析成对应的IP地址;
DNS的解析过程这里网络教程也非常多。这里一张图说明。总结一下: 从输入域名到返回结果,经历的每一步,都可能有缓存。如果有缓存,就不会进行下一步,直到达到全球只有13台的跟域名服务器; 大部分开发能接触到的,只有到本地DNS服务器这一层。针对前端开发来说,也只需要了解到这一层即可。本篇幅重点讨论这几个流程间的交互; 本地DNS服务器配置使用window Server可以轻易的配置本地DNS服务器。如果你想自己动手试试,可以参考这里 DNS的缓存策略分析浏览器缓存dns策略为了测试各个浏览器的DNS缓存,通过如下方式实现;
chrome浏览器版本 : 缓存时间
缓存清理网上的方案如下: 在地址栏输入以下地址回车,点击 Clear host cache 即可:
然而20分钟过去了。浏览器依旧能够访问删除的DNS地址; 于是我加上了 ctrl+shift+delete,删除浏览器缓存,才恢复了正常; firefox浏览器版本: 缓存时间
缓存清理方案如下: Firefox 之前有几个扩展非常方便,可惜都已经下线了 (SYSIN):dns-flusher、clear-dns-cache
注意: 修改后为禁用 DNS 缓存 (SYSIN)。 补充:修改上述数组实测浏览器缓存DNS策略不变; ie浏览器缓存时间
缓存清理需要写注册表。参见 https://www.muzijie.com/a1/v09l1m70.html。我没有尝试过 host文件缓存在操作系统缓存中,包含了host文件的读取。即,如果你的host文件配置了域名,那么匹配上之后,永远不会进行下一步查询(优先级最高); 配置方式文件内已经给了说明:
缓存时间永久(配置后永久生效) 缓存查看本地host文件 缓存清理删除对应映射即可。 本地缓存缓存查看
建议通过 查看
缓存时间在测试DNS服务器上创建一个新的域名 指向 200.xx.xx.131,发现默认缓存时间是1h(通过不断打印缓存查看) 但是,这个时间受到各种因素影响;例如当我实测禁用/启用本地网卡时,缓存会被重新更新(猜测应该是重新轮询了本地DNS服务器); 缓存清理通过如下指令可以强制清除本地DNS缓存
可以发现清理后,使用缓存查看指令,只能看到如下一些记录:
host文件: DNS一对多情况下的浏览器的处理DNS可以实现一对多。即一个域名对应多个IP。这种情况对于网站保活容灾具有相当的应用价值; 但是如果4个ip都通,那么浏览器解析规则是什么呢?接下来我们进行测试; 测试前置工作为了避免浏览器缓存和本地缓存的影响,我们每次测试使用一个新的域名;每个域名均对应2个不同的ip地址(2个ip均可访问,是相同的产品,部署在不同服务器); 测试一、每个浏览器解析一个新域名5个域名解析结果(IPA 记为 A ,IPB记为B);
结论:
另外在测试过程中发现一点规律: 每次新开一个浏览器解析一个新的域名,windows本地缓存都会发生变化。且解析域名的排列顺序,总是浏览器实际解析出来的域名排在第一个,结合上述数据,证明本地缓存是每次重新解析DNS(向DNS服务器发起请求)后生成的。解析完成后顺便把第一个地址给浏览器; 如下图, 测试二、浏览器的DNS选择浏览器解析域名是否会根据根据服务器的状态选择性使用某台服务器?答案是会的: 验证:新开一个域名对应2个IP地址(ip1,ip1),测试浏览器端访问结果。如果访问到ip1的服务器,则将ip1服务器nginx容器kill掉,亲测浏览器会解析到ip2; 如下图: 但是经过我的这篇文章的验证。在一对多域名解析情况下,浏览器进行轮询遍历,此时浏览器只能够识别服务器最基本的端口状态,如果端口完全不存在,才会进行下一个IP的尝试,直到找到一个成功的ip并进行解析; 总结DNS解析流程在浏览器和客户端层面都有涉及。作为前端开发应该了解其基本原理和缓存机制,方便后续定位解决问题。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/15 15:31:50- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |