1. URL解析
判断是合法的地址还是待搜索的关键字。
2. 地址栏网址缓存
可以自动补全网址。
3. 检查 HSTS 预加载列表
HSTS -> 强制客户端使用 HTTPS 与服务器创建连接。 在输入 URL 后会检查自带的 HSTS 预加载列表,如果不支持则不会产生跳转。 输入 www.baidu.com 被重定向到 www.baidu.com
4. DNS 查询
通过先后请求根域名服务器、顶级域名服务器、权限域名服务器获取到 ip 地址。
DNS 缓存
域名解析最少涉及了三个地方的缓存 浏览器的 DNS 缓存、操作系统中的 DNS 缓存、操作系统的 hosts 文件(可手动写入的缓存)
5. TCP 连接
通过三次握手建立 TCP连接。
TCP 发送缓冲区 & 接收缓冲区
建立 TCP 连接这一步也涉及到缓存,用来临时存放双方通信的数据,保证通信数据不会丢包。
6. HTTP 请求
在 tcp 连接的基础上进行通信,发送 http 请求到服务器。请求由 请求行、请求头、请求主体 构成。
HTTP 请求缓存
CDN 节点缓存、代理服务器缓存、浏览器缓存、后端动态计算结果缓存等
7. 响应请求
服务器收到浏览器请求之后,进行逻辑操作,处理完成之后返回 http 响应。由 状态行、响应头、响应正文 构成。 服务器响应之后,http 默认开始长连接 keep-alive,当页面关闭之后 tcp 连接经过 四次挥手 断开。
8. 页面渲染
浏览器 收到服务器 响应的资源,对资源进行解析。
- 查看响应头的信息,根据不同的指示做对应处理,比如重定向,存储cookie,解压gzip,缓存资源等等。
- 查看响应头的 Content-Type的值,根据不同的资源类型采用不同的解析方式。