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

news2024/11/23 4:25:58

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://www.coloradmin.cn/o/1259036.html

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

相关文章

loadrunner-导入Fiddler数据包方法

文章目录 一、Fiddler获取相关接口,保存为.saz格式二、在loadrunner12中新建脚本,选择协议为HTTP/HTML,然后在录制选项中录制模式选为捕获的流量文件分析,然后选择刚保存的saz文件三、生成完脚本后,点击“关联”可自动…

安防视频监控/磁盘阵列/集中云存储平台EasyCVR设备录像保活不生效原因是什么?该如何解决?

安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台可拓展性强、视频能力灵活、部署轻快,可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等,以及支持厂家私有协议与SDK接入,包括海康Ehome、海大宇等设备的SDK等。平台既具备传统安…

c语言实现猴子选大王问题

办法如下: 猴子按1,2…n编号围坐一圈, 从第一只开始按1,2,…m报数, 报m的退出, 从下一只开始, 继续循环报数, 剩下的最后一只猴子就是大王, 编程输出大王的序号。 代码如下&#xff1a; #define _CRT_SECURE_NO_WARNINGS #include<stdio.h>int strarray(int* p, int m…

Goby新功能大揭秘:低感知扫描模式,让你的挖洞之旅更丝滑!

​​0x01 前言 在上一篇文章中&#xff0c;详细介绍了如何利用Goby最新的插件成功打通了全自动化渗透测试流程&#xff0c;并且初步还取得了不错的成绩&#xff0c;很多师傅们都纷纷表示想体验一波。由于账号的限制&#xff0c;暂时还不能第一时间体验。但&#xff01;还记得上…

如何使用Portal产品配置信息展现

门户集成平台可以根据用户的商业需求&#xff0c;以及用户使用特点和所处角色的不同&#xff0c;形成的个性化的应用结构&#xff0c;Portal门户集成平台是一种用于构建企业级门户网站的软件平台&#xff0c;它提供了一个统一的入口&#xff0c;将各种应用程序、信息资源和服务…

DGL中NN模块的构造函数

上图引用自&#xff1a;dgl用户文档第三章(nn模块编写&#xff09; """构造函数完成以下几个任务&#xff1a; 1、设置选项。 2、注册可学习的参数或者子模块。 3、初始化参数。""" import torch.nn as nn from dgl.utils import expand_as_pai…

使用opencv实现图像滤波

1 图像滤波介绍 滤波是信号和图像处理中的基本任务之一&#xff0c;其旨在有选择地提取图像的某些特征&#xff0c;可以用于在给定应用程序的上下文中传达重要信息&#xff0c;例如&#xff0c;去除图像中的噪声、提取所需的视觉特征、图像重采样等。 1.1 图像滤波理论 图像…

【论文解读】基于生成式面部先验的真实世界盲脸修复

论文地址&#xff1a;https://arxiv.org/pdf/2101.04061.pdf 代码地址&#xff1a;https://github.com/TencentARC/GFPGAN 图片解释&#xff1a; 与最先进的面部修复方法的比较&#xff1a;HiFaceGAN [67]、DFDNet [44]、Wan 等人。[61] 和 PULSE [52] 在真实世界的低质量图像…

final关键字-Java

final关键字 一、使用场景1、当不希望类被继承时&#xff0c;可以用final修饰。2、当不希望父类的某个方法被子类覆盖/重写(override)时&#xff0c;可以用final修饰。3、当不希望类的的某个属性的值被修改&#xff0c;可以用final修饰。4、当不希望某个局部变量被修改&#xf…

CSGO搬砖如何选品?选品软件和教程靠谱吗?

说到CSGO搬砖项目&#xff0c;目前平台最火的就是CSGO游戏搬砖。在CSGO搬砖项目中&#xff0c;选品是至关重要的环节&#xff0c;直接影响到利润。而选品软件可以帮助我们更快地了解市场变化、计算成本利润等关键信息&#xff0c;提高选品的效率和准确性。可靠的选品软件还能够…

