HTTP与HTTPS的区别,HTTPS提高性能,HTTP2的新特性

news2025/1/16 16:06:59

目录

  • 数据传输区别
    • 安全性区别
  • 端口区别
  • 交互区别
  • HTTPS的工作流程
  • HTTPS的实现原理
    • 机密性
    • 完整性
    • 身份认证和不可否认
  • HTTPS 使用流程
  • HTTPS性能优化点
  • HTTP2的特性
      • 向下兼容HTTP/1
      • 头部压缩
      • 二进制
      • 虚拟流、多路复用

数据传输区别

http也相当于HTTP协议,是超文本传输协议的意思,是明文传输。属于你请求的数据,不加密,直接请求服务端。

https 是http的升级,在应用层和传输层加了一层SSL校验层,对所传输的数据进行加密,进行密文传输。

安全性区别

HTTPSHTTP
安全性
数据传输加密传输明文传输
认证身份认证:CA证书身份不确定,数据可能被第三方获取
完整性数据加密保证完整性数据可能被拦截篡改
正确性不可否认,无法修改无法保证数据的真实性

端口区别

HTTPSHTTP
端口44380
灵活性
访问速度
经济适用收费免费

交互区别

HTTP---->三次握手,流程为
客户端对服务端说,我要连接你;
服务端对客户端说,我收到了;
客户端往服务端发送数据;
这样http的一个交互流程就完成了

HTTPS---->四次握手,流程为
客户端对服务端说,我要连接你;
服务端我收到了,并且把公钥返回给客户端;
客户端拿着公钥,把自己的公钥加密,在发送给服务端;
服务端收到公钥,进行后续交互。

流程对比
在这里插入图片描述

HTTPS的工作流程

主要是说对称加密和非对称加密,共同使用,作为一个混合加密使用。

  1. Client发起请求(端口443)
  2. Server返回公钥证书(Server中有公钥和私钥,只发送公钥给Client)
  3. Client验证证书
  4. Client生成对称密钥,用公钥加密后发给Server
  5. Server使用私钥解密,得到对称密钥
  6. C/S双方使用对称密钥:加密明文并发送,解密密文得到明文

混合加密流程图:
在这里插入图片描述

HTTPS的实现原理

HTTPS实现原理包括:

  • 机密性

  • 完整性

  • 身份认证

  • 不可否认

机密性

使用混合加密:对称加密和非对称加密

非对称加密:公钥和私钥
   安全传输对称秘钥
   常见算法:RSA,ECC
   常见算法:效率慢,速度低

完整性

完整性:传输过程中数据可能被修改

发送一个与原文等价的数字摘要
   摘要算法:一种压缩算法(hash函数)
   任意长度 -> 固定长度摘要字符串,指纹

单向加密算法,无法解密,不能逆推原文
  常见算法:SHA-2
  SHA224(28B)、SHA256(32B)、SHA384(48B)

哈希冲突的解决:
  再哈希法、链地址法、开放寻址法

身份认证和不可否认

数字签名:防止客户端被伪装(可信第三方提供的一对密钥(公/私)加密客户端信息)

私钥加密,公钥解密
    签名:使用私钥加密摘要,得到数字签名
    验证签名:使用公钥解密签名,得到摘要原文
    对摘要加密,而非原文,降低运算量。压缩后再加密。

数字证书和CA:可信第三方
数字证书:包含序列号、用途、颁发者、有效时间等,打包后生成签名
证书等级:DV、OV、EV
根证书/自签名证书:Root CA

HTTPS 使用流程

  • 在服务端生成ca证书
        生成私钥:key文件
        创建待签名证书:csr文件
  • CA机构对证书签名
        生成.crt文件
  • 配置应用服务器
        可在nginx中配置,加入ssl认证
  • 在系统中安装证书

HTTPS性能优化点

  • 协议优化
       TLS1.2->TLS1.3协议升级
       密钥交换:ECDHE(椭圆曲线:x25519 )
       对称加密:AES_128_GCM
        算法优化
  • 证书优化
       服务器证书:RSA->ECDSA
       吊销机制:定期吊销CRL->在线状态OCSP
  • 会话复用
       Session ID、Session Ticket 认证后使用UDP,安全要考虑到。
       PSK(0-RTT):Pre-shared Key,   PSK是预共享密钥,是用于验证 L2TP/IPSec 连接的 Unicode 字符串。可以配置“路由和远程访问”来验证支持预共享密钥的 VPN 连接。
  • 硬件
       更快的CPU
       SSL加速卡
       SSL加速服务器
  • 软件升级
       Linux:内核升级4.x
       Nginx:1.16+
       OpenSSL:1.1.0/1.1.1

HTTP2的特性

向下兼容HTTP/1

HTTP/2把HTTP分解成为了“语义”“语法”两部分,其中语义层不做改动,与HTTP完全一致(比如说请求方法,URI,状态码,头字段等概念保留不变)。

特别要说的是,与 HTTPS 不同,HTTP/2 没有在 URI 里引入新的协议名,仍然用“http”表示明文协议,用“https”表示加密协议。

