-
浏览器向 DNS 服务器请求解析该 URL 中的域名所对应的 IP 地址
-
根据 IP 地址,找到对应的服务器,浏览器与服务器建立 TCP 连接(三次握手)
-
建立 TCP 连接之后浏览器向服务器发送 HTTP 请求( IP > TCP > HTTP )
-
服务器对浏览器请求作出响应,并把对应的 html 文本发送给浏览器
-
浏览器解析并渲染 HTML(js、css、图片等文件)
-
释放 TCP连接(四次挥手)
DNS 域名解析顺序
- 浏览器缓存(强缓存、协商缓存)
- 操作系统域名缓存
- 本地 hosts 文件
- 域名服务器(根域名服务器缓存,顶级域名服务器缓存,权威域名服务器缓存)
DNS优化
- DNS缓存
- DNS负载均衡(在DNS服务器中为同一个主机名配置多个IP地址,在应答DNS查询时, DNS服务器对每个查询将以DNS文件中主机记录的IP地址按顺序返回不同的解析结果,将客户端的访问 引导到不同的机器上去,使得不同的客户端访问不同的服务器,从而达到负载均衡的目的。例如:CDN )
三次握手
- 客户端:我要建立连接,你是服务端么?(客户端 给 服务端 发送SYN报文)
- 服务端:我是服务端,你是客户端么?(服务端 收到 SYN 报文之后,应答客户端 SYN+ACK 报文)
- 客户端:我是客户端,可以建立连接。(客户端 收到 SYN+ACK 报文之后,回应 ACK 报文,服务端 收到 ACK 报文之后,三次握手建立完成)
四次挥手(可以使客户端发起,也可以是服务器端发起)
- 服务端(主动):我要断开了。( 服务端 给 客户端 发送 FIN+ACK 报文)
- 客户端:知道了,你断开吧。( 客户端 发送 ACK 报文)
- 客户端:我也要断开了。( 客户端 发送 FIN+ACK 报文)
- 服务端:好的。( 服务端 发送 ACK 报文,同时断开连接,客户端 收到报文后也断开连接)
浏览器渲染流程
- 解析HTML,构建DOM树
- 解析CSS,生成CSS规则树
- 合并DOM树和CSS规则,生成渲染树
- 布局渲染树(Layout/reflow),负责各元素尺寸、位置的计算
- 绘制渲染树(paint),绘制页面像素信息
网友评论