HTTP/1 和 HTTP/2 的区别

388 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第N天,点击查看活动详情

HTTP本身是无连接的,虽然HTTP使用了TCP连接,但在通信双方在交换HTTP报文之前不需要建立HTTP连接。HTTP是无状态的。

HTTP/1

HTTP/1.0主要缺点,就是每个请求一个文档就要两倍RTT的开销。打开一个连接,若有图片链接等,会多一个请求图片的RTT。

HTTP/1.1为解决这个问题,使用持续连接,服务器在发送响应后仍然在一段时间内保持这条连接,同一个用户和该服务器可以继续在这条连接上传送后续的HTTP请求报文和响应报文。持续连接有两种工作模式,非流水线方式流水线方式。

HTTP/2

HTTP/2 是 HTTP/1.1 的升级版本,其HTTP方法/状态码/语义等都没有改变。

① 1.1的流水线方式,服务器发回响应时必须按先后顺序排队,逐个发给客户,若遇到某个响应迟迟不能返回,那么排在后面的响应就必须一直等待。2把服务器发回响应变成并行地发回(使用同一个TCP连接),大大缩短了服务器的响应时间。

② 1.1 当客户端收到发回的响应后,原来建立的TCP连接就释放了,如果客户还要继续向服务器发送新的请求就必须建立新的TCP连接。2允许客户复用TCP连接进行多个请求,就节省了TCP连接多次建立和释放连接所花费的时间。

③ 1.1的请求和响应报文是面向文本的,首部中很多字段是重复的。2中把所有报文都划分为许多较小的二进制编码的帧,采用新的压缩算法,不发送重复的首部字段,大大减小了首部的开销,提高了传输效率。