20250111面试鸭特训营第19天

embedded/2025/1/12 17:04:09/

更多特训营笔记详见个人主页【面试鸭特训营】专栏

1. HTTP 1.0 和 2.0 有什么区别?

名称描述
HTML超文本标记语言,描述超文本
HTTP超文本传输协议,传输超文本
URI统一资源标识符,作为互联网上的唯一标识
  • HTTP 0.9

    • 最基础的HTTP版本。
    • 仅支持GET请求
    • 没有头部信息和缓存机制。
  • HTTP 1.0

    • 引入了请求头和响应头,使请求和响应更灵活,把控制数据和业务实体进行拆分,也算是一种解耦合。
    • 增加了响应状态码,请求方可以得知服务端的情况,可以区分请求出错的原因。
    • 在请求中加入了 HTTP 版本号,表明这是一种工程化的象征,便于根据版本号进行管理。
    • 引入了 Content-Type , 使得传输的数据不再限于文本,支持传输不同类型的数据,丰富了协议的载体。
    • 支持多种请求方法。
    • 但每个请求都需要单独建立TCP连接。
  • HTTP 1.1

    • 新增了连接管理(Keep-Alive),允许持久连接。
    • 支持 pipeline ,无需等待前面的请求响应,即可发送第二次请求。
    • 允许响应数据分块(chunked),即响应的时候不标明Content-Length,客户端就无法断开连接,直到收到客户端的 EOF,利于传输大文件。
    • 加入了 Host 头,当一台设备部署了多个主机,且多个域名解析是同一个 IP 时,可以通过 Host 头就可以判断要访问哪个主机。
    • 新增缓存的控制和管理。
    • 支持更丰富的请求方法,并改进了缓存控制和流量控制,但仍存在队头阻塞问题。
  • HTTP 2.0

    • 采用二进制协议,不再是纯文本,简化了整齐的复杂性,解析数据的开销更小,数据更加紧凑,减少了网络的延迟,提升了整体的吞吐量。

    • 支持一个 TCP 连接发起多请求,支持多路复用,移除了 pipeline,避免了阻塞。

    • 解决了 HTTP 队头阻塞的问题,也规避了 TCP 慢启动带来的影响。

    • 利用 HPACK 压缩头部,采用了静态表、动态表和哈夫曼编码,在客户端和服务器都维护请求头的列表,所以只需要增量和压缩过的头部信息,服务端拿到之后组装一下就能得到完整的头部信息,可以减少数据传输量。

    • 允许服务端主动推送数据,减少了请求的次数。

    • 支持多路复用、头部压缩、流量控制和服务器推送,大大提升了性能,避免了队头阻塞问题。

  • HTTP 3.0

    • 基于 QUIC 协议,使用 UDP 替代 TCP ,QUIC 通过自身实现可传输协议,进一步减少了握手延迟。
    • 在一个 QUIC 连接上可以同时传输多个请求和响应,并支持流优先级。
    • 减少了 TCP 的三次握手和 TLS 的握手时间。
    • 由于 QUIC 协议的特性,HTTP 3.0 具有更低的延迟。
    • 并加强了多路复用和流量控制的能力,几乎强制使用加密(TLS)。
特性HTTP 0.9HTTP 1.0HTTP 1.1HTTP 2.0HTTP 3.0
引入时间1991年1996年1999年2015年2020年
请求/响应模型单一请求单一响应每个请求独立使用一个 TCP 连接每个请求独立使用一个 TCP 连接(支持持久连接)多路复用,同一连接上并发多个请求和响应基于 QUIC 协议,使用 UDP 传输,支持多路复用和连接复用
头部无头部
仅支持GET请求
允许基本的请求头和响应头
头部不压缩
支持持久连接和分块传输
改进了缓存和压缩头部的功能
支持头部压缩(HPACK)
减少带宽使用
支持头部压缩(QPACK)
改进了性能和并发性
连接管理无持久连接每个请求响应对创建和关闭TCP连接引入持久连接(Keep-Alive)
减少了建立连接的次数
多路复用
允许在单一连接上并发多个请求
基于QUIC,支持多路复用
减少握手延迟,避免连接阻塞
请求方式仅支持GET请求支持多种方法如GET、POST、HEAD、PUT等支持多种方法,如GET、POST、PUT、DELETE、PATCH等支持与1.1相同的请求方法,支持流优先级和依赖关系支持与HTTP 2相同的方法,支持更快的连接建立和数据传输
流量控制引入流量控制,允许对每个连接设置最大数据量引入流量控制机制,优化带宽使用,避免拥塞使用 QUIC 协议,提供更高效的流量控制和拥塞控制
缓存机制不支持缓存控制支持基本的缓存控制头部,如Cache-Control增强的缓存控制机制,支持条件请求、ETag等不直接改变缓存机制,但由于多路复用减少了请求延迟由于使用 QUIC,缓存机制与 HTTP 2 类似,但连接复用更高效
加密支持支持 HTTPS,但不强制使用强烈推荐 HTTPS,但仍支持 HTTP强烈依赖 HTTPS,几乎所有的 HTTP 2 部署都要求加密强制使用 TLS(通过 QUIC),不支持明文 HTTP
请求/响应顺序严格的顺序(仅GET请求)严格的顺序,等待一个请求完成才能发起下一个请求支持请求和响应的顺序控制,且支持持久连接和流水线化支持请求/响应的多路复用,多个请求可以并发进行支持多路复用,优化了并发和连接复用,避免队头阻塞
队头阻塞(HOLB)存在存在,但可以通过持久连接减少一些问题依然存在,但可以通过管道化减少请求延迟避免队头阻塞,支持多个并行流避免队头阻塞,使用 QUIC 协议改善延迟和吞吐量
协议类型文本协议文本协议文本协议二进制协议基于 QUIC 的二进制协议
性能优化无(每个请求都需要一个新的TCP连接)支持持久连接(Keep-Alive)、分块传输、缓存改进支持多路复用、头部压缩、流量控制、服务器推送等基于 QUIC 协议,减少了握手延迟、加速连接建立和数据传输
服务器推送支持服务器推送,服务器可以预先推送资源支持服务器推送,增强了推送性能和资源管理

