HTTP的类别和发展

HTTP/1.0:引入头部、多种请求方法和非持久连接。
HTTP/1.1:默认持久连接、管道化、增强缓存控制和分块传输编码。
HTTP/2:二进制协议、多路复用、头部压缩和服务器推送。
HTTP/3:基于 QUIC 的 UDP 协议、更快的连接建立、内置加密和改进的多路复用。

HTTP/1.0

发布年份:1996年
特征:
引入了请求和响应的 HTTP 头部。
支持多种请求方法(如 GET、POST、HEAD)。
支持内容类型(Content-Type)和状态码(Status Code)。
默认非持久连接,但可以通过 Connection: keep-alive 头部实现持久连接。
支持代理和缓存。

HTTP/1.1

发布年份:1997年(RFC 2068),1999年(RFC 2616)
特征:
持久连接是默认行为,允许多个请求和响应复用同一个连接。
支持管道化(Pipelining),允许在一个连接上并行发送多个请求,而无需等待响应。
增强了缓存控制,增加了更多缓存相关的头部。
支持分块传输编码(Chunked Transfer Encoding),可以在传输大文件时逐块发送数据。
添加了更多的请求方法(如 PUT、DELETE、OPTIONS)。
改进了对代理的支持,包括连接的隧道化(Tunneling)。
添加了 Host 头部,使得在同一个 IP 地址上托管多个域名成为可能。

HTTP/2

发布年份:2015年(RFC 7540)
特征:
二进制协议代替了文本协议,更加高效和可靠。
多路复用,允许在一个 TCP 连接上同时发送多个请求和响应,避免了 HTTP/1.x 的队头阻塞问题。
头部压缩(HPACK),减少了传输的头部大小,提高了效率。
服务器推送(Server Push),服务器可以主动向客户端推送资源而无需客户端先请求。
流量优先级控制,客户端可以为不同的请求分配优先级。

HTTP/3

发布年份:2022年(RFC 9114)
特征:
基于 UDP 的 QUIC 协议,取代了基于 TCP 的传输方式。
更快的连接建立时间,通过减少握手次数来减少延迟。
内置加密,默认集成了 TLS,确保传输的安全性。
改进的多路复用和丢包恢复机制,进一步减少了延迟。
解决了 TCP 的队头阻塞问题,通过 QUIC 的设计更高效地处理数据流。

HTTPS 版本与 HTTP 版本的对应关系:所有的 HTTPS 都是通过在 HTTP 协议上加上 TLS(传输层安全性)来实现的

HTTPS/1.0:

对应 HTTP/1.0。
使用 SSL/TLS 对 HTTP/1.0 请求和响应进行加密。

HTTPS/1.1:

对应 HTTP/1.1。
使用 SSL/TLS 对 HTTP/1.1 请求和响应进行加密。
默认持久连接、管道化等特性也在加密后继续使用。

HTTPS/2:

对应 HTTP/2。
使用 SSL/TLS 对 HTTP/2 请求和响应进行加密。
HTTP/2 的所有特性(如二进制协议、多路复用、头部压缩、服务器推送等)在加密后继续使用。
HTTP/2 通常强制要求使用加密连接(即必须使用 HTTPS)。

HTTPS/3:

对应 HTTP/3。
基于 QUIC 协议而不是 TCP。
使用 TLS 对 HTTP/3 请求和响应进行加密。
HTTP/3 的所有特性(如基于 UDP 的快速连接建立、改进的多路复用和丢包恢复机制等)在加密后继续使用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/32578.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Eclipse 工作空间:深入解析与高效使用

Eclipse 工作空间:深入解析与高效使用 Eclipse 是一款广受欢迎的集成开发环境(IDE),它为各种编程语言提供了强大的开发工具。在 Eclipse 中,工作空间(Workspace)是一个核心概念,它代…

【Mac】KeyKey — Typing Practice for mac软件介绍及安装

软件介绍 KeyKey 是一款为 macOS 设计的盲打练习软件,旨在帮助用户提高打字速度和准确性。它通过提供多种练习模式和实时反馈,使用户能够逐渐掌握触摸打字技能。以下是 KeyKey 的主要功能和特点: 主要功能和特点 多语言支持: …

python---OpenCv(二),背景分离方法较有意思

目录 边界矩形 旋转矩形(最小外接矩形): 计算轮廓 找4个点的坐标 把浮点型转为Int 画轮廓 边界矩形--(最大外接矩形) 转灰度 找轮廓 找顶点 画矩形 显示 背景分离方法(这个很好玩,可以识别在动的物体) 边…

泛微E9与金蝶云星空ERP的无缝集成案例详解(包括接口与字段)

业务系统现状 背景介绍 泛微E9和金蝶云星空ERP是两款广泛应用与企业管理的信息系统,分别在移动办公自动化和企业资源计划管理领域占据重要地位。然而企业在使用这些系统时往往面临着信息孤岛和系统孤立的问题,导致数据无法在不系统之间高效流转共享。 当…

rust函数指针和闭包异同探索随笔

//rust需要在编译时确定某个类型的值究竟会占据多少内存,而且同一类型的所有值都必须使用相同大小的内存,否则编译无法进行。 //对于DST动态大小类型在编译器期间无法得知其确切大小,所以直接定义此种类型的变量,rust编译无法通过…

qml:导入B站Up主的FluentUI插件

