从输入 URL 到页面展示到底发生了什么呢?
1.在浏览器输入一个域名回车
2.首先会先检查浏览器缓存里是否有缓存资源,如果缓存中有,会直接在浏览器上显示页面内容,如果没有,在发送http请求之前,浏览器会向DNS服务器发送一个查询请求;
3.DNS服务器会将请求通过域名解析解析为IP,如果请求协议是HTTPS,那么还需要建立TLS连接。DNS解析时会按本地浏览器缓存->本地Host文件->路由器缓存->DNS服务器->根DNS服务器的顺序查询域名对应IP,直到找到为止
4.为了保证服务的可靠性,浏览器与服务器建立TCP三次握手
5.握手成功之后,浏览器会构建请求行、请求头等信息,并把它和域名相关的cookie等数据附加到请求头中,向服务器构建请求信息;如果是HTTPS的话,还涉及到HTTPS的加解密流程。
6.服务器接收到请求信息后,根据请求生成响应数据。浏览器与服务器IP会四次挥手断开TCP连接
7.最后浏览器解析响应并渲染页面
- 浏览器解析响应头。若响应头状态码为301、302,会重定向到新地址;若响应数据类型是字节流类型,一般会将请求提交给下载管理器;若是HTML类型,会进入下一部渲染流程。
- 浏览器解析HTML文件,创建DOM树,解析CSS进行样式计算,然后将CSS和DOM合并,构建渲染树;最后布局和绘制渲染树,完成页面展示。