一、问题
在浏览器中输入网址,到页面显示出来,中间发生了什么?
二、解答
1、查询DNS,获取域名对应的IP。
(1)检查本地hosts文件是否有这个网址的映射,如果有,就调用这个IP地址映射,解析完成。
(2)如果没有,则查找本地DNS解析器缓存是否有这个网址的映射,如果有,返回映射,解析完成。
(3)如果没有,则查找填写或分配的首选DNS服务器,称为本地DNS服务器。服务器接收到查询时:
-
如果要查询的域名包含在本地配置区域资源中,返回解析结果,查询结束,此解析具有权威性。
-
如果要查询的域名不由本地DNS服务器区域解析,但服务器缓存了此网址的映射关系,返回解析结果,查询结束,此解析不具有权威性。
(4)如果本地DNS服务器也失效:
- 如果未采用转发模式(迭代),本地DNS就把请求发至13台根DNS,根DNS服务器收到请求后,会判断这个域名(如.com)是谁来授权管理,并返回一个负责该顶级域名服务器的IP,本地DNS服务器收到顶级域名服务器IP信息后,继续向该顶级域名服务器IP发送请求,该服务器如果无法解析,则会找到负责这个域名的下一级DNS服务器(如http://baidu.com)的IP给本地DNS服务器,循环往复直至查询到映射,将解析结果返回本地DNS服务器,再由本地DNS服务器返回解析结果,查询完成。
- 如果采用转发模式(递归),则此DNS服务器就会把请求转发至上一级DNS服务器,如果上一级DNS服务器不能解析,则继续向上请求。最终将解析结果依次返回本地DNS服务器,本地DNS服务器再返回给客户机,查询完成。
2、客户机发送HTTP请求报文:
(1)应用层:客户端发送HTTP请求报文
(2)传输层:切分长数据,并确保可靠性。
(3)网络层:进行路由
(4)数据链路层:传输数据
(5)物理层:物理传输bit
3、服务器端经过物理层→数据链路层→网络层→传输层→应用层,解析请求报文,发送HTTP响应报文。
4、客户端解析HTTP响应报文
5、浏览器开始显示HTML
6、浏览器重新发送请求获取图片、CSS、JS的数据。
7、如果有AJAX,浏览器发送AJAX请求,及时更新页面。
--------------------------
微信搜索公众号【轮子工厂】,后台回复关键字:
1.回复【图书】:获取15本新手自学编程,零基础入门经典学习教材;
2.回复【我要造轮子】:获取100多本我根据知乎上面关于计算机问题的高赞回答里面的介绍整理出来的书籍;
3.回复【内推】:可帮你内推到大厂工作。
![](https://img.haomeiwen.com/i8677143/98c68f317684324d.png)
网友评论