在这里插入图片描述
一个简单回答:

  1. 浏览器生成请求并发送到服务器;
  2. 服务器接受到请求后,执行一些动作或获取某些资源,然后将响应发送回客户端;
  3. 浏览器在接收到响应数据之后,解析DOM树和CSS树,处理JavaScript,构建页面。

如果这是你是在面试中的回答,那估计面试官的表情就是这样的。
在这里插入图片描述
很明显,面试官在问这个问题的时候,重点应该是浏览器生成请求并发送到服务器是如何工作的。那这又不得不提到TCP/IP四层模型了。
在这里插入图片描述
我们都知道,TCP/IP四层模型,分别是应用层、传输层、网络层、链路层。利用TCP/IP协议簇进行网络通信时,发送端从应用层往下走,接收端则往应用层往上走。以HTTP发送端为例,在应用层发起一个请求时,会将数据包交由传输层进行分割(TCP),并在各个报文上打上标记序号和端口号之后转发给网络层,网络层将目的MAC地址添加上之后又交由链路层。

那我们现在再回到这个问题,在浏览器输入URL后,发生了什么?
在这里插入图片描述
回想一下四层模型的数据流动方向,再结合上面的图,我们再来试试回答这个问题。

  1. 首先需要解析IP(应用层)。我们在浏览器中输入的一般都是域名,相当于是IP的一个映射,所以需要DNS解析域名来获取IP地址。下图则是一个表述了这个DNS的查找过程。客户端首先会查找本地是否有对应的域名的缓存(浏览器缓存、hosts文件),没有则去请求根DNS服务器或者其他权威的DNS服务器。

在这里插入图片描述

  1. 建立TCP请求(传输层)。在得到上一层的数据包之后,TCP会对将请求报文分割成报文段,通过三次握手建立可靠的连接。
  2. 发送HTTP请求。在经过传输层的处理之后,到达网络层,通过IP协议,搜索对方的地址,一边中转一边发送。到达链路层之后则是将数据包以帧为单位进行广播发送。直到服务器接收到数据,这个过程和上述过程是个逆过程,就不多做赘述了。
  3. 服务器处理。服务器在对数据处理执行一些动作之后,将响应的数据又通过TCP发送到客户端,待数据发送完毕,会进行四次握手来关闭TCP连接。
  4. 客户端响应。客户端会通过服务器返回的状态进行响应,比如重定向、zip压缩的解压等等。
  5. 浏览器渲染页面。解析CSS规则树和DOM树,浏览器进行布局和渲染,处理js。

更多:TCP/IP四层模型(协议簇)各层作用
参考:

  • 《图解HTTP》
  • 《JavaScript忍者秘籍》

WillemWei
491 声望37 粉丝