从输入URL到页面渲染经历了什么?
2020 M12 22
- 协议补全,通常我们在地址栏输入的URL都不会手动补全协议名,而是交给地址栏自动完成。
- 如输入www.baidu.com,最终请求URL为https://www.baidu.com
- 网络进程:缓存存在直接返回,否则发送请求到服务端
- 发请求需要知道目标主机和端口号,http默认端口号:80,https默认端口号:443
- 主机和端口号从url获取,url可能是纯ip,也可能是域名
- 如果是域名,就进行dns域名解析,涉及dns缓存
- tcp三次握手(https协议会有tls建立连接)
- 解析url获取的ip端口号,浏览器端会构建请求行、请求头等信息,并把和该域名相关的Cookie等数据附加到请求头中,然后向服务器发送构建的请求信息。
- 报文解析http->tcp->ip... ... ip->tcp->http
- 服务器处理,构建响应报文 (响应行、响应头和响应体)
- 响应头包含location需要重定向处理
- Content-Type告知浏览器如何解析
- 解析html构建dom树
- 解析css为styleSheets,样式标准化:rgb,bold:700,根据继承和层叠计算dom样式
- 创建布局树(只包含可见元素)
- z-index,定位,浮动,分层,
- 绘制
- 栅格化处理
- GUI进程合成和显示
- 四次挥手,断开连接