目录
前言
之前查过这类题目,网上说的都比较深入,遇到真正面试除非考官继续问,没必要讲那么细致,简单回答如下即可。
url解析
解析出协议http或https+服务器地址+访问路径名,比如https://www.baidu.com/s就是https://+www.baidu.com+/s,根据这些信息生成http请求数据包。
DNS域名解析
对服务器地址进行DNS解析,从后至前,查询域名对应的真实ip地址。比如www.baidu.com:
根DNS服务器会告诉你.com是.com顶级域DNS服务器管理的->
(.com)顶级域DNS会告诉你baidu.com是由baidu.com权威DNS服务器管理的->
(baidu.com)权威DNS服务器会告诉你它对应的服务端ip是啥。
tcp三次握手
获取服务端ip,tcp三次握手,详见:TCP连接三次握手与四次挥手。
发送请求
连接后,客户端发送http请求报文,中间可能经过一些负载均衡与反向代理处理,最终发送到服务端(tomcat、nodejs等等),服务端处理完请求并返回响应报文。
浏览器解析渲染页面
解析dom树,遇到script会被阻塞,这也就是为什么非依赖js最好放在html末尾的原因。
解析css规则树。
根据dom树和css规则树生成渲染树(render树)。
根据渲染树计算节点信息布局,并绘制(后期还有重绘和回流的问题)。
解析js。