浅谈https和http2
最近被问到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的更多相关文章
- 浅谈HTTPS以及Fiddler抓取HTTPS协议
最近想尝试基于Fiddler的录制功能做一些接口的获取和处理工作,碰到的一个问题就是简单连接Fiddler只能抓取HTTP协议,关键的登录请求等HTTPS协议都没有捕捉到,所以想让Fiddler能够同 ...
- [转]浅谈https\ssl\数字证书
浅谈https\ssl\数字证书 http://www.cnblogs.com/P_Chou/archive/2010/12/27/https-ssl-certification.html 全球可信的 ...
- 浅谈HTTPS以及Fiddler抓取HTTPS协议(摘抄)
一.浅谈HTTPS 我们都知道HTTP并非是安全传输,在HTTPS基础上使用SSL协议进行加密构成的HTTPS协议是相对安全的.目前越来越多的企业选择使用HTTPS协议与用户进行通信,如百度.谷歌等. ...
- 【转载】浅谈HTTPS以及Fiddler抓取HTTPS协议
最近想尝试基于Fiddler的录制功能做一些接口的获取和处理工作,碰到的一个问题就是简单连接Fiddler只能抓取HTTP协议,关键的登录请求等HTTPS协议都没有捕捉到,所以想让Fiddler能够同 ...
- 浅谈HTTPS和SSL/TLS协议的背景和基础
相关背景知识要说清楚HTTPS协议的实现原理,至少要需要如下几个背景知识.大致了解几个基础术语(HTTPS.SSL.TLS)的含义大致了解HTTP和TCP的关系(尤其是"短连接"和 ...
- 浅谈 HTTPS 和 SSL/TLS 协议的背景与基础
来自:编程随想 >> 相关背景知识 要说清楚 HTTPS 协议的实现原理,至少需要如下几个背景知识. 大致了解几个基本术语(HTTPS.SSL.TLS)的含义 大致了解 HTTP 和 ...
- 浅谈https\ssl\数字证书
全球可信的SSL数字证书申请:http://www.shuzizhengshu.com 在互联网安全通信方式上,目前用的最多的就是https配合ssl和数字证书来保证传输和认证安全了.本文追本溯源围绕 ...
- 【转】浅谈https\ssl\数字证书
转载请注明出处:http://www.cnblogs.com/P_Chou/archive/2010/12/27/https-ssl-certification.html 全球可信的SSL数字证书申请 ...
- 浅谈HTTPS安全性
各位可曾有过使用智能手机App在网络商店购物的经验,想必是有的,那你/妳会不会担心不够安全呢?有人会说放心吧,购物网站有使用SSL/TLS加密传输,我们就来聊聊HTTPS好了. 客户端与服务器端的交握 ...
随机推荐
- ES - dynamic field mapping
Dynamic field mapping 1.我们向es提交一个json对象进行索引,es会对json字段和索引字段进行字段类型适配. 规则如下: 2.string字段的转换规则 当date det ...
- GridView更新后获取不到文本框修改后的值
需要在Page_Load事件里为gridview绑定数据时,添加回传判断 if (!IsPostBack) { 绑定数据 }
- python 简单图像识别--验证码
python 简单图像识别--验证码 记录下,准备工作安装过程很是麻烦. 首先库:pytesseract,image,tesseract,PIL windows安装PIL,直接exe进行安装更方便( ...
- C语言的“编译、链接”
我们写的代码,仅仅是文本文件(txt),不管后缀怎么变,终究是文本文件,计算机只能显示,不能做事(执行). 文本文件通过“编译.链接”,成为可执行文件(windows下是exe): 编译:生成.o文件 ...
- 一个WPF只能输入数字的行为。
没啥好说的,直接上代码: public class NumberInputBehaviour : Behavior<TextBox> { protected override void O ...
- 整理Xen理论知识
XEN 简介 XEN 是一个基于X86架构.发展最快.性能最稳定.占用资源最少的开源虚拟化技术.Xen可以在一套物理硬件上安全的执行多个虚拟机,与 Linux 是一个完美的开源组合,Novell SU ...
- PyQt5实现邮件合并功能(GUI)
1. 实战Word批量 需要处理批量替换word的一些数据,数据源从Excel中来. Excel的百分数会变为数字,以及浮点数会多好多精度,为了原汁原味的数据,直接复制数据到文本文件.通过\t来分隔即 ...
- spring boot apollo demo
controller 监听器,监听配置实时变化 src/main/resources---->META-INF---->app.properties apollo 界面 测试访问 : 实时 ...
- 【HDFS API编程】查看HDFS文件内容、创建文件并写入内容、更改文件名
首先,重点重复重复再重复: /** * 使用Java API操作HDFS文件系统 * 关键点: * 1)创建 Configuration * 2)获取 FileSystem * 3)...剩下的就是 ...
- 将asp.net mvc的aspx视图转化为Razor视图
ASP.NET MVC2.0的项目如何升级到3.0?? 前言:微软在2009年3月份推出了MVC之后,可以说是发展的速度非常快,仅仅过了不到3年的时间,MVC版本已经从1.0到达4.0,尤其是2.0和 ...