什么是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. 剑指offer——26树的子结构

    题目描述 输入两棵二叉树A,B,判断B是不是A的子结构.(ps:我们约定空树不是任意一个树的子结构)   题解: 注意,所谓的子结构,是树的形状和值相同,并非判断B是不是A的一部分[如果是这样,那就是 ...

  2. pandas 使用dataframe 索引项相同时出现bug

    使用的是join函数来合并两个dataframe: df=df2.join(df1) bug:columns overlap but no suffix specified: Index([u'muk ...

  3. CSS代码命名惯例语义化的方法

    CSS代码的命名惯例一直是大家热门讨论的话题.今天暴风彬彬想通过分析一个流行三栏布局中的必要元素,来为大家讲解关于使用语义化方法替代结构化方法来命名CSS类的建议和指导. 您还可以参考彬Go的相关文章 ...

  4. Python 执行tail文件并操作

    def log_search(self, logfile, search_content, timeout=10): import time import subprocess import sele ...

  5. django项目基础

    D:\>django-admin startproject GodWork1 D:\>cd GodWork1 D:\GodWork1>python manage.py startap ...

  6. apache 80 端口 反向代理 tomcat 8080端口

    最近有个jsp的项目要放到服务上,但服务器上已经有了XAMPP(apache + mysql + php), 已占用了80端口.但http默认是访问80端口的. 先把tomcat 环境搭建起来, 发现 ...

  7. cocos2D-X LUA 非常简单的一个贪吃蛇案例

    --[[ 贪吃蛇 ]] local RetroSnaker = class("RetroSnaker", function() return cc.Layer:create(); ...

  8. CSS——优雅降级和渐进增强

    什么是渐进增强(progressive enhancement).优雅降级(graceful degradation)呢? 渐进增强 progressive enhancement: 针对低版本浏览器 ...

  9. 0704 Process继承实现多进程、Pool进程池,进程间通过队列通信,Pool实现多进程实现复制文件

    通过继承的方式,实现Process多进程 from multiprocessing import Process import time class MyNewProcess(Process): de ...

  10. vue.js+web storm安装及第一个vue.js

    小白还是自己写一遍吧 1.下载node.js https://nodejs.org/en/download/ 2.安装淘宝镜像(类似于阿里云的maven中央仓库镜像) 安装时间有点长 安装命令:npm ...