HTTP/1.0 和HTTP/1.1以及HTTP/2.0 HTTP/3.0的区别

HTTP/1.0

HTTP/1.0 HTTTP 协议的第⼀个正式版本 , 主要具有以下特性:
引⼊了请求头和响应头,⽀持多种请求⽅法和状态码
不⽀持持久连接,每次请求都需要建⽴新的连接

HTTP/1.1

为了解决 HTTP/1.0 每次请求都需要建⽴新的连接的问题, HTTP/1.1 提出了 ⻓连接(持久连接) ,只要客户端和服务器任意⼀端没有明确提出断开连接,则保持TCP 连接状态。

HTTP/1.0的缺点:

在同⼀个 TCP 连接⾥⾯,客户端可以发起多个请求,只要第⼀个请求发出去了,不必等其回来,就可以发第⼆个请 求出去,可以减少整体的响应时间。
客户端需要请求两个资源。以前的做法是,在同⼀个 TCP 连接⾥⾯,先发送 A 请求,然后等待服务器做出回应, 收到后再发出 B 请求。那么,管道机制则是允许浏览器同时发出 A 请求和 B 请求。
但是 服务器必须按照接收请求的顺序发送对这些管道化请求的响应
如果服务端在处理 A 请求时耗时⽐较⻓,那么后续的请求的处理都会被阻塞住,这称为「队头堵塞」。 所以,HTTP/1.1 管道解决了请求的队头阻塞,但是没有解决响应的队头阻塞
当顺序发送的请求序列中的⼀个请求因为某种原因被阻塞时,在后⾯排队的所有请求也⼀同被阻塞了,会招致客户端⼀直请求不到数据,这也就是「队头阻塞

 

 

但是 HTTP1.1 仍然存在着不少问题:
  • 头部冗余:每个请求和响应都需要带有⼀定的头部信息,每次互相发送相同的⾸部造成的浪费较多;
  • 服务器是按请求的顺序响应的,如果服务器响应慢,会招致客户端⼀直请求不到数据,也就是队头阻塞;
  • 没有请求优先级控制;
  • 请求只能从客户端开始,服务器只能被动响应。

HTTP/2

