1. https介绍
    1.  因为HTTP是明文传输,所以不安全,容易被黑客窃听或窜改;
    2. 通信安全必须同时具备机密性、完整性,身份认证和不可否认这四个特性
    3. HTTPS的语法、语义仍然是HTTP,但把下层的协议由TCP/IP换成了SSL/TLS;
    4. SSL/TLS是信息安全领域中的权威标准,采用多种先进的加密技术保证通信安全;  OpenSSL是著名的开源密码学工具包,是SSL/TLS的具体实现。
  2. 对称加密和非对称加密
    1. “对称加密”很好理解,就是指加密和解密时使用的密钥都是同一个
    2. 非对称加密(也叫公钥加密算法)。它有两个密钥,一个叫“公钥”(public    key),一个叫“私钥”(private    key)。两个密钥是不同 的,“不对称”,公钥可以公开给任何人使用,而私钥必须严格保密。
    1. 加密算法的核心思想是“把一个小秘密(密钥)转化为一个大秘密(密文消息)”,守住了小秘密,也 就守住了大秘密;
    2. 对称加密只使用一个密钥,运算速度快,密钥必须保密,无法做到安全的密钥交换,常用的有AES和 ChaCha20;
    3. 非对称加密使用两个密钥:公钥和私钥,公钥可以任意分发而私钥保密,解决了密钥交换问题但速度 慢,常用的有RSA和ECC;
    4. 把对称加密和非对称加密结合起来就得到了“又好又快”的混合加密,也就是TLS里使用的加密方式。
  3. 数字签名与证书
    1. 摘要算法用来实现完整性,能够为数据生成独一无二的“指纹”,常用的算法是SHA-2; 
    2. 数字签名是私钥对摘要的加密,可以由公钥解密后验证,实现身份认证和不可否认;
    3. 公钥的分发需要使用数字证书,必须由CA的信任链来验证,否则就是不可信的;
    4. 作为信任链的源头CA有时也会不可信,解决办法有CRL、OCSP,还有终止信任。
  4. https连接
    1.     HTTPS协议会先与服务器执行TCP握手,然后执行TLS握手,才能建立安全连接;
    2. 握手的目标是安全地交换对称密钥,需要三个随机数,第三个随机数“Pre-Master”必须加密传输,绝 对不能让黑客破解;
    3. “Hello”消息交换随机数,“Key    Exchange”消息交换“Pre-Master”;
    4. Change    Cipher    Spec”之前传输的都是明文,之后都是对称密钥加密的密文。
  5. TLS1.3
    1. 为了兼容1.1、1.2等“老”协议,TLS1.3会“伪装”成TLS1.2,新特性在“扩展”里实现; 
    2.  1.1、1.2在实践中发现了很多安全隐患,所以TLS1.3大幅度删减了加密算法,只保留了ECDHE、AES、 ChaCha20、SHA-2等极少数算法,强化了安全;
    3. TLS1.3也简化了握手过程,完全握手只需要一个消息往返,提升了性能
  6. HTTPS的优化
    1. 可以有多种硬件和软件手段减少网络耗时和计算耗时,让HTTPS变得和HTTP一样快,最可行的是软件优化;
    2.   应当尽量使用ECDHE椭圆曲线密码套件,节约带宽和计算量,还能实现“False    Start”;
    3. 服务器端应当开启“OCSP    Stapling”功能,避免客户端访问CA去验证证书;
    4. 会话复用的效果类似Cache,前提是客户端必须之前成功建立连接,后面就可以用“Session ID”“Session    Ticket”等凭据跳过密钥交换、证书验证等步骤,直接开始加密通信
  7. http2
    1. HTTP协议取消了⼩版本号,所以HTTP/2的正式名字不是2.0;
    2. HTTP/2在“语义”上兼容HTTP/1,保留了请求⽅法、URI等传统概念;
    3. .HTTP/2使⽤“HPACK”算法压缩头部信息,消除冗余数据节约带宽;
    4. HTTP/2的消息不再是“Header+Body”的形式,⽽是分散为多个⼆进制“帧”;
    5. HTTP/2使⽤虚拟的“流”传输消息,解决了困扰多年的“队头阻塞”问题,同时实现了“多路复⽤”, 提⾼连接的利⽤率;
    6. HTTP/2也增强了安全性,要求⾄少是TLS1.2,⽽且禁⽤了很多不安全的密码套件。
    7. HTTP/2在⼀个连接上使⽤多个流收发数据,那么它本⾝默认就会是⻓连接,所以永远不需 要“Connection”头字段(keepalive或close)。
    8. 1.HTTP/2必须先发送⼀个“连接前⾔”字符串,然后才能建⽴正式连接;
    9. HTTP/2废除了起始⾏,统⼀使⽤头字段,在两端维护字段“Key-Value”的索引表,使⽤“HPACK”算 法压缩头部;
    10. HTTP/2把报⽂切分为多种类型的⼆进制帧,报头⾥最重要的字段是流标识符,标记帧属于哪个流;
    11. .流是HTTP/2虚拟的概念,是帧的双向传输序列,相当于HTTP/1⾥的⼀次“请求-应答”;
    12. 在⼀个HTTP/2连接上可以并发多个流,也就是多个“请求-响应”报⽂,这就是“多路复⽤”
  8. HTTP/2的流
    1. 流是可并发的,⼀个HTTP/2连接上可以同时发出多个流传输数据,也就是并发多请求,实现“多路复 ⽤”;
    2. .客⼾端和服务器都可以创建流,双⽅互不⼲扰
    3. .流是双向的,⼀个流⾥⾯客⼾端和服务器都可以发送或接收数据帧,也就是⼀个“请求-应答”来回;
    4. 流之间没有固定关系,彼此独⽴,但流内部的帧是有严格顺序的;
    5. .流可以设置优先级,让服务器优先处理,⽐如先传HTML/CSS,后传图⽚,优化⽤⼾体验;
    6. .流ID不能重⽤,只能顺序递增,客⼾端发起的ID是奇数,服务器端发起的ID是偶数; 7.在流上发送“RST_STREAM”帧可以随时终⽌流,取消接收或发送;
    7. .第0号流⽐较特殊,不能关闭,也不能发送数据帧,只能发送控制帧,⽤于流量控制。
    8. 客⼾端在⼀个连接⾥最多只能发出2^30,也就是10亿个请求
  9. HTTP/3综合了我们之前讲的所有技术(HTTP/1、SSL/TLS、HTTP/2),包含知识点很多,⽐如队头阻塞、 0-RTT握⼿、虚拟的“流”、多路复⽤,算得上是“集⼤成之作”
    1. HTTP/3基于QUIC协议,完全解决了“队头阻塞”问题,弱⽹环境下的表现会优于HTTP/2;
    2. .QUIC是⼀个新的传输层协议,建⽴在UDP之上,实现了可靠传输
    3. .QUIC内含了TLS1.3,只能加密通信,⽀持0-RTT快速建连;
    4. .QUIC的连接使⽤“不透明”的连接ID,不绑定在“IP地址+端⼝”上,⽀持“连接迁移”;
    5. QUIC的流与HTTP/2的流很相似,但分为双向流和单向流;
    6. .HTTP/3没有指定默认端⼝号,需要⽤HTTP/2的扩展帧“Alt-Svc”来发现。
 