头部压缩

HTTP 1.x 的头部带有大量信息用于描述这次通信的的资源、浏览器属性、cookie等,而且每次都要重复发送。HTTP/2 使用encoder来减少需要传输的header大小。即:
HTTP/2在客户端和服务器端使用“首部表”来跟踪和存储之前发送的 键-值 对,对于相同的数据,不再通过每次的请求和响应发送;
首部表在HTTP/2的连接存续期内始终存在,由客户端和服务器共同渐进更新;
每个新的首部 键-值 对要么被追加到当前表的末尾,要么替换表中之前的值。
简单理解:
请求1 发送了所有的头部字段,请求2 则只需要发送差异数据就行了,这样可以减少冗余数据,降低开销。

二进制

HTTP/2 采用二进制格式传输数据,而非 HTTP 1.x 的文本格式。HTTP/2将所有传输信息分割为更小的消息和帧,并对它们采用二进制格式的编码将其封装,新增的二进制分帧层同时也能够保证 http 的各种动词,方法,首部都不受影响,兼容上一代http标准。其中,HTTP 1.X中的首部信息 header 封装到 Headers 帧中,而request body 被封装到Data帧中。
HTTP/2 中,同域名下所有通信都在单个连接上完成,该连接可以承载任意数量的双向数据流。每个数据流都以消息的形式发送,而消息又由一个或多个帧组成。多个帧之间可以乱序发送,根据帧首部的流标识可以重新组装。

虚拟流、多路复用

HTTP 1.x 中,客户端浏览器在同一时间,针对同一域名下的请求会有一定数量的限制,超过限制数目的请求会被阻塞。且如果想并发多个请求,必建立多个 TCP 链接。
在 HTTP/2 中,有了新的分帧机制后,它将不再依赖 TCP 连接去实现多流并行了,在 HTTP/2中:

同域名下所有通信都在单个连接上完成;
单个连接可以承载任意数量的双向数据流;
数据流以消息的形式发送,而消息又由一个或多个帧组成,多个帧之间可以乱序发送,因为可以根据帧首部的流标识重新组装。

这一特性带来了性能上的提升:
同个域名只需要占用一个 TCP 连接,消除了因多个 TCP 连接而带来的延时和内存消耗;
单个连接上可以并行交错的请求和响应,之间互不干扰;
在HTTP/2中,每个请求都可以带一个31bit的优先值,0表示最高优先级, 数值越大优先级越低。有了这个优先值,客户端和服务器就可以在处理不同的流时采取不同的策略,以最优的方式发送流、消息和帧。

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

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

相关文章

PyQt6快速入门-多文档界面(MDI)

多文档界面(MDI) 文章目录 多文档界面(MDI)1、子窗口创建2、主窗口创建3、运行结果多文档界面(Multi Document Interface,MDI)是一种应用程序界面管理方法。MDI应用程序一般由一个主窗口和多个子窗口组成,这些子窗口在主窗口里显示,并共享主窗口的菜单栏,工具栏。在MDI应用…

netty(1):NIO 基础之三大组件和ByteBuffer

1 三大组件 1.1 Channel & Buffer channel 有一点类似于 stream,它就是读写数据的双向通道,可以从 channel 将数据读入 buffer,也可以将 buffer 的数据写入 channel,而之前的 stream 要么是输入,要么是输出&…

C++生成.dll文件后在Python中引用(包括传递参数是double型、char*数组,接收参数也为数组)

一、问题描述 博主想要实现的C函数原型如下: double* getInfo(int flag, double xyz[], char *xodrPath)也就是需要传递参数为三个不同类型的参数,返回值为double类型的指针(数组)。 那么如何在Python中如何通过这个函数生成的…

完全兼容GM8775C方案|替代GM8775C设计|CS5518替代GM8775C DSI转双LVDS设计方案

GM8775C 型 DSI 转双通道 LVDS 发送器产品主要实现将 MIPI DSI 转单/双通道 LVDS功能。GM8775C输入端DSI符合 协议支持 MIPI D-PHY 1.00.00 和MIPI DSI 1.02.00,可实现 1 到 4通道 DSI 信号接收。最大数据率 1Gbps/通道。视频输入格式支持 16bit RGB565、18bit RGB6…

Mybatis 一对一、一对多、多对多

今天我们来复习一下 Mybatis 框架吧 总所周知,Mybatis 是一款优秀的 基于ORM 半自动 轻量化 的 持久层框架 ORM:对象关系映射,简单的说就是表结构对应实体类 半自动:可灵活配置SQL,优化代码性能 轻量化&#xff1a…

php源代码保护——PHP加密方案分析解密还原

前言 php是一种解释型脚本语言.与编译型语言不同,php源代码不是直接翻译成机器语言.而是翻译成中间代码(OPCODE) ,再由解释器(ZEND引擎)对中间代码进行解释运行 . 在php源代码的保护在原理可以分为3大类. 源代码混淆(编码)OPCODE混淆(编码)修改解释引擎(虚拟机) 在部署上可…

Vue学习笔记 ④

