一、输入设备(或粘贴)输入 URL,按下 Enter键 或其他按钮开始请求。
二、浏览器开始解析 URL
关于 URL 到相关知识点:什么是URI,URL以及URN,你真的理解了吗。
1、URL 是否合法
2、URL 中的字符转换
3、HSTS列表 协议升级。相关文章 HSTS详解。在现代浏览器中,这一步有可能导致请求中止。
三、检查本地缓存,根据缓存情况决定下一步的动作
1、 强缓存(Cache-Control
和 Expires
) 直接从本地缓存读取资源(若是这步,便没有下面的步骤)
2、弱缓存(Etag、If-None-Match 和 Last-Modified、If-Modified-Since) 需要与服务器通信进行一次确认缓存是否可用
3、无缓存 与服务器通信请求数据
关于强弱缓存的文章: HTTP强缓存和协商缓存
四、浏览器开始进行 DNS 解析
解析的过程依次为:浏览器缓存、本机缓存、hosts文件、路由器缓存、ISP DNS缓存、DNS递归查询。
五、与目标IP的服务器进行TCP链接(三次握手)
参考文章: TCP三次握手详解及释放连接过程
六、发送 HTTP或HTTPS 请求
参考文章:Http和Https的区别
七、服务器对请求进行响应
1、304响应 对应对是弱缓存响应
2、200响应 对应对是无缓存响应
在服务器进行响应之前,内部还有其他的内容。
比如代理服务器,数据库查询等等。
八、浏览器接收响应,并视情况关闭TCP连接
九、根据响应对内容,浏览器进行不同对处理
下面仅仅对 html 网页文档进行讨论。
十、下文待续。
参考文章: https://www.jianshu.com/p/558455228c43