什么是HTTP和HTTPS?

HTTP是浏览器与服务器之间以明文的方式传送内容的一种互联网通信协议。

HTTPS是在HTTP的基础上主要基于SPDF协议结合SSL/TLS加密协议,客户端依靠证书验证服务器身份传递加密信息的通信协议。

1991年  HTTP/0.9 仅支持GET请求,不支持请求头

1996年  HTTP/1.0 默认短连接(一次请求建议一次TCP连接,请求完就断开),支持GET、POST、 HEAD请求

1999年  HTTP/1.1 默认长连接(一次TCP连接可以多次请求);支持PUT、DELETE、PATCH等六种请求

           增加host头,支持虚拟主机;支持断点续传功能

2015年  HTTP/2.0 多路复用,降低开销(一次TCP连接可以处理多个请求);

          服务器主动推送(相关资源一个请求全部推送);

          解析基于二进制,解析错误少,更高效(HTTP/1.X解析基于文本);

          报头压缩,降低开销。

HTTPS请求过程:(一次HTTPS请求要进行两次HTTP传输)

  1.客户端发出https请求,请求服务端建立SSL连接;

  2.服务端收到https请求,申请或自制数字证书,得到公钥和服务端私钥,并将公钥发送给客户端;

  3.客户端验证公钥,不通过验证则发出警告,通过验证则产生一个随机的客户端私钥;

  4.客户端将公钥与客户端私钥进行对称加密后传给服务端;

  5.服务端收到加密内容后,通过服务端私钥进行非对称解密,得到客户端私钥;

  6.服务端将客户端私钥和内容进行对称加密,并将加密内容发送给客户端;

  7.客户端收到加密内容后,通过客户端私钥进行对称解密,得到内容。

HTTPS怎么校验证书的有效性?

  证书里面包含了公钥+各种信息+签名,公钥加密私钥解,私钥加密公钥解,通过私钥将签名解密后得到的信息和证书里面的信息比对就可以验证证书的合法性了。

  签名是私钥和各种信息加密后形成的签名。

为什么HTTPS很安全却不普及?      

  1.加密通信与普通的文本通信,要消耗更多的CPU和内存,缓存慢,通信成本较大;

  2.HTTPS通信需要证书,而证书不是免费的。

HTTP各版本的区别的更多相关文章

  1. debug版本和release版本的区别?

    好久没有做web项目了,这项目完成了要发布网站,不好忘了 以前操作过的? 还好脑子还是有点印象 现还是 写个文档吧记录吧 免得 以后作别的了又忘了 那可不妙啊 网站发布步骤:1.先将

  2. paip.sql2k,sql2005,sql2008,sql2008 r2,SQL2012以及EXPRESS版本的区别

    paip.sql2k,sql2005,sql2008,sql2008 r2,SQL2012以及EXPRESS版本的区别 作者Attilax ,  EMAIL:1466519819@qq.com  来源 ...

  3. PHP版本的区别

    原文:PHP版本的区别 以为这个已经写过了,发现没有,赶紧补充下. PHP的版本,自从进入5以后,发布新版本速度明显提升很多,从PHP5.2开始,5.3 .5.4 .5.5,就快要6.0了. 注:ec ...

  4. Data Base mongodb高版本与低版本的区别

    mongodb高版本与低版本的区别 一.mongodb引擎: Mongodb 3.0支持用户自定义存储引擎,用户可配置使用mmapv1或者wiredTiger存储引擎. 3.2版本以后默认的开启的是w ...

  5. vivado各版本的区别

    vivado各版本的区别 Vivado HL Design Edition: Vivado HL System Edition: 区别在于System Edition包含有system generat ...

  6. h5 和之前版本的区别

    html5和之前版本的区别就是:以前版本多采用<tr><td>等标签,对于webapp的开发不是很好把控.H5采用<div>等标签直接进行布局(且多了许多标签功能很 ...

  7. [51CTO]给您介绍Windows10各大版本之间区别

    给您介绍Windows10各大版本之间区别 随着win10的不断普及和推广,越来越多的朋友想安装win10系统了,但是很多朋友不知道win10哪个版本好用,为了让大家能够更好的选择win10系统版本, ...

  8. mongodb高版本与低版本的区别

    mongodb高版本与低版本的区别 一.mongodb引擎: Mongodb 3.0支持用户自定义存储引擎,用户可配置使用mmapv1或者wiredTiger存储引擎. 3.2版本以后默认的开启的是w ...

  9. 【Maven】Snapshot和Release版本的区别

    Snapshot版本代表不稳定.尚处于开发中的版本,快照版本. Release版本则代表稳定的版本,发行版本. 什么时候用Snapshot版本? 依赖库中的jar正处于开发的阶段,会被经常被更新,这种 ...

  10. MVC ASP.NET MVC各个版本的区别

    ASP.NET MVC各个版本的区别 Net Framework4.5是不支持安装在window server 2003上,如非装请用net framework4.0; MVC1.0 publsh t ...

随机推荐

  1. Quartz2作业监听

    在本教程中,我们将展示/介绍如何创建一个JobListener,跟踪运行工作状态在作业完成等. P.S 这个例子是Quartz 2.1.5 1. Quartz 作业 作业 - 用于打印一个简单的信息, ...

  2. 20140502 static_cast和dynamic_cast的类型检查 双链表建立,删除,打印

    1.static_cast和dynamic_cast的类型检查 static_cast的类型检查:只检查无关类之间的转换 CBaseY* pY1 = static_cast<CBaseY*> ...

  3. 字符串KMP算法

    讲解:http://blog.csdn.net/starstar1992/article/details/54913261 #include <bits/stdc++.h> using n ...

  4. .NET Core 3.0之深入源码理解Startup的注册及运行

    原文:.NET Core 3.0之深入源码理解Startup的注册及运行   写在前面 开发.NET Core应用,直接映入眼帘的就是Startup类和Program类,它们是.NET Core应用程 ...

  5. js正则表达式常见面试题

    1 . 给一个连字符串例如:get-element-by-id转化成驼峰形式. var str = "get-element-by-id"; var reg = /-\w/g; / ...

  6. ubuntu卸载node和npm

    sudo apt-get remove --purge npm sudo apt-get remove --purge nodejs sudo apt-get remove --purge nodej ...

  7. Tomcat - 基本知识

    基本概念 Tomcat是接收和解析http请求,并将结果返回客户端的应用程序 轻量级的web应用服务器 适用于并发性不是很高的系统中 开发和调试jsp的首选 类似的应用程序:Jetty, JBoss/ ...

  8. C++调用python(C++)

    C++源代码:python部分就是正常的python代码 #include <string.h> #include <math.h> #include "iostre ...

  9. oracle 删除掉重复数据只保留一条

    用SQL语句,删除掉重复项只保留一条 在几千条记录里,存在着些相同的记录,如何能用SQL语句,删除掉重复的呢 .查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断 select ...

  10. dos中文显示乱码怎么办?

    其实只需要一条命令 chcp 65001 执行该操作后,代码页就被变成UTF-8了 也可是GBK,  命令式:  chcp  936 2.修改窗口属性,改变字体 在命令行标题栏上点击右键,选择&quo ...