文章目录 文章介绍如何加载1、下载代码2、官方文档和组件介绍 运行FluentUI新建自己的qml项目,并导入FluentUI调用组件,展示效果图 文章介绍 up主“会磨刀的小猪”模仿微软Fluent风格写的界面,可以理解为用qt和qml写出的win10/win11风格的界…

Ubuntu 之Glade图形化设计器

演示环境说明:本机使用Windows 11 家庭版本搭载 Ubuntu 22.04.4 LTS 子系统,同时并安装Ubuntu桌面虚拟化软件XLaunch。 如果没有搭建好上述问题,请参考:windows11子系统Ubuntu 22.04.4子安装图形化界面 Glade是什么?…

im即时通讯软件系统,私有化部署国产化信创适配安全可控

私有化部署IM即时通讯软件系统是许多企业为了确保数据安全、控制隐私保护、提升灵活性而考虑的重要选择之一。信创适配安全可控是企业在私有化部署IM即时通讯软件系统时需要关注的关键点。本文将探讨私有化部署IM即时通讯软件系统的意义、信创适配的重要性,以及如何…

使用Vercel 搭建自己的Dashy导航页

背景 Dashy 是一个开源的自托管导航页面配置服务,它具有易于使用的可视化编辑器、状态检查、小工具和主题等功能。用户可以利用 Dashy 将自己常用的一些网站聚合起来,形成一个个性化的导航页面。 同类的竞品还有Heimdall, Flare 等。 可以通过Docker 等…

OneNote 作为恶意软件分发新渠道持续增长

目前,Office 文件已经默认禁用宏代码,攻击者开始转向利用其他微软的软件产品来进行恶意 Payload 投递。默认情况下,OneNote 应用也包含在 Office 2019 和 Microsoft 365 软件中,所以 OneNote 文件越来越受到攻击者的青睐。如果有人…

(南京观海微电子)——TFT LCD压合技术

TFT-LCD TFT-LCD open cell后段制程主要指的是将驱动IC和PCB压合至液晶板上,这个制程主要由三个步骤组成: 1.ACF (Anisotropic Conductive Film)的涂布。 在液晶板需要压合驱动IC的地方涂布ACF,ACF又称异方性导电胶膜,特点是上下…

vue3 Elementplus 动态路由菜单不跳转问题

问题描述 vue3 Elementplus 使用component: () > import(/views/${item.componentPath}.vue)加载动态路由菜单不跳转, 报错 Unknown variable dynamic import: …/views/system/user/index.vue at dynamic-import-helper.js:7:96 解决 使用 使用 let modules impor…

IntelliJ IDEA 中显示或隐藏类中的方法

直接上图 左侧找到Project->右键->勾选Show Members即可显示 没有勾选的状态 勾选后的状态

模板初阶【C++】

文章目录 模板的作用模板的原理模板分为两大类——函数模板和类模板函数模板语法函数模板实例化模板函数的方式模板函数的类型转换既有函数模板又有已经实现的函数,会优先调用哪一个? 类模板语法模板类实例化对象模板类的模板参数可以有缺省值类模板中的…

如何获取特定 HIVE 库的元数据信息如其所有分区表和所有分区

如何获取特定 HIVE 库的元数据信息如其所有分区表和所有分区 1. 问题背景 有时我们需要获取特定 HIVE 库下所有分区表,或者所有分区表的所有分区,以便执行进一步的操作,比如通过 使用 HIVE 命令 MSCK REPAIR TABLE table_name sync partiti…

【计算机毕业设计】194高校学习助手微信小程序

🙊作者简介:拥有多年开发工作经验,分享技术代码帮助学生学习,独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。🌹赠送计算机毕业设计600个选题excel文件,帮助大学选题。赠送开题报告模板&#xff…

Node.js实现短链接(ShortLink):shortid、epxress让URL更简单

文章目录 一、短链接介绍二、插件介绍1、epxress2、shortid 三、实现方案1、安装依赖:2、实现原理 四、示例代码五、测试生产短链接 一、短链接介绍 短链接是指仅包含一个网址的链接形式,通俗一些就是将一个很长很复杂的的网址变成一个简短易记的链接。…

Android Gradle开发与应用 (一) : Gradle基础

目录 一、什么是Gradle? 1.1 Gradle简介 1.2 Gradle的特点 二、Gradle的安装与配置 2.1 安装Gradle 2.1.1 下载Gradle 2.1.2 解压安装包 2.1.3 配置环境变量 2.1.4 验证安装 2.2 配置Gradle 2.2.1 配置Gradle版本 2.2.2 配置Gradle脚本 三、Gradle的构建文件结构…

TCP数据包长度范围介绍

在TCP协议中,数据被分割成称为TCP数据包(TCP segment)的单元进行传输。 TCP数据包的长度没有固定的范围,它可以根据网络和应用程序的需求而变化。 一般来说,TCP数据包的长度受到以下几个因素的影响: 最大传…

有趣的 Oracle JDBC 驱动包命名问题 - ojdbc6 和 ojdbc14 哪个新?!

有趣的 Oracle JDBC 驱动包命名问题 - ojdbc6 和 ojdbc14 哪个新?! 1 背景概述 最近协助一个小兄弟排查了某作业使用 sqoop 采集 oracle 数据的失败问题,问题现象,问题原因和解决方法都挺直观,但在此过程中发现了一个有趣的 Oracle JDBC 驱…