HTTP 和 HTTPS 之间除了安全性区别外,还有哪些区别
HTTP 和 HTTPS 是两种常见的网络协议,它们都是用于在浏览器和服务器之间传输数据的。但是,它们之间也有一些重要的区别,这些区别涉及到数据的安全性、传输性能、使用成本和搜索排名等方面。本文将从以下几个方面来介绍 HTTP 和 HTTPS 的区别,本文内容大纲如下:

数据的安全性
HTTP 协议是一种明文传输协议,它不对数据进行任何加密或验证,这意味着任何人都可以在网络上截获、查看或修改 HTTP 传输的数据,这就存在很大的安全风险,尤其是对于一些敏感的信息,如用户名、密码、银行卡号、身份证号等。
HTTPS 协议是一种安全传输协议,它在 HTTP 的基础上增加了 SSL/TLS 层,SSL/TLS 是一种加密和认证技术,它可以对数据进行加密、解密、签名和验证,这样就可以保证数据的机密性、完整性和身份真实性,防止数据被第三方窃取或篡改。

图片来源 https://coolcao.com 2018/08/06/https/
如上图,HTTPS 流程包含握手和后续的数据传输,握手的目的是为了客户端与服务端协商加密算法等参数。
HTTPS 协议的工作原理大致如下:
-
客户端首次请求服务器,告诉服务器自己支持的协议版本,支持的加密算法及压缩算法,并生成一个随机数(client random)告知服务器。
客户端需要提供的信息:
支持的协议版本,如 TSL1.0 版本
客户端生成的随机数,用以稍后生成对称密钥
支持的加密算法;支持的压缩方法等
-
服务器确认双方使用的加密方法,并返回给客户端证书以及一个服务器生成的随机数(server random)
服务器需要提供的信息:
协议的版本
加密的算法
服务器生成的随机数
服务器证书
-
客户端收到证书后,首先验证证书的有效性,然后生成一个新的随机数(premaster secret),并使用数字证书中的公钥,加密这个随机数,发送给服务器。
客户端会对服务器下发的证书进行验证,验证通过后,客户端会再次生成一个随机数(premaster secret),然后使用服务器证书中的公钥进行加密,以及放一个 ChangeCipherSpec 消息即编码改变的消息,还有整个前面所有消息的 hash 值,进行服务器验证,然后用新秘钥加密一段数据一并发送到服务器,确保正式通信前无误。
-
服务器接收到加密后的随机数后,使用私钥进行解密,获取这个随机数(premaster secret)。
-
最后,服务器和客户端根据约定的加密方法,使用前面提到的三个随机数(client random, server random, premaster secret),生成对称密钥,用来加密接下来的整个对话过程。服务端用对称密钥加密响应数据传给客户端,客户端用对称密钥解密响应数据,得到明文数据。
传输性能
要讨论传输性能,需要针对不同的 HTTP 版本做说明,
HTTPS VS HTTP 1.1
在 HTTP 1.1 中,HTTP 1.1 的性能比 HTTPS 还要好一些,主要是因为 HTTPS 只是在 HTTP 1.1 协议上增加了 TLS 层,没有其他方面的修改。
增加了 TLS 层后,需要额外的加密和解密的过程,这会增加数据的处理时间和传输时间,同时也会消耗更多的 CPU 和内存资源。另外 HTTPS 协议还需要进行证书的验证和密钥的协商,这也会增加连接的建立时间。
HTTP 1.1 连接建立过程只需要进行 TCP 的三次握手,而 HTTPS 协议的连接建立过程还需要进行 SSL/TLS 的握手,这会多出至少 6 次的往返时间(RTT)。
因此,HTTPS 的连接建立时间要比 HTTP 1.1 的连接建立时间长得多。
HTTP 2 VS HTTP 1.1
HTTP 2 比起 HTTP 1.1 的性能提升就比较多了,主要有以下几点。
二进制分帧
HTTP 2 使用二进制分帧,可以减少数据的大小和格式的复杂度,提高数据的传输效率。
它主要修改了 HTTP 1.1 的报文传输格式。HTTP 1.1 以换行符作为纯文本的分隔符,而 HTTP 2 将所有传输的信息分割为更小的消息和帧,并采用二进制格式对它们编码,这些帧对应着特定数据流中的消息,他们都在一个 TCP 连接内复用。
多路复用
HTTP 2 支持多路复用,可以在一个连接上并发传输多个请求和响应,避免了队头阻塞和重复建立连接的开销。
HTTP 2 可以在共享 TCP 连接的基础上同时发送请求和响应。HTTP 消息可以被分解为独立的帧,而不破坏消息本身顺序的情况下交错发出去,在另一端根据流标识符和首部将他们重新组装起来。通过多路复用技术,可以避免 HTTP 旧版本的消息头阻塞问题,极大提高传输性能。
首部压缩
HTTP 2 支持首部压缩,可以减少数据的传输量,节省了网络的带宽。
HTTP 2 使用了 HPACK 算法来压缩头字段,这种压缩格式对传输的头字段进行编码,减少了头字段的大小。同时,在两端维护了索引表,用于记录出现过的头字段,后面在传输过程中就可以传输已经记录过的头字段的索引号,对端收到数据后就可以通过索引号找到对应的值。对比 HTTP 1.1 使用文本的形式传输消息头,HTTP 2 的首部压缩可以减少请求资源大小。
HTTP 2 缺点
说了这么多 HTTP 2 的优点,那 HTTP 2 的缺点我们也需要清楚。
-
HTTP 2 建立连接的延时:HTTP 2 仍然基于 TCP 协议,因此需要进行 TCP 的三次握手和 TLS 的握手,这会消耗一定的时间,影响数据的传输效率。
-
HTTP 2 队头阻塞没有彻底解决:HTTP 2 虽然支持多路复用,可以在一个连接上并发传输多个请求和响应,但是如果其中一个数据流发生了丢包或延迟,那么整个 TCP 连接都会受到影响,导致后续的数据流也被阻塞。
-
HTTP 2 多路复用容易超时:HTTP 2 的多路复用技术使得多个请求其实是基于同一个 TCP 连接的,那么如果某一个请求的处理时间过长,那么多个请求都可能超过客户端的超时时间,导致请求失败。
HTTP 3 VS HTTP 2
HTTP 3 相比 HTTP 2 的提升可以说是全方位的,底层的传输协议由 TCP 协议改为使用基于 UDP 协议的 QUIC 协议,在应用层实现了拥塞控制、可靠传输的特性。
优点
HTTP 3 的优点主要体现在它使用了 QUIC 协议,可以减少握手的延迟,提高连接的稳定性,支持更高效的多路复用,以及更好的适应网络变化等
缺点
HTTP 3 的缺点主要体现在它仍然存在一些兼容性和稳定性的问题,有时候甚至会比 HTTP 2 稍微慢一点。这可能是由于拥塞控制算法的不同,或者是由于网络设备和防火墙对 UDP 的限制或过滤所导致的。
大家可以看到不同 HTTP 版本之间的性能差异是很大的。HTTP 2 和 HTTP 3 都是默认建立在 HTTPS 之上的。所以如果想要更高的 HTTP 协议传输性能的话,可以使用 HTTP 2 或者 HTTP 3 协议。
使用成本
HTTP 的使用成本比起 HTTPS 而言就低的多了,主要是因为 HTTPS 协议需要申请和维护数字证书,这通常需要一定的费用,而且证书的有效期有限,需要定期更新
在业务开发中一个阿里云 HTTPS CA 的企业级证书一年的价格通常需要几千人名币.
另外,HTTPS 也需要消耗一丢丢的服务器资源,因为 TLS 层的加密和解密过程也需要 CPU 参与计算。
与之相比,HTTP 不需要申请和维护数字证书,也不需要更多的服务器资源,所以说 HTTP 协议的使用成本更低。
搜索排名
HTTPS 协议的搜索排名优于 HTTP 协议,主要是因为 HTTPS 协议可以提高用户的信任度和安全感,从而提高用户的访问量和停留时间,这些都是搜索引擎优化(SEO)的重要因素。
另外,一些主流的搜索引擎,如 Google 和百度,也明确表示,HTTPS 协议是搜索排名的一个重要权重指标,也就是说,HTTPS 网站比 HTTP 网站在搜索排名中更有优势。
HTTP 协议由于安全性较差,可能会导致用户的流失和不满,从而影响用户的访问量和停留时间,这些都会降低搜索引擎优化(SEO)的效果。而且,HTTP 协议也没有得到搜索引擎的青睐,因此,HTTP 协议的搜索排名较低。
综上所述,HTTPS 协议在安全性和搜索排名方面有明显的优势,而 HTTP 协议只是在成本控制方面会好一点。
随着互联网的发展,HTTPS 协议已经成为越来越多网站的选择,而 HTTP 协议已经逐渐被淘汰。因此,建议网站的开发者和运营者尽快将 HTTP 协议升级为 HTTPS 协议,以提高网站的安全性和竞争力。
最后
感谢大家阅读,希望能给大家提供帮助😊。
关注公众号【waynblog】每周分享技术干货、开源项目、实战经验、国外优质文章翻译等,您的关注将是我的更新动力!
相关文章:
HTTP 和 HTTPS 之间除了安全性区别外,还有哪些区别
HTTP 和 HTTPS 是两种常见的网络协议,它们都是用于在浏览器和服务器之间传输数据的。但是,它们之间也有一些重要的区别,这些区别涉及到数据的安全性、传输性能、使用成本和搜索排名等方面。本文将从以下几个方面来介绍 HTTP 和 HTTPS 的区别&…...
小内存服务器生存指南 ——SWAP 虚拟内存
人们常说,网络是服务器的生命线,没有了网络,服务器再怎么牛逼,都跑不起来。然而偏偏有这么一票的服务器,它的网络很好,CPU 也很好,就是内存有点小。他们是主机界的独行侠 —— 入门级 VPS 服务器。 前俩天买的一台 TMT 的服务器就是这个类型: 256M 内存CPU 1vCore (2.…...
Linux 内存管理中的 Buffers 和 Cached:理解和区分
引言 当涉及到 Linux 系统的内存管理时,“Buffers” 和 “Cached” 是两个经常会引起混淆的术语。这两个概念都代表了系统内存的一部分,但它们的作用和工作方式有所不同。 区别: Buffers: Buffers(缓冲区࿰…...
Linux——使用命令查看文件和文件夹数量
目录 一、相关命令参数解析二、查看当前目录下的文件数量2.1 包含子目录中的文件2.2 不包含子目录中的目录 三、查看当前目录下的文件夹个数3.1 不包含目录中的目录3.2 包含目录中的目录 四、查看当前文件夹下叫某某的文件的数量实例 五、总结 一、相关命令参数解析 "&qu…...
[蓝桥杯训练]———高精度乘法、除法
高精度乘法、除法 一、高精度乘法⭐1.1 初步理解1.1.1 高精度的定义1.1.2 为什么会有高精度1.1.3 高精度乘法的复杂度 1.2 思想讲解1.3 代码实现1.3.1 声明1.3.2 实现高精度乘法1.3.3 整体实现1.3.4 代码测试 二、高精度除法⭐2.1 初步理解2.2 思想讲解2.3 代码实现2.3.1 声明2…...
使用javascript 点击tab栏切换事件代码记录
如下图实现以下两点功能: 这里做代码记录 1. javascript 点击tab栏动态切换内容,并添加active 2. javascript 点击左右图标可以向左或者向右移动元素 第1点功能: // tab栏 <div class"left"><span class"tab act…...
零基础编程入门视频教程,零基础编程从哪学起,分享中文编程工具构件实例
零基础编程入门视频教程,零基础编程从哪学起,分享中文编程工具构件实例 1、零基础编程入门视频教程,系统化编程教程链接 https://jywxz.blog.csdn.net/article/details/134073098?spm1001.2014.3001.5502 2、零基础编程从哪学起 建议初学…...
计算机毕业设计|基于SpringBoot+MyBatis框架的电脑商城的设计与实现(订单和AOP)
计算机毕业设计|基于SpringBootMyBatis框架的电脑商城的设计与实现(订单和AOP) 该项目分析着重于设计和实现基于SpringBootMyBatis框架的电脑商城。首先,通过深入分析项目所需数据,包括用户、商品、商品类别、收藏、订单、购物车…...
【Skynet 入门实战练习】实现网关服务 | 用户代理 | RPC 协议 | 客户端
文章目录 前言网关服务RPC 协议看门狗服务代理服务客户端逻辑梳理 前言 上两章学习了如何搭建一个项目,简单实现了几个基础模块。本章节会实现基本的客户端与服务端的通信,包括网关(gate)、看门狗(watchdog࿰…...
eclipse - jee 建立项目后没有 web.xml
eclipse -- jee 建立项目后没有 web.xml 处理它的方法是,点 File - New - Dynamic Web Project , 此时起一个项目名如M4 然后next 然后next 出现如此所示:...
Miniconda虚拟环境安装(chatglm2大模型安装步骤二)
1.服务器配置 服务器系统:Centos7.9 x64 显卡:RTX3090 (24G) 2.安装环境 2.1 检查conda是否安装 输入命令:conda -V 如果显示conda 4.7.12,说明已经有不需要安装 2.2 安装Miniconda 在家目录建一个mi…...
C++学习之路(四)C++ 实现简单的待办事项列表命令行应用 - 示例代码拆分讲解
本期示例介绍: 本期示例《待办事项列表应用》展示了一个简单的任务管理系统,用户可以通过命令行界面执行添加任务、删除任务和显示任务列表等操作。 功能描述: 添加任务功能: 用户可以输入任务描述,将新的任务添加到任务列表中。…...
函数指针数组指针数组传参的本质字符指针
🚀 作者:阿辉不一般 🚀 你说呢:不服输的你,他们拿什么赢 🚀 专栏:爱上C语言 🚀作图工具:draw.io(免费开源的作图网站) 如果觉得文章对你有帮助的话,还请点赞…...
Linux swapon命令教程:如何在Linux中启用和禁用交换空间(附实例教程和注意事项)
Linux swapon命令介绍 Linux的swapon命令用于启用指定设备和文件的交换。当物理内存(RAM)达到其最大容量时,Linux使用交换空间。如果系统需要更多的内存,而RAM不足,内存中的非活动页面将被移动到交换空间。交换空间是…...
云计算领域的第三代浪潮!
根据IDC不久前公布的数据,2023年上半年中国公有云服务整体市场规模(IaaS/PaaS/SaaS)为190.1亿美元,阿里云IaaS、PaaS市场份额分别为29.9%和27.9%,都远超第二名,是无可置疑的行业领头羊。 随着人工智能(AI)…...
面试题目总结(一)
1. 谈谈数据库的乐观锁和悲观锁 乐观锁和悲观锁是数据库并发控制中常用的两种策略,用于处理多个事务同时访问和修改同一个数据时的并发冲突问题。 数据库的乐观锁是指在读取数据时,不对数据进行加锁,而是在更新数据时检查数据版本是否发生变…...
建造者设计模式
3. 建造者设计模式 3.1 原理 Builder 模式,中文翻译为建造者模式或者构建者模式,也有人叫它生成器模式。 建造者模式是用来创建一种类型的复杂对象,通过设置不同的可选参数,“定制化”地创建不同的对象。 创建者模式主要包含以…...
YOLO目标检测——垃圾检测数据集下载分享【含对应voc、coco和yolo三种格式标签】
实际项目应用:智能化垃圾分类系统、垃圾回收和处理领域的优化管理等方面数据集说明:垃圾分类检测数据集,真实场景的高质量图片数据,数据场景丰富,含报纸、蛋壳、矿泉水瓶、电池、拉链顶罐、塑料餐盒、纸质药盒、香蕉皮…...
Vue CLI的介绍【vue利器之一】
文章目录 前言Vue CLI 介绍CLICLI 服务CLI 插件后言 前言 hello world欢迎来到前端的新世界 😜当前文章系列专栏:vue.js 🐱👓博主在前端领域还有很多知识和技术需要掌握,正在不断努力填补技术短板。(如果出现错误&am…...
【学习笔记】插值之拉格朗日插值(Lagrange)
0 插值介绍 插值法是广泛应用于理论研究和工程实际的重要数值方法。用提供的部分离散的函数值来进行理论分析和设计都是极不方便的,因此希望能够用一个既能反映原函数特征,又便于计算的简单函数去近似原函数。 1 低次拉格朗日插值 定理:设…...
嵌入式裸机开发中的轻量级上下文切换方案
1. 嵌入式编程中的上下文切换挑战在裸机嵌入式开发中,中断服务程序(ISR)的设计一直是个棘手的问题。传统教科书告诉我们:中断处理必须快进快出,绝对不能执行耗时操作。但在实际项目中,我们经常遇到这样的困境——某个传感器触发中…...
C++27原子智能降级策略(Auto-Degrade Atomic Pattern):当缓存行竞争超阈值时自动切换为lock-free队列——工业级源码级实现
第一章:C27原子智能降级策略的演进动因与设计哲学C27将首次引入原子智能降级(Atomic Intelligent Fallback)机制,其核心动因源于现代异构计算环境中硬件原子指令集碎片化加剧、内存模型语义边界模糊化,以及开发者在可移…...
【仅限头部AI团队内部流通】Python智能内存策略白皮书V3.2:基于LLM驱动的动态内存预测模型实测报告
第一章:Python智能体内存管理策略安全性最佳方案概览Python智能体在高并发、长周期运行场景下面临内存泄漏、引用循环、敏感数据残留等安全风险。其内存管理机制虽以引用计数为主、辅以分代垃圾回收(GC),但默认行为不足以保障智能…...
2025届学术党必备的六大降重复率助手推荐
Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 提高人工智能生成内容即AIGC的检测难度,关键之处在于增强文本的自然特性与个性化…...
三步生成炫酷3D魔鬼面具:用快马AI快速构建交互式视觉原型
今天想和大家分享一个超实用的技巧——如何用InsCode(快马)平台快速生成3D魔鬼面具的交互式原型。作为一个经常需要做创意展示的设计师,这个工具真的帮我省去了大量开发时间。 从创意到原型的极速转换 以前做3D展示需要先建模再写代码,现在只需要在快马平…...
如何在Windows上轻松安装安卓应用?APK-Installer完整指南
如何在Windows上轻松安装安卓应用?APK-Installer完整指南 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 想在Windows电脑上直接运行安卓应用,又…...
【单片机】51单片机的晶振选择
51单片机的晶振可以是12MHz,但更多的使用11.0592MHz。因为51单片机的串口的波特率在可调模式下,通过定时器溢出来确定时间。 定时器计数采用机器周期,51单片机指令集属于CISC,可能与此有关,导致12个晶振时钟周期等于1个…...
突破3D资产生产瓶颈:Hunyuan3D-2赋能企业级内容创作的实战案例
突破3D资产生产瓶颈:Hunyuan3D-2赋能企业级内容创作的实战案例 【免费下载链接】Hunyuan3D-2 High-Resolution 3D Assets Generation with Large Scale Hunyuan3D Diffusion Models. 项目地址: https://gitcode.com/GitHub_Trending/hu/Hunyuan3D-2 Hunyuan3…...
终极指南:揭秘LIEF二进制格式识别算法的实现原理 [特殊字符]
终极指南:揭秘LIEF二进制格式识别算法的实现原理 🔍 【免费下载链接】LIEF LIEF - Library to Instrument Executable Formats (C, Python, Rust) 项目地址: https://gitcode.com/gh_mirrors/li/LIEF LIEF(Library to Instrument Exec…...
如何在React项目中实现Google Maps地点搜索:SearchBox与StandaloneSearchBox组件完全指南
如何在React项目中实现Google Maps地点搜索:SearchBox与StandaloneSearchBox组件完全指南 【免费下载链接】react-google-maps React.js Google Maps integration component 项目地址: https://gitcode.com/gh_mirrors/re/react-google-maps 想要为你的React…...
