当前位置: 首页 > news >正文

HTTP 和 HTTPS 之间除了安全性区别外,还有哪些区别

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

数据的安全性

HTTP 协议是一种明文传输协议,它不对数据进行任何加密或验证,这意味着任何人都可以在网络上截获、查看或修改 HTTP 传输的数据,这就存在很大的安全风险,尤其是对于一些敏感的信息,如用户名、密码、银行卡号、身份证号等。

HTTPS 协议是一种安全传输协议,它在 HTTP 的基础上增加了 SSL/TLS 层,SSL/TLS 是一种加密和认证技术,它可以对数据进行加密、解密、签名和验证,这样就可以保证数据的机密性、完整性和身份真实性,防止数据被第三方窃取或篡改。

图片来源 https://coolcao.com 2018/08/06/https/

图片来源 https://coolcao.com 2018/08/06/https/

如上图,HTTPS 流程包含握手和后续的数据传输,握手的目的是为了客户端与服务端协商加密算法等参数。

HTTPS 协议的工作原理大致如下:

  1. 客户端首次请求服务器,告诉服务器自己支持的协议版本,支持的加密算法及压缩算法,并生成一个随机数(client random)告知服务器。

客户端需要提供的信息:

  • 支持的协议版本,如 TSL1.0 版本

  • 客户端生成的随机数,用以稍后生成对称密钥

  • 支持的加密算法;支持的压缩方法等

  1. 服务器确认双方使用的加密方法,并返回给客户端证书以及一个服务器生成的随机数(server random)

服务器需要提供的信息:

  • 协议的版本

  • 加密的算法

  • 服务器生成的随机数

  • 服务器证书

  1. 客户端收到证书后,首先验证证书的有效性,然后生成一个新的随机数(premaster secret),并使用数字证书中的公钥,加密这个随机数,发送给服务器。

