HTTP 0.9
也叫做单行(one-line)协议,基于 TCP 只允许 GET,只会响应 HTML 格式的字符串
HTTP 1.0
增加了请求头,版本号(比如 content-type,就可以传输不同类型的数据)
请求方法扩展了 GET,HEAD,POST,响应带上了状态码
HTTP 1.1
支持长连接:在 HTTP1.1 中默认开启 Connection: keep-alive,允许在一个 TCP 连接上传输多个 HTTP 请求和响应,减少了建立和关闭连接造成的性能消耗。
支持流水线:在同一条长连接上发出连续的请求,而不用等待应答返回。这样可以避免连接延迟
支持响应分块:对于比较大的响应,HTTP/1.2 通过 Transfer-Encoding 首部支持将其分割成多个任意大小的分块,每个数据块在发送时都会附上块的长 度,最后用一个零长度的块作为消息结束的标志。
新的缓存控制机制:HTTP/1.1定义的 Cache-Control 头用来区分对缓存机制的支持情况,同时,还提供 If-None-Match, ETag , Last-Modified, If-Modified-Since 等实现缓存的验证等工作。
请求头增加 HOST 字段:允许不同域名配置到同一IP的服务器上,它指明了请求将要发送到的服务器主机名和端口号,这是一个必须字段,请求缺少该字段服务端将会返回 400
引入内容协商机制,包括语言,编码,类型等,并允许客户端和服务器之间约定以最合适的内容进行交换。
使用了 100 状态码
HTTP 2.0
采用多路复用解决了队头阻塞的问题(在一个TCP中按序发送,前面请求处理慢)
二进制传输 请求和响应复用 Header压缩 Server Push(服务端推送)
QUIC
基于 UDP,与 TLS 深度集成、支持多个独立的字节流、使用连接 ID、使用帧(frame)