最近被问到http2和https的相关知识,这是一篇补基础的博客:

首先想说下https

什么是https

https的主要用处:

- 建立信息安全通道,保证数据传输的安全

- 确保网站的真实性,防止钓鱼网站

https原理

就是https在http下加入ssl层,加密的详细内容需要ssl/tls(运行在应用层上)

https的连接是无状态的,https协议由ssl+http协议构建的可进行加密传送,身份认证的网络安全协议

首先:

加密和解密算法是公开的,密钥是保密的(通信双方才能获取到)

对称密钥:

加密和解密使用的是同一个密钥

不安全处:

密钥通过网络发送出去,在发送过程中被拦截,则传输的信息可以被窥视和篡改。

非对称加密:

有一个叫做RSA的非对称加密算法:

它不像之前的算法,双方必须协商一个保密的密钥,而是有一对钥匙,一个是保密的,称为私钥,一个是公开的,称为公钥

⚠️:

用私钥加密的数据,只有对应的公钥才能解密,用公钥加密的数据,只有对应的私钥才能解密

对称加密和非对称加密的比较:

- 前者较快,后者较安全

解决速度和安全问题:

1)生成一个对称加密算法的密钥,用rsa的方式安全发给你

2)随后不用rsa,只用这个密钥,利用对称加密算法来通信

为了防止中间人窃取到了密钥,需要引入一个权威的证书颁发机构(ca)来解决

http2的简介:

有4个主要的新特性:

- 二进制分帧

- 头部压缩

- 服务端推送

- 多路复用

- 优化手段

首先说下:

二进制分帧

http2是一个彻底的二进制协议(二进制协议就是一串字节流,通常包括消息头(header)和消息体(body),消息头的长度固定,并且消息头包括了消息体的长度。这样就能够从数据流中解析出一个完整的二进制数据。),http2的二进制协议被称为二进制分帧,http2协议的格式称为帧,类似tcp中的数据报文:

帧由Frame Header和Frame Payload组成

- Type字段用来表示该帧中的Frame Payloaded保存的是header数据还是body数据,除了用于标识header/body,还有一些额外的Frame Type

- Length字段用来表示Frame Payload数据大小

- Frame Payloaded用来保存header和body数据

 多路复用:

在http的每个请求中都会建立一个tcp连接,意味着每个请求都要进行三次握手,这样会浪费很多资源。浏览器会限制同一个域名下并发请求的个数,在http1中,一个常见的优化手段是把静态资源分布到不同域名下,以此突破浏览器并发数的限制

在http2中,所有的请求可以公用一个Tcp连接

Stream Identifier 就是用来标识该帧属于哪个请求的

当客户端同时向服务器端发起多个请求,那么这些请求会被分解成一个个帧,每个帧都会在tcp链路中无序的传输,同一个请求的帧的Stream Identifier都是一样的,当帧到达服务器之后,可以根据Stream Identifier来重新组合得到完整的请求

头部压缩:

在http1中,每次请求都会懈怠header数据,这些信息在每次请求就形成了浪费,所有http2

提出了HPACK的压缩方式,用于减少http header在每次请求中消耗的流量

HPACK的压缩原理:

客户端和服务器端共同维护一个静态字典:

服务器端推送:

服务器主动向客户端推送数据,一次获取全部资源