客户端会对服务器下发的证书进行验证,验证通过后,客户端会再次生成一个随机数(premaster secret),然后使用服务器证书中的公钥进行加密,以及放一个 ChangeCipherSpec 消息即编码改变的消息,还有整个前面所有消息的 hash 值,进行服务器验证,然后用新秘钥加密一段数据一并发送到服务器,确保正式通信前无误。

  1. 服务器接收到加密后的随机数后,使用私钥进行解密,获取这个随机数(premaster secret)。

  2. 最后,服务器和客户端根据约定的加密方法,使用前面提到的三个随机数(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(缓冲区&#xff0…...

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栏切换事件代码记录

如下图实现以下两点功能&#xff1a; 这里做代码记录 1. javascript 点击tab栏动态切换内容&#xff0c;并添加active 2. javascript 点击左右图标可以向左或者向右移动元素 第1点功能&#xff1a; // tab栏 <div class"left"><span class"tab act…...

零基础编程入门视频教程,零基础编程从哪学起,分享中文编程工具构件实例

零基础编程入门视频教程&#xff0c;零基础编程从哪学起&#xff0c;分享中文编程工具构件实例 1、零基础编程入门视频教程&#xff0c;系统化编程教程链接 https://jywxz.blog.csdn.net/article/details/134073098?spm1001.2014.3001.5502 2、零基础编程从哪学起 建议初学…...

计算机毕业设计|基于SpringBoot+MyBatis框架的电脑商城的设计与实现(订单和AOP)

计算机毕业设计|基于SpringBootMyBatis框架的电脑商城的设计与实现&#xff08;订单和AOP&#xff09; 该项目分析着重于设计和实现基于SpringBootMyBatis框架的电脑商城。首先&#xff0c;通过深入分析项目所需数据&#xff0c;包括用户、商品、商品类别、收藏、订单、购物车…...

【Skynet 入门实战练习】实现网关服务 | 用户代理 | RPC 协议 | 客户端

文章目录 前言网关服务RPC 协议看门狗服务代理服务客户端逻辑梳理 前言 上两章学习了如何搭建一个项目&#xff0c;简单实现了几个基础模块。本章节会实现基本的客户端与服务端的通信&#xff0c;包括网关&#xff08;gate&#xff09;、看门狗&#xff08;watchdog&#xff0…...

eclipse - jee 建立项目后没有 web.xml

eclipse -- jee 建立项目后没有 web.xml 处理它的方法是&#xff0c;点 File - New - Dynamic Web Project , 此时起一个项目名如M4 然后next 然后next 出现如此所示:...

Miniconda虚拟环境安装(chatglm2大模型安装步骤二)

1.服务器配置 服务器系统&#xff1a;Centos7.9 x64 显卡&#xff1a;RTX3090 &#xff08;24G&#xff09; 2.安装环境 2.1 检查conda是否安装 输入命令&#xff1a;conda -V 如果显示conda 4.7.12&#xff0c;说明已经有不需要安装 2.2 安装Miniconda 在家目录建一个mi…...

C++学习之路(四)C++ 实现简单的待办事项列表命令行应用 - 示例代码拆分讲解

本期示例介绍: 本期示例《待办事项列表应用》展示了一个简单的任务管理系统&#xff0c;用户可以通过命令行界面执行添加任务、删除任务和显示任务列表等操作。 功能描述&#xff1a; 添加任务功能&#xff1a; 用户可以输入任务描述&#xff0c;将新的任务添加到任务列表中。…...

函数指针数组指针数组传参的本质字符指针

&#x1f680; 作者&#xff1a;阿辉不一般 &#x1f680; 你说呢&#xff1a;不服输的你&#xff0c;他们拿什么赢 &#x1f680; 专栏&#xff1a;爱上C语言 &#x1f680;作图工具&#xff1a;draw.io(免费开源的作图网站) 如果觉得文章对你有帮助的话&#xff0c;还请点赞…...

Linux swapon命令教程:如何在Linux中启用和禁用交换空间(附实例教程和注意事项)

Linux swapon命令介绍 Linux的swapon命令用于启用指定设备和文件的交换。当物理内存&#xff08;RAM&#xff09;达到其最大容量时&#xff0c;Linux使用交换空间。如果系统需要更多的内存&#xff0c;而RAM不足&#xff0c;内存中的非活动页面将被移动到交换空间。交换空间是…...

云计算领域的第三代浪潮!

根据IDC不久前公布的数据&#xff0c;2023年上半年中国公有云服务整体市场规模(IaaS/PaaS/SaaS)为190.1亿美元&#xff0c;阿里云IaaS、PaaS市场份额分别为29.9%和27.9%&#xff0c;都远超第二名&#xff0c;是无可置疑的行业领头羊。 随着人工智能&#xff08;AI&#xff09;…...

面试题目总结(一)

1. 谈谈数据库的乐观锁和悲观锁 乐观锁和悲观锁是数据库并发控制中常用的两种策略&#xff0c;用于处理多个事务同时访问和修改同一个数据时的并发冲突问题。 数据库的乐观锁是指在读取数据时&#xff0c;不对数据进行加锁&#xff0c;而是在更新数据时检查数据版本是否发生变…...

建造者设计模式

3. 建造者设计模式 3.1 原理 Builder 模式&#xff0c;中文翻译为建造者模式或者构建者模式&#xff0c;也有人叫它生成器模式。 建造者模式是用来创建一种类型的复杂对象&#xff0c;通过设置不同的可选参数&#xff0c;“定制化”地创建不同的对象。 创建者模式主要包含以…...

YOLO目标检测——垃圾检测数据集下载分享【含对应voc、coco和yolo三种格式标签】

实际项目应用&#xff1a;智能化垃圾分类系统、垃圾回收和处理领域的优化管理等方面数据集说明&#xff1a;垃圾分类检测数据集&#xff0c;真实场景的高质量图片数据&#xff0c;数据场景丰富&#xff0c;含报纸、蛋壳、矿泉水瓶、电池、拉链顶罐、塑料餐盒、纸质药盒、香蕉皮…...

Vue CLI的介绍【vue利器之一】

文章目录 前言Vue CLI 介绍CLICLI 服务CLI 插件后言 前言 hello world欢迎来到前端的新世界 &#x1f61c;当前文章系列专栏&#xff1a;vue.js &#x1f431;‍&#x1f453;博主在前端领域还有很多知识和技术需要掌握&#xff0c;正在不断努力填补技术短板。(如果出现错误&am…...

【学习笔记】插值之拉格朗日插值(Lagrange)

0 插值介绍 插值法是广泛应用于理论研究和工程实际的重要数值方法。用提供的部分离散的函数值来进行理论分析和设计都是极不方便的&#xff0c;因此希望能够用一个既能反映原函数特征&#xff0c;又便于计算的简单函数去近似原函数。 1 低次拉格朗日插值 定理&#xff1a;设…...

【WiFi帧结构】

文章目录 帧结构MAC头部管理帧 帧结构 Wi-Fi的帧分为三部分组成&#xff1a;MAC头部frame bodyFCS&#xff0c;其中MAC是固定格式的&#xff0c;frame body是可变长度。 MAC头部有frame control&#xff0c;duration&#xff0c;address1&#xff0c;address2&#xff0c;addre…...

Python爬虫(一):爬虫伪装

一、网站防爬机制概述 在当今互联网环境中&#xff0c;具有一定规模或盈利性质的网站几乎都实施了各种防爬措施。这些措施主要分为两大类&#xff1a; 身份验证机制&#xff1a;直接将未经授权的爬虫阻挡在外反爬技术体系&#xff1a;通过各种技术手段增加爬虫获取数据的难度…...

在鸿蒙HarmonyOS 5中使用DevEco Studio实现录音机应用

1. 项目配置与权限设置 1.1 配置module.json5 {"module": {"requestPermissions": [{"name": "ohos.permission.MICROPHONE","reason": "录音需要麦克风权限"},{"name": "ohos.permission.WRITE…...

Swagger和OpenApi的前世今生

Swagger与OpenAPI的关系演进是API标准化进程中的重要篇章&#xff0c;二者共同塑造了现代RESTful API的开发范式。 本期就扒一扒其技术演进的关键节点与核心逻辑&#xff1a; &#x1f504; 一、起源与初创期&#xff1a;Swagger的诞生&#xff08;2010-2014&#xff09; 核心…...

Maven 概述、安装、配置、仓库、私服详解

目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

AI,如何重构理解、匹配与决策?

AI 时代&#xff0c;我们如何理解消费&#xff1f; 作者&#xff5c;王彬 封面&#xff5c;Unplash 人们通过信息理解世界。 曾几何时&#xff0c;PC 与移动互联网重塑了人们的购物路径&#xff1a;信息变得唾手可得&#xff0c;商品决策变得高度依赖内容。 但 AI 时代的来…...

三分算法与DeepSeek辅助证明是单峰函数

前置 单峰函数有唯一的最大值&#xff0c;最大值左侧的数值严格单调递增&#xff0c;最大值右侧的数值严格单调递减。 单谷函数有唯一的最小值&#xff0c;最小值左侧的数值严格单调递减&#xff0c;最小值右侧的数值严格单调递增。 三分的本质 三分和二分一样都是通过不断缩…...

从面试角度回答Android中ContentProvider启动原理

Android中ContentProvider原理的面试角度解析&#xff0c;分为​​已启动​​和​​未启动​​两种场景&#xff1a; 一、ContentProvider已启动的情况 1. ​​核心流程​​ ​​触发条件​​&#xff1a;当其他组件&#xff08;如Activity、Service&#xff09;通过ContentR…...

elementUI点击浏览table所选行数据查看文档

项目场景&#xff1a; table按照要求特定的数据变成按钮可以点击 解决方案&#xff1a; <el-table-columnprop"mlname"label"名称"align"center"width"180"><template slot-scope"scope"><el-buttonv-if&qu…...

uniapp 实现腾讯云IM群文件上传下载功能

UniApp 集成腾讯云IM实现群文件上传下载功能全攻略 一、功能背景与技术选型 在团队协作场景中&#xff0c;群文件共享是核心需求之一。本文将介绍如何基于腾讯云IMCOS&#xff0c;在uniapp中实现&#xff1a; 群内文件上传/下载文件元数据管理下载进度追踪跨平台文件预览 二…...