HTTP1.1、HTTPS、HTTP2.0 、HTTP3.0

HTTP1.1

优点:

整体方面:简单、灵活和易于扩展、应用广泛和跨平台

性能方面:长连接、管道网络传输解决请求队头阻塞(没有使用)

缺点:

安全方面:无状态、明文窃听、伪装、篡改

性能方面:

  • Header未经压缩就发送,只能压缩body,头部冗长
  • 每次发送相同的首部造成比较多的性能浪费
  • 响应队头阻塞
  • 没有优先级控制权
  • 服务器只能被动响应

如何优化:

  • 使用缓存(本地缓存与协商缓存)避免发送HTTP请求
  • 通过减少重定向次数、合并请求、延迟发送请求(按需获取)的方式在需要发送HTTP的时候,减少请求次数
  • 减少服务器HTTP响应的数据大小(有损压缩和无损压缩)

HTTPS

与HTTP的区别:

  • HTTP 是超文本传输协议,信息是明文传输,存在安全风险的问题。HTTPS 则解决 HTTP 不安全的缺陷,在 TCP 和 HTTP 网络层之间加入了 SSL/TLS 安全协议,使得报文能够加密传输。

  • HTTP 连接建立相对简单, TCP 三次握手之后便可进行 HTTP 的报文传输。而 HTTPS 在 TCP 三次握手之后,还需进行 SSL/TLS 的握手过程,才可进入加密报文传输。

  • 两者的默认端口不一样,HTTP 默认端口号是 80,HTTPS 默认端口号是 443。

  • HTTPS 协议需要向 CA(证书权威机构)申请数字证书,来保证服务器的身份是可信的。

解决了HTTP的问题:

  • 窃听风险,比如通信链路上可以获取通信内容,用户号容易没。
  • 篡改风险,比如强制植入垃圾广告,视觉污染,用户眼容易瞎。
  • 冒充风险,比如冒充淘宝网站,用户钱容易没。

如何优化:

HTTPS与HTTP多了一个TSL握手过程,目的是为了通过非对称加密协议交换对称加密的秘钥,这个过程最长会花费掉2RT的时间。这个过程是会产生新能消耗的,后面的对称加密环节消耗非常小,可以忽略。 除了握手过程会发生网络延时,同时一些步骤也会产生性能损耗。

具体体现为:

  • 对于 ECDHE 密钥协商算法,握手过程中会客户端和服务端都需要临时生成椭圆曲线公私钥;
  • 客户端验证证书时,会访问 CA 获取 CRL 或者 OCSP,目的是验证服务器的证书是否有被吊销;
  • 双方计算 Pre-Master,也就是对称加密密钥;

 硬件层面的优化:因为 HTTPS 是属于计算密集型,应该选择计算力更强的 CPU,而且最好选择支持 AES-NI 特性的 CPU,这个特性可以在硬件级别优化 AES 对称加密算法,加快应用数据的加解密。

软件层面的优化:把软件升级成较新的版本,比如将 Linux 内核 2.X 升级成 4.X,将 openssl 1.0.1 升级到 1.1.1

协议层面的优化:

  • 密钥交换算法应该选择 ECDHE 算法,而不用 RSA 算法,因为 ECDHE 算法具备前向安全性,而且客户端可以在第三次握手之后,就发送加密应用数据,节省了 1 RTT。
  • 将 TLS1.2 升级 TLS1.3,因为 TLS1.3 的握手过程只需要 1 RTT,而且安全性更强。

对于证书优化的方向:

  • 服务器应该选用 ECDSA 证书,而非 RSA 证书,因为在相同安全级别下,ECC 的密钥长度比 RSA 短很多,这样可以提高证书传输的效率;
  • 服务器应该开启 OCSP Stapling 功能,由服务器预先获得 OCSP 的响应,并把响应结果缓存起来,这样 TLS 握手的时候就不用再访问 CA 服务器,减少了网络通信的开销,提高了证书验证的效率;

重连方面:

对于重连 HTTPS 时,我们可以使用一些技术让客户端和服务端使用上一次 HTTPS 连接使用的会话密钥,直接恢复会话,而不用再重新走完整的 TLS 握手过程。

常见的会话重用技术有 Session ID 和 Session Ticket,用了会话重用技术,当再次重连 HTTPS 时,只需要 1 RTT 就可以恢复会话。对于 TLS1.3 使用 Pre-shared Key 会话重用技术,只需要 0 RTT 就可以恢复会话。

这些会话重用技术虽然好用,但是存在一定的安全风险,它们不仅不具备前向安全,而且有重放攻击的风险,所以应当对会话密钥设定一个合理的过期时间。

HTTP2.0 

