前端开发之HTTP协议认识

上一篇👉: 前端开发之WebSocket通信

1. HTTP 1.0 和 HTTP 1.1 之间有哪些区别

# 特性 HTTP 1.0 HTTP 1.1
1 连接 默认使用非持久连接 默认使用持久连接,支持连接复用
2 资源请求优化 无范围请求支持,可能导致带宽浪费 引入 Range 头域,支持部分内容请求
3 缓存机制 依赖 If-Modified-Since, Expires 引入更多缓存控制指令,如 Etag, If-Unmodified-Since
4 Host字段 新增 Host 字段,支持虚拟主机
5 请求方法扩展 基础请求方法 增加了 PUT, HEAD, OPTIONS 等请求方法

1.连接方面:

  • HTTP 1.0默认采用非持久连接,每请求完一个资源就需要重新建立TCP连接,增加了网络延迟。
  • HTTP 1.1 引入持久连接(Keep-Alive)作为默认模式,允许同一TCP连接处理多个请求响应,显著提高了效率。

2.资源传输优化:

  • HTTP 1.0中,客户端即使只需要资源的部分内容,服务器也会发送整个资源,造成带宽浪费。
  • HTTP 1.1增加Range请求头,支持断点续传,仅传输请求区间的内容,有效利用资源。

3.缓存机制增强:

  • HTTP 1.1扩展了缓存控制指令,如ETag、If-Modified-Since等,提供了更灵活和高效的缓存策略,减少了不必要的数据重传。

4.主机头识别

  • HTTP 1.1新添Host字段,使得单一IP地址上的多虚拟主机得以区分,促进了现代Web托管技术的发展。

5.请求方法扩展

  • HTTP 1.1增加了PUT、HEAD、OPTIONS等请求方法,提升了协议的功能性和灵活性,更好地满足了Web应用的需求。

2.HTTP 1.1HTTP 2.0 的区别

# 特性 HTTP 1.1 HTTP/2
1 协议格式 基于文本的协议 二进制协议,更高效的数据传输
2 多路复用 单个连接上请求响应顺序处理,潜在队头阻塞问题 实现真正的多路复用,减少延迟,解决队头阻塞问题
3 头信息压缩 无头信息压缩 引入 HPACK 压缩算法,减少头信息传输大小
4 数据流与优先级控制 每个请求作为独立数据流,支持优先级设置
5 服务器推送功能 支持服务器主动推送资源到客户端,提升加载效率

1. 二进制分帧层:

  • HTTP/2采用了全新的二进制格式而非文本格式,将数据和头信息分割成更小的二进制帧,实现了低开销和高效解析。

2.多路复用技术:

  • 解决了HTTP/1.x的“队头阻塞”问题,HTTP/2允许在一个连接上并行处理多个请求和响应,无需等待前一个请求完成,大大提高了并发性能。

3.数据流和优先级:

  • 每个请求或响应作为独立的数据流,携带唯一IDHTTP/2允许为不同的数据流分配优先级,确保关键资源优先传输。

4.高效头部压缩:

  • 引入HPACK压缩算法,HTTP/2减少头部大小,通过索引和差异编码技术,极大降低了重复头部信息的传输成本。

5. 服务器推送:

  • HTTP/2允许服务器预测性地推送客户端可能需要的资源,无需等待额外请求,进一步优化加载时间和用户体验。

队头阻塞现象:HTTP性能的隐形瓶颈

在传统的HTTP/1.x协议中,遵循严格的"请求-应答"模式,构建了一个线性的数据传输通道。这种模式下,每个请求必须等待前一个请求完成其完整的往返过程后才能开始,形成了单一序列的处理队列。形象地说,这是一种“一列纵队过桥”的模式,每辆“车”(请求)必须等待前一辆完全通过桥梁后才能行驶。

原因剖析:

  • 串行依赖:由于协议规定了报文的发送与接收必须遵循严格的顺序,即“先来先服务”,导致请求无法并行处理,形成串行队列。
  • 无优先排序:队列中的请求不分轻重缓急,完全依据到达顺序决定处理时机,缺乏灵活性。
  • 单点瓶颈:一旦队首请求遭遇延迟,比如响应数据大、服务器处理慢等情况,后续所有请求即便已准备好,也只能被动等待,如同交通拥堵中后面的车辆只能跟随停滞。

后果影响:

  • 性能损耗:无辜的后续请求被迫等待,整体响应时间延长,用户体验受损。
  • 资源闲置:网络带宽和服务器处理能力在等待期间未能充分利用,资源效率低下。
  • 放大效应:网络条件不佳或服务器负载较高时,队头阻塞问题更加凸显,可能引发连锁反应,加剧服务性能下降。

因此,队头阻塞成为了限制HTTP/1.x时代Web性能提升的关键因素之一,也是推动HTTP/2引入多路复用、二进制分帧等技术革新的重要背景。

综上所述,从HTTP 1.0HTTP/2,协议的演进集中在提升性能、效率和功能性上,特别是解决了网络延迟、带宽浪费和并发处理能力的瓶颈,为现代Web应用提供了更加坚实的基础

下一篇👉: 前端开发之HTTP3

相关推荐

  1. 前端开发HTTP协议认识

    2024-06-14 20:00:05       8 阅读
  2. 前端开发HTTP3

    2024-06-14 20:00:05       7 阅读
  3. 前端开发TCP与UDP认识

    2024-06-14 20:00:05       8 阅读
  4. 前端开发计算机网络模型认识

    2024-06-14 20:00:05       8 阅读
  5. Socket.D 替代 http 协议像 Ajax 一样开发前端接口

    2024-06-14 20:00:05       42 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-14 20:00:05       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-14 20:00:05       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-14 20:00:05       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-14 20:00:05       18 阅读

热门阅读

  1. Web前端在深圳:探索技术与创新的融合之地

    2024-06-14 20:00:05       7 阅读
  2. 系统编程 - kill,alarm,read,write

    2024-06-14 20:00:05       8 阅读
  3. 学习笔记——交通安全分析04

    2024-06-14 20:00:05       7 阅读
  4. 在Android Studio中将某个文件移出Git版本管理

    2024-06-14 20:00:05       7 阅读
  5. 好用的国内镜像源

    2024-06-14 20:00:05       3 阅读
  6. 力扣刷题总结 -- 数组26

    2024-06-14 20:00:05       7 阅读
  7. Linux之history历史指令查看

    2024-06-14 20:00:05       6 阅读
  8. Leetcode:合并两个有序链表

    2024-06-14 20:00:05       7 阅读
  9. ubuntu20.04 minio 安装为服务

    2024-06-14 20:00:05       6 阅读
  10. 查看ubuntu中的分区是什么类型的

    2024-06-14 20:00:05       5 阅读
  11. 矩阵的运算:加减乘除与转置#matlab

    2024-06-14 20:00:05       4 阅读