HTTP 协议版本变化学习笔记
互联网发展至今,HTTP 协议已经发展了多个版本,分别为 HTTP/1.0、HTTP/1.1、HTTP/2.0、HTTP/3.0,本文将对这几个版本的变化进行学习笔记。 HTTP/1.0HTTP/1.0 是最早的 HTTP 协议版本,它的特点是: 每次请求都会建立一个新的 TCP 连接,请求结束后立即断开连接。 每个请求都会包含完整的请求头和请求体。 不支持持久连接,每次请求都需要重新建立连接。 不支持管道化,即同一个连接中不能同时发送多个请求。 HTTP/1.1HTTP/1.1 是对 HTTP/1.0 的改进,它的特点是: 支持持久连接(Keep-Alive),即同一个连接可以发送多个请求。 支持管道化,即同一个连接中可以同时发送多个请求。但是,由于 HTTP/1.1 中的管道化存在队头阻塞问题,所以很少被使用。默认为关闭状态,并且大多数浏览器也不支持。 所以我们认为 HTTP/1.1 不支持管道化 。 HTTP/1.1 的缺点: 队头阻塞问题:如果一个请求响应时间过长,那么后面的请求就会被阻塞。 明文传输:HTTP/1.1 的数据传输是纯文本且未加密的,容易被窃听。比如状态码 200 会被分为 2、0、0 三个字节传输。这点会在 HTTP/2.0 中得到改进。 头部冗余:每次请求都需要携带完整的请求头,头部信息冗余。 HTTPS在讲述 HTTP/2.0 之前,我们先来了解一下 HTTPS。 HTTPS 是在 HTTP 的基础上加入了 SSL/TLS 加密层,使得数据传输更加安全。HTTPS 的特点是: 数据加密:HTTPS 使用 SSL/TLS 加密传输数据,保证数据传输的安全性。 身份认证:HTTPS 使用证书机制对服务器和客户端进行身份认证,防止中间人攻击。 数据完整性:HTTPS 使用数字签名对数据进行完整性校验,防止数据被篡改。 加密方式:对称加密、非对称加密、数字签名。 通信前使用非对称加密协商对称加密的密钥,通信过程使用对称加密传输数据,保证数据传输的安全性。 HTTP/2.0HTTP/2.0 是对 HTTP/1.1 的重大升级,它的特点是: 头部压缩:HTTP/2.0 使用 HPACK 算法对头部进行压缩,如果请求头中包含相同的字段,只需要发送一次,后续请求只需要发送索引,接着从静态表或动态表中获取对应的值。解决了 HTTP/1.1 中头部冗余的问题。 ...