lxw124 / Interview

前端
2 stars 0 forks source link

http1.0和1.1,2.0的区别 #7

Open lxw124 opened 4 years ago

lxw124 commented 4 years ago

http1.0默认不支持长链接,发送一个http请求就会断开一次链接,但是可以添加connection:keep-alive保持长链接,只有get,post和head方法 http1.1默认支持长链接,新增一些请求首部,例如host,cache-control等。 http2.0支持长链接,使用HPACK算法压缩了头部,支持服务器端推送,采用了二进制分帧实现多路复用,每一个TCP连接中承载了多个双向流通的流,每一个流都有一个独一无二的标识和优先级,而流就是由二进制帧组成的。二进制帧的头部信息会标识自己属于哪一个流,所以这些帧是可以交错传输,然后在接收端通过帧头的信息组装成完整的数据,不会出现对头阻塞问题,可以并行发送请求,还提供了流量控制,确保多个流不会互相干扰,流量控制是有方向的,由接收者全面控制。接收方可以为每个流和整个连接设置任意的窗口大小。发送方必须尊重接收方设置的流量控制限制。

lxw124 commented 4 years ago

http2也是有缺点的,如果是https的话还要进行tls握手,本身就需要三次握手,加上tls握手,起码要消耗3-4个RTT(第一个发送端有数据发送开始到接收到确认信号经历的时间)。 除此之外还有,如果出现丢包的情况,因为多个请求是在同一个tcp管道内的,所以需要等待重新传输确认,但是如果是http1.1因为采用多个tcp链接,所以丢包只会影响一个tcp链接,其他管道可以正常传输数据