HTTP/2 协议是基于 HTTPS , 所以 HTTP/2 的安全性也是有保障的。
1. 头部压缩: HTTP/2 使⽤ HPACK 压缩算法对请求和响应头部进⾏压缩,减少了传输的头部数据量,降低了延
迟。
2. ⼆进制帧: HTTP/2 将数据分割成⼆进制帧进⾏传输,分为 头信息帧( Headers Frame )和数据帧( Data Frame ,增加了数据传输的效率。
3. 并发传输:引出了 Stream 概念,多个 Stream 复⽤在⼀条 TCP 连接,针对不同的 HTTP 请求⽤独⼀⽆⼆的
Stream ID 来区分,接收端可以通过 Stream ID 有序组装成 HTTP 消息,不同 Stream 的帧是可以乱序发送
的,因此可以并发不同的 Stream ,也就是 HTTP/2 可以并⾏交错地发送请求和响应。
4. 服务器推送:在 HTTP/2 中,服务器可以对客户端的⼀个请求发送多个响应,即服务器可以额外的向客户端 推送资源,⽽⽆需客户端明确的请求。
但是 HTTP/2 仍然存在着队头阻塞的问题,只不过问题是在传输层。
HTTP/2 是基于 TCP 协议来传输数据的, TCP 是字节流协议, TCP 层必须保证收到的字节数据是完整且连续的,这样内核才会将缓冲区⾥的数据返回给 HTTP 应⽤,那么当「前 1 个字节数据」没有到达时,后收到的字节数据只能存放在内核缓冲区⾥,只有等到这 1 个字节数据到达时,HTTP/2 应⽤层才能从内核中拿到数据,这就是 HTTP/2 队头阻塞问题。

 

HTTP1.1HTTP2的⽐较

HTTP1.1 基于请求 - 响应模型。同⼀个连接中, HTTP 完成⼀个事务(请求与响应),才能处理下⼀个事务。即:再 发出请求等待响应的过程种是没办法做其他事情的,会造成【队头阻塞】问题。
HTTP2 通过 Stream 这个设计(多个 Stream 复⽤⼀条 TCP 连接,达到并发的效果),解决了【队头阻塞】的问题, 提⾼了HTTP 传输的吞吐量。

HTTP/3

HTTP/2 队头阻塞的问题是因为 TCP ,所以 HTTP/3 HTTP 下层的 TCP 协议改成了 UDP

 

HTTP/3 基于 QUIC 协议,具有以下特点:

  • RTT 连接建⽴QUIC 允许在⾸次连接时进⾏零往返时间(Zero Round Trip Time)连接建⽴,从⽽减少 了连接延迟,加快了⻚⾯加载速度。
  • ⽆队头阻塞: QUIC 使⽤ UDP 协议来传输数据。⼀个连接上的多个stream之间没有依赖, 如果⼀个stream丢了 ⼀个UDP包,不会影响后⾯的stream,不存在 TCP 队头阻塞
  • 连接迁移QUIC 允许在⽹络切换(如从 Wi-Fi 到移动⽹络)时,将连接迁移到新的 IP 地址,从⽽减少连接的 中断时间。
  • 向前纠错机制:每个数据包除了它本身的内容之外,还包括了部分其他数据包的数据,因此少量的丢包可以通 过其他包的冗余数据直接组装⽽⽆需重传。向前纠错牺牲了每个数据包可以发送数据的上限,但是减少了因为丢包导致的数据重传。
HTTP/3 协议与HTTP/2协议的区别
HTTP/3 HTTP/2 ⼀样采⽤⼆进制帧的结构,不同的地⽅在于 HTTP/2 的⼆进制帧⾥需要定义 Stream ,⽽ HTTP/3 ⾃身不需要再定义 Stream ,直接使⽤ QUIC ⾥的 Stream ,于是 HTTP/3 的帧的结构也变简单了。

HTTPS

HTTPS 协议
协议( protocol ):通信双⽅需要遵守的 统⼀规则。
HTTP Hyper Text Transfer Protocol :超⽂本传输协议
HTTPS Hyper Text Transfer Protocol Secure :超⽂本安全传输协议
SSL Secure Socket Layer 安全套接字
TSL Transport Layer Security 安全传输层协议
HTTPS = HTTP+SSL/TSL

 

HTTPS 的特点
1. 特点
信息加密:采⽤对称加密 + ⾮对称加密的混合加密的⽅式,对传输的数据加密,实现信息的机密性,解决了窃听的⻛险。
校验机制:⽤摘要算法为数据⽣成独⼀⽆⼆的「指纹」校验码,指纹⽤来校验数据的完整性,解决了被篡改的⻛险。
身份证书:将服务端的公钥放⼊到 CA 数字证书中,解决了服务端被冒充的⻛险。
2. 优点
在数据传输过程中,使⽤秘钥加密,安全性更⾼
可认证⽤户和服务器,确保数据发送到正确的⽤户和服务器
3. 缺点
握⼿阶段延时较⾼:在会话前还需进⾏ SSL 握⼿
部署成本⾼:需要购买CA 证书;需要加解密计算,占⽤ CPU 资源,需要服务器配置或数⽬⾼

HTTPSHTTP的区别

HTTP 明⽂ 的⽅式在⽹络中传输数据, HTTPS 解决了 HTTP 不安全的缺陷,在 TCP HTTP ⽹络层之间 加⼊了 SSL/TLS 安全协议,使得报⽂能够 加密传输
HTTPS TCP 三次握⼿之后,还需进⾏ SSL/TLS 的握⼿过程,才可进⼊加密报⽂传输。
HTTP 的端⼝号是 80 HTTPS 的端⼝号是 443
HTTPS 协议需要向 CA (证书权威机构) 申请数字证书,来保证服务器的身份是可信的。

 

  • 19
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值