文章目录template 选项Vue 生命周期生命周期图示生命周期钩子beforeCreatecreatedbeforeMountmountedbeforeUpdateupdatedbeforeDestroydestroyed组件基础组件是什么?组件注册全局组件局部组件组件名组件复用自闭合组件组件的 data 选项单个根元素组件\_Prop注册自定…

怎么排除无效问卷?

目录 1、答题限制 1)设置问卷验证码/密码 2)设置填写唯一链接 2、题目设置 1)设置陷阱题目 2)打乱题目顺序 3)设置跳转逻辑 4)题目数量限制 3、问卷筛选 问卷调查是一种能够在进行社会调研时帮助我…

SAP ABAP发送HTML格式的邮件

输入参数: I_SUBJECT:内容的简短描述 IT_MESSAGE_BODY:邮件主体部分(convert string to table) IT_ATTACHMENTS:附件内容 I_SENDER_MAIL:发送者的电子邮件地址 I_ATTMSG_CHECK:…

浙大MBA/MPA/MEM复试中的五大认知误区

在每年的研究生复试过程中都不乏大意失荆州者,经过联考初试的洗礼走到复试环节,却因为录取排名的变化而止步于录取大门口。在这些案例中,不少考生其实是针对复试这个环节有诸多认知误区,本期杭州达立易考结合MBA/MEM/MPA在职类硕士…

CentOS配置静态IP

CentOS配置静态IP1.获取VMnet8虚拟网卡的网段2.编辑虚拟机虚拟网络3.虚拟机中网络配置4.验证配置1.获取VMnet8虚拟网卡的网段 通过ipconfig -all查询VMnet8网卡的网段,这个等会需要使用 这里是:192.168.177 这里注意,还需要记录一下宿主机&…

rust字符串

字符串类型 诸位在入门rust的时候,要认真,因为字符串类型在rust中有好几种,一不小心就搞混了类型,导致代码编译报错。好在有强大的rust-analyzer和vscode帮助我们。我们直接通过一段代码来开始认识rust的字符串类型。 fn main()…

nginx学习笔记5(小d课堂)

全局异常兜底数据返回 我们如果访问的路径不存在,会给我们返回一个404.那么我们就可以通过nginx配置去返回兜底数据: 修改完配置,重启nginx。 这样我们就返回我们的兜底数据了。 nginx封禁恶意ip 我们现在随便选择一个ip进行封禁测试。 我们现…

.Net Core 6.0 WebApi配置跨域

ASP.Net Core 6.0 WebApi配置跨域 Program.cs文件代码如下: //配置跨域 builder.Services.AddCors(cor > {var cors configuration.GetSection("CorsUrls").GetChildren().Select(p > p.Value);cor.AddPolicy("Cors", policy >{poli…

92、【树与二叉树】leetcode ——111. 二叉树的最小深度:层次遍历+先序DFS+后序DFS[子问题分解](C++版本)

题目描述 原题链接:111. 二叉树的最小深度 解题思路 1、迭代法:层序遍历BFS 最小深度的特点是第一次遍历到结点的左右指针为NULL,此时该路径为最短路径。 /*** Definition for a binary tree node.* struct TreeNode {* int val;* …

探索SpringMVC-组件之HandlerExceptionResolver

前言 在介绍完Handler、HandlerAdapter、HandlerMapping之后,剩下的比较关键的组件就是HandlerExceptionResolver、ViewResolver。其他的像国际化、主题、文件上传、重定向,这些锦上添花的组件都是一个框架需要关心的。但不是我们平常使用的核心功能&am…

蓝桥杯省赛习题练习(三)

题目来源&#xff1a;2022年第十三届省赛(B组)真题 目录1.九进制转十进制运行结果2. 顺子日期运行结果3. 刷题统计运行结果4. 积木画1.九进制转十进制 问题描述&#xff1a;九进制正整数 (2022)9 转换成十进制等于多少&#xff1f; #include<stdio.h> #include<math.h…

一文带你深入了解线程池

目录一. 什么是线程池二. 为什么要使用线程池三. 线程池的参数四. 线程池的工作流程五. 使用Executors 创建常见的功能线程池一. 什么是线程池 简单来说&#xff0c;线程池就是提前创建好一批线程&#xff0c;当有任务的时候&#xff0c;从池子中取出一个线程去执行该任务&…

再说多线程(二)——细说Monitor类

在上一节我们已经讨论了使用Lock来保证并发程序的一致性&#xff0c;Lock锁是借助了Monitor类的功能。本节将详细的介绍Monitor类&#xff0c;以及如何通过Monitor类的成员函数实现并行程序的一致性。1.Monitor类介绍根据微软的说法&#xff0c;C#中的监视器类提供了一种同步对…

Microsoft Visual SourceSafe的使用

1、介绍 Microsoft Visual SourceSafe&#xff0c;简称vss。是一款早期微软推出的版本管理工具。跟据官方的定义&#xff0c;vss有两种控制模式&#xff1a;独占&#xff08;Lock-Modify-Unlock Model&#xff09;和并行&#xff08;Copy-Modify-Merge Model&#xff09;。独占…