优点(相对于1.1) :

性能方面:

  • 头部压缩,如果多个请求的头部相同,协议会自动帮助消除重复的部分(原理是维护了一个车表,使用索引来记录字段,如果是相同的字段,直接使用索引即可)
  • 报文形式采用二进制格式,使用了静态表
  • 并发传输,引入了Stream的概念,在HTTP层解决了队头阻塞的问题
  • 服务器主动推送

缺点:

  1. 一旦发生了丢包现象,就会触发 TCP 的重传机制,这样在一个 TCP 连接中的所有的 HTTP 请求都必须等待这个丢了的包被重传回来

HTTP/3 

(QUIC协议)优点 :

  • 把HTTP下面的TCP协议换成了UDP,解决了队头阻塞问题,同一个连接上面并发传输多个Stream(http请求),不同的Stream不会互相影响
  • 更快的连接建立,解决TCP与TLS的握手时间延迟
  • 连接迁移

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

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

相关文章

HTML <meter> 标签

实例 使用 meter 元素来度量给定范围(gauge)内的数据: <meter value="3" min="0" max="10">十分之三</meter><meter value="0.6">60%</meter> 浏览器支持 元素ChromeIEFirefoxSafariOpera<meter>8…

JavaWeb课程设计项目实战(03)——开发准备工作

版权声明 本文原创作者&#xff1a;谷哥的小弟作者博客地址&#xff1a;http://blog.csdn.net/lfdfhl 在正式进入项目开发之前请先完成以下准备工作。 数据库语句 请创建数据库和表并完成数据初始化工作。 初始化数据库 请在MySQL数据库中创建名为studentinformationmanag…

文心一言 VS 讯飞星火 VS chatgpt (59)-- 算法导论6.4 3题

文心一言 VS 讯飞星火 VS chatgpt &#xff08;59&#xff09;-- 算法导论6.4 3题 三、对于一个按升序排列的包含 n 个元素的有序数组 A 来说&#xff0c;HEAPSORT 的时间复杂度是多少?如果 A 是降序呢? 文心一言&#xff1a; 对于一个按升序排列的包含 n 个元素的有序数组…

ffmpeg将视频导出iphonemp4格式

对于短视频的剪辑&#xff0c;目前来说手机性能足够&#xff0c;现在很多家庭如果没有前几年的网课需求基本也不会买电脑。 将mp4视频导入iphone的时候&#xff0c;mp4是容器格式&#xff0c;不是所有mp4格式都支持。用格式工厂一类的转换太慢。所以考虑用ffmpeg。 转换 wmv转…

Spring Boot进阶(54):Windows 平台安装 MongoDB数据库 | 超级详细,建议收藏

1. 前言&#x1f525; Windows如何安装MongoDB数据库及使用呢&#xff1f;这将又会是干货满满的一期&#xff0c;全程无尿点不废话只抓重点教&#xff0c;具有非常好的学习效果&#xff0c;拿好小板凳准备就坐&#xff01;希望学习的过程中大家认真听好好学&#xff0c;学习的途…

Android系统开发-入门篇

参见&#xff1a;[视频教程] 写给应用开发的 Android Framework 教程——玩转 AOSP 篇之 Android 系统开发工具推荐 - 掘金 前置条件&#xff1a; android系统源码位于 linux 服务器&#xff0c;ssh 地址假如为&#xff1a;test172.1.10.2本机为windows 1、本机&#xff1a; 下…

python爬虫试手

同事让帮忙在某个网站爬点数据&#xff0c;首次尝试爬虫&#xff0c;遇到的问题及解决思路记录下。 大体需求是需要爬取详情页内的信息&#xff0c;详情页有一定格式规律&#xff0c;但是详情页需要从列表页跳入&#xff0c;列表页中的每一条记录需要鼠标悬停才会弹出跳转链接…

【课程介绍】XPath 之旅:自动化爬虫入门探索

[ 专栏推荐 ] &#x1f603; 《XPath 之旅&#xff1a;自动化爬虫入门探索》&#x1f604; ❤️【简介】&#xff1a; XPath 基础教程适合初学者&#xff0c;旨在帮助学习者掌握 XPath 元素定位的基本原理和常用技巧。学习完这套课程&#xff0c;你将能够熟练使用 XPath 在 HT…

深入理解mysql的锁和mvcc

基础 1 锁讲解&#xff1a;面试必备-行锁、表锁 - 乐观锁、悲观锁的区别和联系 2 mvcc机制讲解&#xff08;如何实现各种隔离级别&#xff09;&#xff1a;数据库基础&#xff08;四&#xff09;Innodb MVCC实现原理 刚读完上面两篇内容&#xff0c;可能会有很多疑惑的地方&…

