HTTP/0.9
最初版本的HTTP协议并没有版本号,后来它的版本号被定位在 0.9 以区分后来的版本。
请求由单行指令构成,以唯一可用方法GET
开头,其后跟目标资源的路径。如下:
GET /mypage.html
响应只包含响应文档本身。
<HTML>
这是一个非常简单的HTML页面
</HTML>
HTTP/0.9 的响应内容并不包含HTTP头, 也没有状态码或错误代码。
HTTP/1.0
在原先的基础上,HTTP/1.0 做了如下的改进.
- 协议版本信息现在会随着每个请求发送(HTTP/1.0被追加到了GET行)。
- 状态码会在响应开始时发送,使浏览器能了解请求执行成功或失败,并相应调整行为(如更新或使用本地缓存)。
- 引入了HTTP头的概念,无论是对于请求还是响应,允许传输元数据,使协议变得非常灵活,更具扩展性。
- 在新HTTP头的帮助下,具备了传输除纯文本HTML文件以外其他类型文档的能力(Content-Type头)。
HTTP/1.1
HTTP/1.1 的多项改进:
- 连接可以复用,节省了多次打开TCP连接加载网页文档资源的时间。
- 增加流水线操作,允许在第一个应答被完全发送之前就发送第二个请求,以降低通信延迟。
- 支持响应分块。
- 引入额外的缓存控制机制。
- 引入内容协商机制,包括语言,编码,类型等,并允许客户端和服务器之间约定以最合适的内容进行交换。
- 感谢
host
头,能够使不同域名配置在同一个IP地址的服务器上。
HTTP 2
SPDY是HTTP/2协议的基础, HTTP 2 的改进:
- HTTP/2是二进制协议而不是文本协议。不再可读,也不可无障碍的手动创建。
- 这是一个复用协议。并行的请求能在同一个链接中处理,移除了HTTP/1.x中顺序和阻塞的约束。
- 压缩了headers。因为headers在一系列请求中常常是相似的,其移除了重复和传输重复数据的成本。
- 其允许服务器在客户端缓存中填充数据,通过一个叫服务器推送的机制来提前请求。
HTTP/3
- HTTP over QUIC
HTTP/3, will use QUIC instead TCP/TLS for the transport layer portion.
网友评论