不知道大家浏览器主页设置的是哪个网址,我是把百度设置成了我的浏览器主页,一般打开电脑的第一件事情就是打开浏览器,然后它会出现一个百度搜索框了。

image-20210505105000082

这么操作一方面是为了测试网络正不正常,另一方面也是开始工作之前的一个准备动作,遇到什么问题立马就可以百度搜索了 。

那么问题就来了,为什么我们在浏览器中输入“www.baidu.com”,它就能访问到百度搜索这个网页呢?为什么它返回的不是谷歌、或者是知乎网页?

所以你知道 “当你在浏览器中输入一个网址,到浏览器返回这个对应网页“ 的背后都发生了什么吗?今天厂长就给大家来揭秘一下,这也是找工作面试的重点,面试官经常会问。

一、问题

在浏览器中输入网址,到页面显示出来,中间发生了什么?

二、解答

1、查询DNS,获取域名对应的IP。

(1)检查本地hosts文件是否有这个网址的映射,如果有,就调用这个IP地址映射,解析完成。

(2)如果没有,则查找本地DNS解析器缓存是否有这个网址的映射,如果有,返回映射,解析完成。

(3)如果没有,则查找填写或分配的首选DNS服务器,称为本地DNS服务器。服务器接收到查询时:

  • 如果要查询的域名包含在本地配置区域资源中,返回解析结果,查询结束,此解析具有权威性。
  • 如果要查询的域名不由本地DNS服务器区域解析,但服务器缓存了此网址的映射关系,返回解析结果,查询结束,此解析不具有权威性。

(4)如果本地DNS服务器也失效:

  • 如果未采用转发模式(迭代),本地DNS就把请求发至13台根DNS,根DNS服务器收到请求后,会判断这个域名(如.com)是谁来授权管理,并返回一个负责该顶级域名服务器的IP,本地DNS服务器收到顶级域名服务器IP信息后,继续向该顶级域名服务器IP发送请求,该服务器如果无法解析,则会找到负责这个域名的下一级DNS服务器(如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请求,及时更新页面。

好了,知道「在浏览器中输入网址,到页面显示出来,中间发生了什么?」,面试就不用慌了。