http 1.0、http 1.1、http 2.0区别

目录

http 1.0

http 1.1

http 2.0


http 1.0

早先1.0HTTP版本,是一种无状态、无连接的应用层协议。

http 1.0要制定 keep-alive 来开启持久连接,默认是短连接,就是每次浏览器请求都要重新建立一次 tcp 连接,即无状态。

服务器不跟踪每个客户端也不记录过去的请求(无状态),只能通过借助cookie/session机制来做身份认证和状态记录。

早期的网页大多是文字,后面随着页面的丰富,需要加载更多的资源,如css、js、图片等,并且一个请求要在上一个请求得到响应后才能发起,所以http协议不得不升级...

http 1.1

默认支持长连接http 1.1增加了一个Connection字段,通过设置Keep-Alive可以保持HTTP连接不断开,避免了每次客户端与服务器请求都要重复建立释放建立TCP连接,提高了网络的利用率。如果客户端想关闭HTTP连接,可以在请求头中携带Connection: false来告知服务器关闭请求。

支持并行发送请求,但同一时间只能响应一条请求。

http 1.1还增加了 Host头(使得一个服务器能够用来创建多个Web站点)。

http 2.0

支持多路复用,基于一个 tcp 连接并行发送多个请求以及接受响应;

二进制分帧,将数据拆分成更小的帧,提高了性能,实现了低延迟高吞吐。

### HTTP 1.0HTTP 1.1HTTP 2.0 的版本差异与特性 HTTP 协议经历了多次迭代,从最初的 HTTP 1.0 到如今的 HTTP 2.0,每个版本都在性能、安全性以及功能上进行了显著改进。以下是它们之间的核心区别和关键特性: #### HTTP 1.0 - **连接方式**:HTTP 1.0 默认使用短连接(即每次请求/响应后立即关闭连接)。这导致在传输多个资源时需要频繁建立和断开连接,增加了延迟[^1]。 - **头部字段**:缺乏 `Host` 字段支持,无法在同一 IP 地址上区分不同的主机名。 - **状态码扩展**:引入了部分新的状态码(如 409 和 410),但整体仍较为有限。 - **缓存机制**:早期版本对缓存的支持较弱,主要依赖于简单的 `Expires` 字段。 #### HTTP 1.1 - **长连接与 Keep-Alive**:HTTP 1.1 引入了持久连接(也称为长连接)的概念,允许在一个 TCP 连接中复用多次请求和响应,从而减少握手开销[^4]。 - **流水线模式**:支持流水线模式(Pipeline),允许客户端在收到前一个响应之前发送多个请求,但仍然存在队头阻塞问题[^4]。 - **头部字段扩展**:新增了 `Host` 字段,支持虚拟主机托管;同时引入了更丰富的缓存控制字段(如 `Cache-Control` 和 `Range`),增强了对部分资源下载的支持。 - **错误处理**:增加了更多的状态码以更精确地描述服务器端或客户端的行为。 #### HTTP 2.0 - **多路复用**:HTTP 2.0 的最大特点是支持多路复用(Multiplexing),允许多个请求和响应在同一连接中并发传输,有效解决了 HTTP 1.x 中的队头阻塞问题[^3]。 - **头部压缩**:采用 HPACK 算法对请求和响应头部进行压缩,显著减少了头部数据的传输量。 - **服务器推送**:通过 Server Push 功能,服务器可以在客户端请求之前主动推送相关资源,进一步优化加载速度[^4]。 - **二进制分帧**:将原本基于文本的协议转换为二进制格式,提高了解析效率和兼容性。 - **TLS 强制支持**:尽管理论上 HTTP 2.0 可以运行在明文 HTTP 上,但主流浏览器(如 Chrome 和 Firefox)仅支持基于 TLS 部署的 HTTP 2.0[^2]。 #### 性能优化的关键点 HTTP 2.0 的设计重点在于降低延迟,而非单纯提升带宽利用率。通过多路复用和更高效的 TCP 连接管理,HTTP 2.0 能够充分利用高带宽网络环境下的性能优势[^5]。 ```python # 示例代码展示 HTTP 请求的基本结构(Python 实现) import http.client conn = http.client.HTTPSConnection("example.com") headers = {'User-Agent': 'Mozilla/5.0'} conn.request("GET", "/", headers=headers) response = conn.getresponse() print(response.status, response.reason) ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值