2. HTTP 2.0 和 3.0 有什么区别?

HTTP 2.0HTTP 3.0
传输层协议基于 TCP ,使用二进制分帧层实现多路复用基于 UDP ,使用 QUIC 协议,提供类似 TCP 的可靠性和多路复用
可靠性解决了队头阻塞问题,但仍受制于 TCP 的队头阻塞,尤其在更好延迟或丢包情况下通过 QUIC 协议,避免了 TCP 队头阻塞,即使在网络不稳定的情况下也能提供更好的性能
安全性使用 TLS 加密(HTTPS),但不强制要求加密默认使用 QUIC 自带的 TLS 1.3 加密,安全性更高,且强制加密
连接建立速度需要 TCP 三次握手和 TLS 握手,连接建立相对较慢QUIC 集成了连接建立和加密握手,连接建立速度更快,尤其在初次连接时

3. HTTP 和 HTTPS 有什么区别?

HTTPHTTPS
数据传输安全性数据以明文传输,容易被窃听篡改通过 SSL/TLS 协议对数据进行加密传输,提供数据机密性和完整性保障
端口号默认使用端口80默认使用端口443
性能无加密过程,连接建立速度稍快基于 HTTP 又加上了 SSL 或 TLS 协议来实现加密传输,加解密过程增加了计算开销,握手时间较长,但现代硬件和协议优化已使性能差距减小
SEO 影响搜索引擎一般会降低未加密站点的排名搜索引擎更倾向于优先展示 HTTPS 网站

http://www.ppmy.cn/embedded/153335.html

相关文章

ios越狱脚本巨魔商店安装教程

使用爱思助手安装 安装爱思助手:在电脑上安装 iTunes 和爱思助手,并使用 Apple ID 登录2。 IPA 签名:打开爱思助手,选择工具箱中的 IPA 签名。点击添加 IPA 文件,选择下载的 TrollInstallerX.ipa 文件。选择使用 Apple…

Jenkins使用入门

Jenkins输出hello world Jenkins是一个自动化构建工具,可以理解为可视化的自动脚本工具,类似于提供了一个可视化界面完成Linux下shell脚本的执行工作。为了学习一下Jenkins如何使用,下面执行一个简单的hello world打印任务学习相关流程。 接…

Python入门教程 —— 文件操作

1.文件的打开和关闭 想一想: 如果想用word编写一份简历,应该有哪些流程呢? 打开word软件,新建一个word文件写入个人简历信息保存文件关闭word软件同样,在操作文件的整体过程与使用word编写一份简历的过程是很相似的 打开文件,或者新建立一个文件读/写数据关闭文件打开文…

2025新年源码免费送

2025很开门很开门的源码免费传递。不需要馒头就能获取4套大开门源码。 听泉偷宝,又进来偷我源码啦👊👊👊。欢迎偷源码 🔥🔥🔥 获取免费源码以及更多源码,可以私信联系我 我们常常…

爬虫基础之爬取某基金网站+数据分析

声明: 本案例仅供学习参考使用,任何不法的活动均与本作者无关 网站:天天基金网(1234567.com.cn) --首批独立基金销售机构-- 东方财富网旗下基金平台! 本案例所需要的模块: 1.requests 2.re(内置) 3.pandas 4.pyecharts 其他均需要 p…

彩漩科技入选2024AIGC赋能行业创新引领者及AI出海先锋

2024 年 12 月 26 日至 27 日,由中国产业海外发展协会指导、极新主办、前海香港科技青年之家与粤港澳大湾区青年创新创业中心联合主办的「重度垂直 2024 极新 AIGC 峰会」在深圳、香港两地隆重举行。彩漩科技荣登《2024 AIGC 赋能行业创新引领者消费 TOP20》和《20…

智元机器人完成 1000 台通用具身机器人下线

2025 年 1 月 6 日,智元机器人宣布其量产的第 1000 台通用具身机器人正式下线245。此次下线的机器人中,双足人形机器人 731 套,型号为远征 A2、灵犀 X1;轮式通用机器人 269 套,型号为远征 A2-D、A2-W57。 智元机器人位…

树的模拟实现

一.链式前向星 所谓链式前向星,就是用链表的方式实现树。其中的链表是用数组模拟实现的链表。 首先我们需要创建一个足够大的数组h,作为所有结点的哨兵位。创建两个足够大的数组e和ne,一个作为数据域,一个作为指针域。创建一个变…