http1,http2和http3之间的区别

HTTP1.1 和 HTTP1.0 的区别有哪些?

  • 1.长链接

    • 早期 HTTP1.0 的每一次请求都伴随着一次三次握手的过程,并且是串行的请求,增加了不必要的性能开销

    • HTTP1.1 新增了长链接的通讯方式,减少了性能损耗

  • 2.管道

    • HTTP1.0 只有串行发送,没有管道

    • HTTP1.1 增加了管道的概念,使得在同一个 TCP 链接当中可以同时发出多个请求

  • 3.断点续传

    • HTTP1.0 不支持断点续传

    • HTTP1.1 新增了 range 字段,用来指定数据字节位置,开启了断点续传的时代

  • 4.Host头处理

    • HTTP1.0 任务主机只有一个节点,所以并没有传 HOST

    • HTTP1.1 时代,虚拟机技术越来越发达,一台机器上也有可能有很多节点,故增加了 HOST 信息

  • 5.缓存处理

    • 在HTTP1.0中主要使用header里的If-Modified-Since,Expires来做为缓存判断的标准

    • HTTP1.1则引入了更多的缓存控制策略例如Entity tag,If-Unmodified-Since, If-Match, If-None-Match等更多可供选择的缓存头来控制缓存策略。

  • 6.错误状态响应码

    • 在HTTP1.1中新增了24个错误状态响应码,如410(Gone)表示服务器上的某个资源被永久性的删除等。

HTTP2 和 HTTP1.1 的区别是什么?

  • 1.头部压缩

    • 在 HTTP2 当中,如果你发出了多个请求,并且它们的头部(header)是相同的,那么 HTTP2 协议会帮你消除同样的部分。(其实就是在客户端和服务端维护一张索引表来实现)

  • 2.二进制格式

    • HTTP1.1 采用明文的形式

    • HTTP/2 全⾯采⽤了⼆进制格式,头信息和数据体都是⼆进制

  • 3.数据流

    • HTTP/2 的数据包不是按顺序发送的,同⼀个连接⾥⾯连续的数据包,可能属于不同的回应。(对数据包做了标记,标志其属于哪一个请求,其中规定客户端发出的数据流编号为奇数,服务器发出的数据流编号为偶数。客户端还可以指定数据流的优先级,优先级⾼的请求,服务器就先响应该请求)

HTTP3 和 HTTP2 的区别是什么?

  • 1.协议不同

    • HTTP2 是基于 TCP 协议实现的

    • HTTP3 是基于 UDP 协议实现的

  • 2.QUIC

    • HTTP3 新增了 QUIC 协议来实现可靠性的传输

  • 3.握手次数

    • HTTP2 是基于 HTTPS 实现的,建立连接需要先进行 TCP 3次握手,然后再进行 TLS 3次握手,总共6次握手

    • HTTP3 只需要 QUIC 的3次握手

  • 4.IO多路复用

    • 如:在⼀个连接中,服务器收到了客户端 A 和 B 的两个请求,但是发现在处理 A 的过程中⾮常耗时,索性就先回应 A 已经处理好的部分,再接着回应 B 请求,最后再回应 A 请求剩下的部分。

    • HTTP/2 可以在⼀个连接中并发多个请求或回应

  • 5.服务器推送

    • 服务器可以主动向客户端发送请

猜你喜欢

转载自blog.csdn.net/ThinPikachu/article/details/123572108