浅谈https和http2的更多相关文章

  1. 浅谈HTTPS以及Fiddler抓取HTTPS协议

    最近想尝试基于Fiddler的录制功能做一些接口的获取和处理工作,碰到的一个问题就是简单连接Fiddler只能抓取HTTP协议,关键的登录请求等HTTPS协议都没有捕捉到,所以想让Fiddler能够同 ...

  2. [转]浅谈https\ssl\数字证书

    浅谈https\ssl\数字证书 http://www.cnblogs.com/P_Chou/archive/2010/12/27/https-ssl-certification.html 全球可信的 ...

  3. 浅谈HTTPS以及Fiddler抓取HTTPS协议(摘抄)

    一.浅谈HTTPS 我们都知道HTTP并非是安全传输,在HTTPS基础上使用SSL协议进行加密构成的HTTPS协议是相对安全的.目前越来越多的企业选择使用HTTPS协议与用户进行通信,如百度.谷歌等. ...

  4. 【转载】浅谈HTTPS以及Fiddler抓取HTTPS协议

    最近想尝试基于Fiddler的录制功能做一些接口的获取和处理工作,碰到的一个问题就是简单连接Fiddler只能抓取HTTP协议,关键的登录请求等HTTPS协议都没有捕捉到,所以想让Fiddler能够同 ...

  5. 浅谈HTTPS和SSL/TLS协议的背景和基础

    相关背景知识要说清楚HTTPS协议的实现原理,至少要需要如下几个背景知识.大致了解几个基础术语(HTTPS.SSL.TLS)的含义大致了解HTTP和TCP的关系(尤其是"短连接"和 ...

  6. 浅谈 HTTPS 和 SSL/TLS 协议的背景与基础

    来自:编程随想   >> 相关背景知识 要说清楚 HTTPS 协议的实现原理,至少需要如下几个背景知识. 大致了解几个基本术语(HTTPS.SSL.TLS)的含义 大致了解 HTTP 和 ...

  7. 浅谈https\ssl\数字证书

    全球可信的SSL数字证书申请:http://www.shuzizhengshu.com 在互联网安全通信方式上,目前用的最多的就是https配合ssl和数字证书来保证传输和认证安全了.本文追本溯源围绕 ...

  8. 【转】浅谈https\ssl\数字证书

    转载请注明出处:http://www.cnblogs.com/P_Chou/archive/2010/12/27/https-ssl-certification.html 全球可信的SSL数字证书申请 ...

  9. 浅谈HTTPS安全性

    各位可曾有过使用智能手机App在网络商店购物的经验,想必是有的,那你/妳会不会担心不够安全呢?有人会说放心吧,购物网站有使用SSL/TLS加密传输,我们就来聊聊HTTPS好了. 客户端与服务器端的交握 ...

随机推荐

  1. Indent Guides插件格式代码

    vs开发工具实用性插件 一.   在开发遇到过很多括号缩近的,很是头疼,于是上网收了一下,希望对大家有所帮助. 第一款插件:Indent Guides 这款插件是给代码块增长对齐线,以标识匹配的花括号 ...

  2. [UE4]修改瞬移操作方式,默认正前方

    瞬移的时候,如果箭头指向正前方的角度跟中心线相差不大,则可以强制箭头指向中心线. 因为向量也可以表示方向,因此只要只要判断向量长度就是了,判断VectorLength值即可:

  3. react-redux笔记

    用vuex来对比来说明 分类 vuex redux react-redux 写state commit mutation (mutable state) dispatch reducer (immut ...

  4. 关于对CSS中超链接那部分的设置

    a:link{                                  //正常下的超链接 color:red;                          //超链接的颜色 text ...

  5. thinkphp5在Linux下Nginx配置问题解决

    首先tp5的访问目录指向到webroot/public文件夹中. thinkphp的url访问:http://serverName/index.php(或者其它应用入口文件)/模块/控制器/操作/[参 ...

  6. 获取物理内存total值和used值

    1.使用 free -m 查看 2.物理内存total值 # free -m | grep Mem | awk '{print $2}' 3.物理内存used值 # free -m | grep Me ...

  7. c++数据类型漫谈

    在计算机眼里所有数据都是0101,二进制才是物理世界的主宰,c++的数据类型相对其他高级语言是相对较细的,因为是继承C而来,但是c++为什么要设计这么多数据类型呢?因为人类难以理解二进制,这就是数据类 ...

  8. JAVA学习记录(二)————JAVA中的IO

    Java中I/O操作主要是指使用Java进行输入,输出操作. Java所有的I/O机制都是基于数据流进行输入输出,这些数据流表示了字符或者字节数据的流动序列. 数据流是一串连续不断的数据的集合,就象水 ...

  9. redis的使用与 django的redis的使用

    1. 使用redis数据库分为两种: 第一种是在python语言中直接使用的方式, 第二种就是在django中使用django_redis模块来数用 第一种直接在python语言中使用redis im ...

  10. cxgrid主从表的从表数据小于主表总数的问题

    当从表的数据移动需要和数据源记录同步时,会发生一现象:从表中设定的keyfield记录不连续,显示就会中断. 这样要设置从表的排序,按照主表的关联键在内存表里进行排序 indexFieldNames设 ...