浏览器http请求的过程及原理解析 【面试常考】

228 阅读2分钟

1.我们首先来说一下用户在浏览器在输入框输入网址后,浏览器客户端到底做了些什么?

(1)首先浏览器会根据用户输入的url去解析DNS域名得到对应的ip地址。 例如:wwww.baidu.com => 192.168.33.2

(2) 浏览拿到ip地址后会去寻找对应的服务器,去建立tcp连接并发起三次挥手。

(3) 建立tcp连接成功后客户端就会开始发起http请求(tcp是比http更底层的连接协议)

(4) http请求连接成功后,服务器把html代码发送到客户端。

(5) 浏览器解析html代码后,并对js,css文件,图片资源进行加载和运行。

(6) 浏览器对html代码进行渲染展示给用户。

(7) 服务器关闭连接tcp http。

  1. 这里的话我们对以上七个步骤中一些具体细节进行讲解。 (1).我们对第5步进行一个步骤细化:

    客户端拿到index.html文件代码后 -->对html代码进行解析,下载js,css及图片资源 -->接下来html生成dom树,同时css文件生成渲染树 -->dom树和渲染树形成后生成html渲染树(此树同时具备元素和样式) -->计算元素的位置和尺寸 -->最后渲染出呈现在用户界面的页面。 那么最后两步:计算元素位置和尺寸以及渲染页面涉及到两个概念:回流(reflow)和重绘(replain) (2).第二我们具体说一下浏览器是怎么通过解析域名去获取ip地址的:

    浏览器首先是去浏览去缓存中寻找以往http请求中有无相同的域名 -->没有的话再去操作系统缓存中寻找以往请求有无相同的域名 -->在没有则会进入hosts文件中寻找有无以往相同的域名(hosts文件位于c盘文件系统中Windows/system/....里面。这里就不具体讲述了,该文件可以对一下域名进行拦截和干预进行ip解析。) -->如果Hosts文件也没有的话,就要去域名服务里面寻找 -->再没有就去根域名服务器寻找(这里指的是服务器运营商的服务器中寻找。到这里就是最后一步了,如果还没有就是你的域名输错了。)

(3).tcp协议是一种基于端到端连接的相当可靠的一种协议,http协议是基于传输层tcp协议的话就不用担心传输出现问题,就算发生错误也会进行重传。