首页 > 其他分享 >HTTP协议28 丨 连接太慢该怎么办:HTTPS的优化

HTTP协议28 丨 连接太慢该怎么办:HTTPS的优化

时间:2024-07-08 22:55:33浏览次数:16  
标签:HTTP 握手 28 硬件 HTTPS 可以 优化 连接

你可能或多或少听别人说过,“HTTPS 的连接很慢”。那么“慢”的原因是什么呢?

通过前两讲的学习,你可以看到,HTTPS 连接大致上可以划分为两个部分,第一个是建立连接时的非对称加密握手,第二个是握手后的对称加密报文传输

由于目前流行的 AES、ChaCha20 性能都很好,还有硬件优化,报文传输的性能损耗可以说是非常地小,小到几乎可以忽略不计了。所以,通常所说的“HTTPS 连接慢”指的就是刚开始建立连接的那段时间。

在 TCP 建连之后,正式数据传输之前,HTTPS 比 HTTP 增加了一个 TLS 握手的步骤,这个步骤最长可以花费两个消息往返,也就是 2-RTT。而且在握手消息的网络耗时之外,还会有其他的一些“隐形”消耗,比如:

  • 产生用于密钥交换的临时公私钥对(ECDHE);
  • 验证证书时访问 CA 获取 CRL 或者 OCSP;
  • 非对称加密解密处理“Pre-Master”。

在最差的情况下,也就是不做任何的优化措施,HTTPS 建立连接可能会比 HTTP 慢上几百毫秒甚至几秒,这其中既有网络耗时,也有计算耗时,就会让人产生“打开一个 HTTPS 网站好慢啊”的感觉。

不过刚才说的情况早就是“过去时”了,现在已经有了很多行之有效的 HTTPS 优化手段,运用得好可以把连接的额外耗时降低到几十毫秒甚至是“零”。

我画了一张图,把 TLS 握手过程中影响性能的部分都标记了出来,对照着它就可以“有的放矢”地来优化 HTTPS。

硬件优化

在计算机世界里的“优化”可以分成“硬件优化”和“软件优化”两种方式,先来看看有哪些硬件的手段。

硬件优化,说白了就是“花钱”。但花钱也是有门道的,要“有钱用在刀刃上”,不能大把的银子撒出去“只听见响”。

HTTPS 连接是计算密集型,而不是 I/O 密集型。所以,如果你花大价钱去买网卡、带宽、SSD 存储就是“南辕北辙”了,起不到优化的效果。

那该用什么样的硬件来做优化呢?

首先,你可以选择更快的 CPU,最好还内建 AES 优化,这样即可以加速握手,也可以加速传输。

其次,你可以选择“SSL 加速卡”,加解密时调用它的 API,让专门的硬件来做非对称加解密,分担 CPU 的计算压力。

不过“SSL 加速卡”也有一些缺点,比如升级慢、支持算法有限,不能灵活定制解决方案等。

所以,就出现了第三种硬件加速方式:“SSL 加速服务器”,用专门的服务器集群来彻底“卸载”

标签:HTTP,握手,28,硬件,HTTPS,可以,优化,连接
From: https://blog.csdn.net/qq_53280238/article/details/140280800

相关文章

  • HTTP协议27丨更好更快的握手:TLS1.3特性解析
    上一讲中我讲了TLS1.2的握手过程,你是不是已经完全掌握了呢?不过TLS1.2已经是10年前(2008年)的“老”协议了,虽然历经考验,但毕竟“岁月不饶人”,在安全、性能等方面已经跟不上如今的互联网了。于是经过四年、近30个草案的反复打磨,TLS1.3终于在去年(2018年)“粉墨登场”,再......
  • __int128
    目录简介支持运算输入输出例题简介\(\_\_int128\)并不是标准c/c++中的数据类型,而是一些特定编译器如gcc/g++提供的扩展数据类型。支持运算\(\_\_int128\)的是有符号128位整数变量,最多表示39位整数。支持基本的加减乘除运算,以及按位与&、按位或|、按位异或^、左移<<、右移>......
  • 前端面试题28(Vue3的Teleport功能在什么场景下特别有用?能给个例子吗?)
    Vue3的Teleport功能在需要将组件的渲染结果放置在DOM树中与当前组件位置无关的任意位置时特别有用。这通常涉及到需要将某些UI元素(如模态框、弹出菜单、通知、工具提示等)从其逻辑上的父级组件中“提取”出来,放置到页面的更高层级或完全不同的位置,以避免样式冲突或层......
  • 保姆级阿里云接入http接口加密数据教程,一看就会!大厂经验分享,接口数据落表
    前言:有关接口数据的接入,源端会给予我们一份接口说明文件,接着我们需依据对方提供的接口文档进行代码编写,以实现数据落表。接入步骤大致可分为以下几步:1.依据对方提供的接口文档,明确接口地址、请求方式、传参信息以及参数格式等。2.借助编写代码,获取接口数据内容。3.按照......
  • SPI驱动--TM1628
     /*********************************************************************************@fileGPIO_Toggle\main.c*@authorMCDApplicationTeam*@versionV2.0.1*@date18-November-2011*@briefThisfilecontainsthemainfuncti......
  • **CodeForces CF1928B Equalize题解**
    ok兄弟们,今天本蒟蒻来做一篇小小的题解Equalize题面翻译有一个给定的长度为$n$的数列$a$,现在加上一个排列$b$,即$c_i=a_i+b_i$。现在求对于所有可能的$b$,$c$中出现最多的数的出现次数的最大值。translateby@UniGravity.题目描述Vasyahastwohobbies—addingpe......
  • 【DevOps】运维过程中经常遇到的Http错误码问题分析(一)
    一、解决HTTP408错误:上传3M文件时请求超时的问题在开发Web应用程序时,遇到HTTP408状态码(请求超时)是常见的问题。特别是在上传大文件时,这种情况更容易发生。本文将探讨在上传一个3M文件时,Web服务器返回408错误的原因,并提供详细的解决方案。1.理解HTTP408状态码HTTP408状......
  • Http请求头有哪些?作用是什么?
    HTTP请求头包含以下部分1.通用头(GeneralHeaders):这部分头信息既可以用在请求,也可以用在响应是作为一个整体而不是特定资源与事务相关联。2.请求头(RequestHeaders):这部分头信息允许客户端传递关于自身的信息和希望的响应形式3.响应头(ResponseHeaders):这部分头......
  • [lnsyoj285/luoguP2596/ZJOI2006]书架
    题意维护一个长度为\(n\)的序列\(a\),进行\(m\)次操作,操作包括:将\(x\)放置于序列开头;将\(x\)放置于序列末尾;将\(x\)与其前驱/后继交换;查询\(x\)的下标\(-1\);查询下标为\(x\)的数sol维护序列,可以使用线段树或平衡树,本题使用平衡树更为简便。介于已经学习......
  • node.js_HTTP协议
    HypertextTransferProtocol  超文本传输协议1.HTTP报文 请求行 请求头请求体 它的内容形式很灵活,可以设置任意内容  2.HTTP响应报文响应状态码响应状态的描述遇到陌生的状态码可以参考一下这个网址:https://developer.mozilla.org/zh-CN/docs/Web/HT......