从输入 URL 到页面展示到底发生了什么?
- 输入网址,解析URL信息,准备发送HTTP请求
- 检查浏览器缓存里是否有缓存该资源,如果有直接返回;如果没有进入下一步网络请求。
- DNS域名解析:网络请求前,进行DNS解析,以获取请求域名的IP地址。如果请求协议是HTTPS,那么还需要建立TLS连接。DNS解析时会按本地浏览器缓存->本地Host文件->路由器缓存->DNS服务器->根DNS服务器的顺序查询域名对应IP,直到找到为止。
- TCP三次握手建立连接:浏览器与服务器IP建立TCP连接。
- 客户端发送HTTP请求:连接建立后,浏览器端会构建请求行、请求头等信息,并把和该域名相关的Cookie等数据附加到请求头中,向服务器构建请求信息。如果是HTTPS的话,还涉及到HTTPS的加解密流程。
- 服务器处理请求并返回HTTP资源:服务器接收到请求信息,根据请求生成响应数据。
- TCP四次挥手断开连接:浏览器与服务器IP断开TCP连接。
- 浏览器解析响应并渲染页面:
- 浏览器解析响应头。若响应头状态码为301、302,会重定向到新地址;若响应数据类型是字节流类型,一般会将请求提交给下载管理器;若是HTML类型,会进入下一部渲染流程。
- 浏览器解析HTML文件,创建DOM树,解析CSS进行样式计算,然后将CSS和DOM合并,构建渲染树;最后布局和绘制渲染树,完成页面展示。