1.DNS解析(网址=>IP地址):
查询浏览器DNS缓存;根据域名服务器查询
2.TCP连接(三次握手):
第一次握手:客户端 -> 服务端: 请求建立连接(发送信息的能力)
第二次握手:服务端 -> 客户端:同意建立连接(确认收到信息)
第三次握手:客户端 -> 服务端: 确认接收到服务器端信息
3.发送HTTP请求
服务器进行HTTP请求协议以及请求头进行解析,后台拿到请求数据进行处理。
扩展:负载均衡,大型网址会由多个服务器然后通过反向代理进行请求,用户端的请求先到Nginx,再由Nginx请求到对应的服务器。
4.服务处理请求,并且返回HTTP报文
服务器那我客户端的请求数据后,进行数据处理,处理后,进行http响应。
响应数据 -> 状态码、响应头、响应正文
5.浏览器解析和渲染页面
解析html页面 -> dom+css构建render树 -> 布局render树
html 自上而下解析渲染,遇到外部资源时异步加载
在加载的过程中遇到JS文件时,就会暂时挂起渲染的线程,等待js加载并解析完毕,才恢复渲染,所以平时代码中,js放到html末尾。