开篇词|To Be a HTTP Hero
课程的目的和目标:
现实需求:
- HTTP应用广泛,是支撑WEB服务的核心技术之一,是相关从业者需要掌握的基本技能之一。
- HTTP看似简单,实则涉及的内容十分庞杂,从HTTP/1.1,HTTPS到HTTP/2,HTTP/3,真正透彻掌握者不多。
现状:
- 正式资料少且陈旧
-
HTTP权威指南[2012],图解HTTP[2014],HTTP/2 in Action中文版[2020]
- 权威资料难【HTTP相关RFC 】
- 网上资料杂
课程目标:
- 既有深度,又有广度
- 既有理论,又有实践
注:广度和深度都有必要做进一步拓展
- 广度还需要拓展到浏览器,WEB服务器,CDN,HTTP/2,
HTTP/3等工作的细节,可以参考陶辉[Web协议详解与抓包实战],李冰【浏览器工作原理与实践】MDN,RFC - 深度上缺少真实场景实践,学以致用才是最终目的。
- 缺少对HTTP工作模型的深刻分析,很多HTTP行为基于其工作模型,理解了工作模型,也就更容易地理解其表现的深刻原因。
- HTTP/1工作模型:请求应答模型,一个典型的HTTP通讯的参与者包括客户端和服务端,中间也可以包括多级代理。
几个关于HTTP请求应答模型的拓展:
- 请求应答模型意味着典型的HTTP通讯方式是半双工的,即客户端发送请求,服务端响应请求,同一时刻只有一个方向有数据传输,这和HTTP的典型应用场景有关。webSocket的引入,就是为了解决半双工消息不能有效实时交互的问题。
注:即使HTTP/2中引入了服务器推送,请求应答模式仍然是HTTP主要的工作方式。 - 请求应答串行化,在HTTP/1.1中,所有请求应答是有序的,如果前一个请求的应答未收到,则后继请求无法发出,这就导致了HTTP中最令人头痛的队头阻塞问题。因此HTTP/1.1中,只能通过并发多个TCP连接,域名分片等方式,缓解队头阻塞问题。