这是一个经典的问题,能区分知识的广度与深度,从回答的侧重点上甚至能区分出工种(前端、后端、运维等)。开发人员基本上都能说出几点,而牛人更可在自己擅长的地方发挥到淋漓尽致。
由于知识有限,我只从下面四点说说对此问题的认知:
URL到IP地址的转变
1.浏览器发出请求
2.服务器处理请求并返回
3.浏览器接收请求并显示结果
4.整个过程和下图基本相同:
1.URL到IP地址的转变
由于人对记住毫无意义的数字(IP地址)吃力,而对有意义的字母组合(域名)更容易接受,而机器对数字更加敏感。为了能把两者联系上,就出现了 DNS (Domain Name System)可理解为翻译官,所以为了能访问一个网站,首先要把URL转为IP地址,查询的顺序如下:
Browser cache:浏览器自身会缓存DNS一段时间。
Chrome我测下来是60秒:
Firefox是直接能看到配置,默认是60秒:
2.OS cache:若浏览器里没有记录,浏览器则会向系统发送消息,请求查询,一般是查询hosts文件。
3.Router cache: 接着到了自身包含缓存的路由器上。
4.ISP cache: 若以上都失败则到了ISP的DNS缓存,然后开始迭代或递归式查找IP地址。从根域(.)到顶级域(.com),再到第二层域(zhuxinyong.com)最后到主机(www.zhuxinyong.com)
就这样一级一级的找,最后找到IP地址然后原路返回,同时在相应的点缓存上本次查询的域名对应的IP地址,防止下次同一域名过来还要经过这样的查询过程。
DNS解析分:
1.递归解析:
2.迭代解析:
整个过程,简单点的如下图:
稍微复杂点的如下图:
完整的如下图:
参考:
网友评论