技术人员都了解,动态代理IP和静态代理IP的区别及适用的场景

动态代理IP和静态代理IP是两种常见的代理IP技术&#xff0c;它们在网络通信中起到了重要的作用。虽然它们都可以用于隐蔽真实的IP地址&#xff0c;但在实际应用中有一些区别和适用的场景。本文将介绍这两种代理IP的区别以及它们适用于哪些场景。 一、静态代理IP 静态代理IP是指…

Java的threadd常用方法

常用API 给当前线程命名 主线程 package com.itheima.d2;public class ThreadTest1 {public static void main(String[] args) {Thread t1 new MyThread("子线程1");//t1.setName("子线程1");t1.start();System.out.println(t1.getName());//获得子线程…

eutil.dll文件缺失修复全指南,教你快速修复eutil.dll

eutil.dll缺失了要怎么办&#xff1f;eutil.dll是一种常见的动态链接库&#xff08;DynamicLinkLibrary&#xff0c;DLL&#xff09;文件&#xff0c;它在Windows操作系统中发挥着重要作用。DLL文件允许程序共享代码以执行诸如打印或连接网络之类的功能。这不仅节省了系统资源&…

浅谈API自动化测试

前言 本文主要针对API测试的概念及API测试在Choerodon中的实践展开。 API&#xff08;应用程序编程接口&#xff09;测试是一种软件测试&#xff0c;可以直接在API级别执行验证。它是集成测试的一部分&#xff0c;它确定API是否满足测试人员对功能&#xff0c;可靠性&#xf…

【第五节:微信小程序 小程序UI组件B】微信小程序入门,以思维导图的方式展开5

上图若是看不清&#xff0c;可私信给发大图哈 5、小程序UI组件B 表单form button 按钮 size String default 有效值 default, mini type String default 按钮的样式类型&#xff0c;有效值 primary, default, warn plain Bo…

[算法总结] - 蓄水池采样算法

问题描述 在长度为N的数组中&#xff0c;随机等概率选取K个元素&#xff0c;如何实现这个随机算法。 思路很简单&#xff0c;生成一个[0, N]的随机数index&#xff0c;然后返回index上的数值即可。 但是&#xff0c;如果输入是一个长度未知的数组比如stream&#xff0c;先遍历…

IDEA中Tomcat启动web项目

1.首先【Run】-->【Edit Configurations】&#xff0c;进入对应功能界面 2.点击左上角【】&#xff0c;选择Tomcat Server -->Local 3.Name输入自己中意的&#xff0c;下面两个port&#xff0c;保证没被占用就行 4.切到【Deployment】页签&#xff0c;点击【】&#xff…

elk日志分析系统:

elk日志分析系统: elk是一套完整的日志集中处理方案&#xff0c;由三个开源的软件简称组成&#xff1b; E:Easticsearch 简称ES是一个开源的&#xff0c;分布式的存储检索引擎&#xff0c;&#xff08;索引型的非关系数据库&#xff09;存储日志 由java代码开发的&#xff0…

【Java Spring】SpringBoot 五大类注解

文章目录 Spring Boot 注解简介1、五大类注解的作用2、五大类注解的关系3、通过注解获取对象4、获取Bean对象名规则解析 Spring Boot 注解简介 Spring Boot的核心就是注解。Spring Boot通过各种组合注解&#xff0c;极大地简化了Spring项目的搭建和开发。五大类注解是Spring B…

用泰勒展开线性化

在点附近做泰勒展开&#xff1a; 当和很接近的时候&#xff0c;很小&#xff0c;更小&#xff0c;所以可以忽略及后面的高阶项&#xff0c;得到 因为、都是常数&#xff0c;所以等式右边是 x的线性方程&#xff0c;在点附近进行了线性化。 举个例子&#xff1a; 假设 那么做一…