repo和git的常用命令

repo 简介 repo是Google开发的用于管理Android版本库的一个工具&#xff0c;repo是使用Python对git进行了一定的封装&#xff0c;并不是用于取代git&#xff0c;它简化了对多个Git版本库的管理。用repo管理的版本库都需要使用git命令来进行操作。因此&#xff0c;使用repo工具…

k8s证书到期实际操作

文章目录 1. 百年的kubeadm1.1 源码修改1.2 准备镜像1.3 编译1.4 成品备份 2. 生成证书2.1 master主节点2.2 其他master节点 1. 百年的kubeadm 1.1 源码修改 源码下载 cd /usr/local/src/ git clone -b release-1.15 https://github.com/kubernetes/kubernetes.git再次确认分…

【Java基础教程】Java学习路线攻略导图——史诗级别的细粒度归纳,持续更新中 ~

Java学习路线攻略导图 上篇 前言1、入门介绍篇2、程序基础概念篇3、包及访问权限篇4、异常处理篇5、特别篇6、面向对象篇7、新特性篇8、常用类库篇 前言 &#x1f37a;&#x1f37a; 各位读者朋友大家好&#xff01;得益于各位朋友的支持和关注&#xff0c;我的专栏《Java基础…

Vue2 - 模板、渲染、事件处理、表单输入绑定

文章目录 模板语法1、文本2、原始 HTML3、属性 Attribute4、使用 JavaScript 表达式 条件渲染1、v-if2、v-else3、v-show4、v-if vs v-show 的区别 列表渲染1、用 v-for 把一个数组映射为一组元素2、维护状态 事件处理1、监听事件 v-on2、事件处理方法3、内联处理器中的方法 表…

【Linux后端服务器开发】UDP协议

目录 一、端口号 二、UDP报头格式 三、UDP的特点 四、UDP协议实现网络聊天群 一、端口号 端口号port标识了一个主机上进行通信的不同的应用程序。 0 ~ 1023&#xff1a;系统端口号&#xff0c;HTTP、FTP、SSH等这些广为使用的应用层协议&#xff0c;它们的端口号都是固定…

随手笔记——OpenCV 的基础使用方法

随手笔记——OpenCV 的基础使用方法 说明CMakeLists.txt关键内容源代码 说明 演示了如下几个操作&#xff1a;图像读取、显示、像素遍历、复制、赋值等。大部分的注解已写在代码里面。编译该程序时&#xff0c;需要在 CMakeLists.txt 中添加 OpenCV 的头文件&#xff0c;然后把…

Qt中QMainWindow的相关介绍

目录 菜单栏 工具栏 状态栏&#xff1a; 停靠窗口&#xff1a; QMainWindow 是标准基础窗口中结构最复杂的窗口&#xff0c;其组成如下: 提供了菜单栏 , 工具栏 , 状态栏 , 停靠窗口 菜单栏&#xff1a;只能有一个&#xff0c;位于窗口的最上方 工具栏&#xff1a;可以有多…

AI制图工具丨Midjourney产品功能介绍

了解如何使用Discord上的Midjourney Bot通过简单的文本提示创建自定义图像 Midjourney是一款AI制图工具&#xff0c;只要关键字&#xff0c;就能透过AI算法生成相对应的图片&#xff0c;只需要不到一分钟。 可以选择不同画家的艺术风格&#xff0c;例如安迪华荷、达芬奇、达利…

基于单片机水质检测系统的设计与实现

功能介绍 以STM32单片机作为主控系统&#xff1b;液晶显示当前参数&#xff1b;PH模块采集当前水质PH酸碱度&#xff1b;DS18B20温度传感器采集当前水体温度&#xff1b;TDS传感器采集当前水体TDS值&#xff1b;浊度传感器采集当前水体浑浊度&#xff1b;按键设置PH、温度、TDS…

无涯教程-Javascript - For...in循环语句

for ... in 循环用于循环访问对象的属性&#xff0c;由于无涯教程尚未讨论Objects对象&#xff0c;您就会发现此循环非常有用。“ for...in”循环的语法为: for (variablename in object) {statement or block to execute } 在每次迭代中&#xff0c;将 object对象中的一个属性…

Elasticsearch 集群某一节点修改 IP 后无法启动问题复盘

1、集群环境及问题描述 集群版本&#xff1a;6.8.X集群节点&#xff1a;5节点&#xff08;三个节点为主数据节点&#xff0c;另外两个独立数据节点&#xff09;。问题描述&#xff1a;由于IP冲突&#xff0c;修改了一台服务器的IP&#xff0c;然后5台配置改了一下一次重启&…