随机推荐

  1. Pikachu靶场SQL注入刷题记录

    数字型注入 0x01 burp抓包,发送至repeater 后面加and 1=1,and 1=2 可判断存在注入 0x02 通过order by判断字段数,order by 2 和order by 3 ...

  2. Asp.net Core依赖注入(Autofac替换IOC容器)

    ASP.NET Core ASP.NET Core (previously ASP.NET 5) 改变了以前依赖注入框架集成进ASP.NET的方法. 以前, 每个功能 - MVC, Web API, ...

  3. 洛谷P1220关路灯【区间dp】

    题目描述 某一村庄在一条路线上安装了 \(n\) 盏路灯,每盏灯的功率有大有小(即同一段时间内消耗的电量有多有少).老张就住在这条路中间某一路灯旁,他有一项工作就是每天早上天亮时一盏一盏地关掉这些路灯 ...

  4. JavaScript基础Literal 与 Constructor(008)

    JavaScript支持以字面声名法(Literal)的方式来声名对象和数组,相对于构造函数(constructor)的方式,Literal的声 名方式更简洁,更易读,也更少导致Bug.事实上,JSO ...

  5. nodejs 本地压缩jpg,png图片(nodejs)

    使用nodejs实现本地压缩jpg,png图片. 使用到的包 1.images   用于压缩jpg npm install images yarn add images 2.imagemin 用于压缩 ...

  6. 火车运输(最大生成树+lca) 洛谷P1967

    货车运输 题目描述 \(A\) 国有 \(n\) 座城市,编号从 \(1\) 到 \(n\) ,城市之间有 \(m\) 条双向道路.每一条道路对车辆都有重量限制,简称限重. 现在有 \(q\) 辆货车 ...

  7. Golden Tiger Claw(二分图)

    Golden Tiger Claw 题意 找到和最小的两个序列a,b满足对于任意i,j有a[i]+b[j]>=c[i][j](矩阵c给出). solution 裸的二分图就水过了-- #incl ...

  8. 洛谷P3237 [HNOI2014]米特运输

    题目描述 米特是D星球上一种非常神秘的物质,蕴含着巨大的能量.在以米特为主要能源的D星上,这种米特能源的运输和储 存一直是一个大问题.D星上有N个城市,我们将其顺序编号为1到N,1号城市为首都.这N个 ...

  9. IDEA怎么设置类的注释模板和方法注释模板

    文件头注释模板 File | Settings | Editor | File and Code Templates /** * @Author your name * @DateTime ${YEA ...

  10. 万变不离其宗之UART要点总结

    [导读] 单片机开发串口是应用最为广泛的通信接口,也是最为简单的通信接口之一,但是其中的一些要点你是否明了呢?来看看本人对串口的一些总结,当然这个总结并不能面面俱到,只是将个人认为具有共性以及相对比较 ...