http1、http2、http3都有什么区别

239 阅读3分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第10天,点击查看活动详情


前言

基于http的协议目前已经到了3.0,那么具体1.0、2.0,还有一些其他基于HTTP的协议,都有什么区别,本文就来介绍一下。

HTTP1.1

  • 1和1.0相比,1.1可以一次传输多个文件
  • http1.x解析基于文本,http2.0采用二进制格式

HTTP2.0

  • 协议
    • 分为了三个部分,SPDYHTTP Speed + Mobility(使用此协议可以改善并提高移动端通信时的通信速度和性能的标准),Network-Friendly HTTP Upgrade(移动端通信时改善性能的标准)
    • SPDY特点:规定使用SSL、会话层的形式加入
    • SPDY有哪些设计
    1. 多路复用流(无限制处理多个HTTP请求,所有请求都在一条TCP连接上完成)
    2. 分配优先级
    3. 压缩HTTP首部
    4. 推送(服务器端向客户端推送数据)
    5. 服务器提示功能(避免发送不必要的请求)
  • 技术上
    • 使用了压缩(报文头压缩和二进制编码)
    • 多路复用(TCP连接,同一时刻可以传输多个HTTP请求。(理论取决于带宽的限制))
    • TLS义务化
    • 协商
    • 客户端拉曳/服务器推送(server push)
    • 流量控制
    • WebSocket
    • Server Push (Nginx 从 1.13.9 版开始支持,一般建议只推送css样式表,我们可以把静态资源放在cdn上,这样会增加复杂度,并且消弱效果)
  • 如何使用
    • IE11只在windows10支持,Chrome/Safari/Firefox/Opera等浏览器只支持https的http/2。
    • 如果浏览器不支持http/2会怎么样呢?也是能够正常打开的,为什么呢?因为建立https连接的时候需要先握手,浏览器或者客户端会发送一个Client Hello的包,这个包里面会说明它是否支持http2
    • 修改nginx配置,listen 443 ssl http2; (后面添加http2)最低版本要求1.10.0

HTTP3.0

  • 主要在传输层上面变化,由传输层的TCP改成QUIC(QUIC 的意思是“Quick UDP Internet Connection”)
  • 为了解决HTTP/2中存在的队头阻塞问题。由于HTTP/2在单个TCP连接上使用了多路复用,受到TCP拥塞控制的影响,少量的丢包就可能导致整个TCP连接上的所有流被阻塞。
  • 由于HTTP的2的问题,我们需要兼顾稳定性、顺序性及安全性,所以我们在QUIC保持稳定的同时需要使用UDP提高速度,这样TLS的安全性也得到了保证。

其他基于HTTP的协议

  1. websocket,可以解决ajax和comet里XMLHttpRequest附带的缺陷,在前面的文章中我们有使用websocket开发了简单版聊天室
  2. web服务器管理文件的WebDAV
    • 对web服务器上的内容直接进行复制编辑操作的分布式文件系统
    • 扩展HTTP/1.1的协议
    • 增加了一些方法 如COPY MOVE LOCK等