闲扯一下

Mac笔记本、Windows台式机、Linux主机。像这三种类型,它们硬件不同,系统不同,服务端处理的编程语言不同。它们之间却可以在网络的世界了自由联通。靠的是什么呢?

靠的是它们遵守相同的规则(如:HTTP)。应用层用什么格式(语言编码,报文字段)封装报文、传输层如何将大量的数据分段,并给每帧数据添加编号和端口信息、网络层如何给没帧数据添加IP地址,目标MAC地址、数据链路层如何将数字信息通过网卡发出去。

HTTPS是传输协议吗?

目前常见的应用层协议

好像没有看到HTTPS啊?
没错,HTTPS并非TCP/IP协议族中的一员,它其实是HTTP协议+SSL协议的组合体,是披着SSL外衣的HTTP。

HTTPS与HTTP有什么关系?

HTTP实现的功能:一种机制简单(这也是从早期众多传输协议中走出来的原因)的超文本传输协议,为客户端和服务器通信服务,是处在TCP/IP协议族中的应用层协议。

HTTP在发送请求时,采用四层架构。

应用层:提供多种应用服务,如:HTTP FTP DNS等,可以直接提供给开发者使用。

传输层:网络间数据的传输,如:TCP TDP,报文数据分割打包成帧

网络层:处理网络中流动的数据包,在复杂的网络段中选择一条传输路线,将数据包送到目的地。将现实中的寄快递(在快递上写上收件地址等信息,送到快递点(类似于路由器))

数据链路层:处理链接网络的硬件部分,如:网络适配器,硬件驱动,操作系统,光纤。

HTTP请求过程中的重要概念!

1.数据包在网络层怎么走的呢?

在数据包传输过程中,需要不断使用地址解析协议(IP和MAC地址对应的表,互相反查),进行路由选择(将数据包丢给一个路由器,路由器会根据数据包上带的地址,自动分拣,传给它认为比较好的下一站路,直到到达目的地)

2.TCP通讯三次握手

  • 客户端先发送一个SYN(synchronize)

  • 服务端收到后,返回一个SYN(synchronize)/ACK(acknowledgement)

  • 客户端发送一个ACK(acknowledgement)

3.DNS域名解析服务:在浏览器输入url后,点击enter。

1.网络首先会拿填写的域名到dns服务器查询对应的IP地址。
2.浏览器将请求传给返回的IP地址。

4.HTTP与HTTPS通信的区别

只是在应用层与传输层之间添加了一个SSL层

HTTPS为什么会安全?

既然HTTPS是披着SSL外衣的HTTP,那SSL是什么呢?

SSL是安全套接字层,是目前比较成熟的提供可靠数据传输的安全协议。SSL可以提供证书认证,数据加密,完整性保护等保护性策略。

数据加密原理

SSL采用的加密策略是:非对此加密+对称加密的混合加密方式

  • 对成加密:单纯的对称加密,加密解密的效率高,但是在客户端于服务端共享密钥时,容易被中间劫持泄露,不够安全

  • 非对称加密:是新一代加密方案,加密解密销量低,但是可以实现密钥的安全传输,想通过公钥解出私钥难道极大,基本不可能。

最中采用在第一次交换共享密钥时,使用非对称加密。然后用共享密钥加密。这样既避免了密钥被劫持,又保证了效率

数据完整性策略

采用报文摘要的策略,防止报文主题被修改。
在报文发送前,先通过md5-base64加密,得到一个报文主体的摘要,把这个摘要放到请求首部中,等服务器收到信息,采用同样的算法,加密报文主体,根据得到的结果是否和报文摘要一致来判断数据的完整性。

SSL和TLS的关系

目前常见的加密协议有两个SSL3.0和TLS1.0,它们之间有什么区别呢?

  • SSL(Secure Socket Layer):是有浏览器开发商网景通信公司发起并开发到了SSL3.0版本

  • TLS(Transport Layer Security):后面主导权移交给了IETF组织,他们在SSL3.0基础上开发了 TLS一系列版本。它们是“父子”关系。

HTTPS协议安全通信步骤

HTTPS协议安全通信步骤中有三个主角元素:客户端,服务器,第三方可信任的证书颁发机构。

过程如下:

  1. 服务器的运维人员向“第三方可信任的证书颁发机构”提供公司的有效信息+公钥。

  2. “第三方可信任的证书颁发机构”认证公司有效,就用“第三方可信任的证书颁发机构”的私钥给服务器的公钥签名,然后创建一个证书,证书中加入了公钥+公钥签名结果,发给服务器。服务器运营人员需要支付一定的费用。

  3. 客服端安装浏览器,浏览器内部内置了“第三方可信任的证书颁发机构”的根证书,里面包含了“第三方可信任的证书颁发机构”的公钥信息
    //正式开始SSL通信

  4. 客户端发送请求给ClientHello到服务器,请求报文中包含客户端支持的SSL指定版本号,加密组件列表(使用的加密算法和密钥长度)

  5. 服务端收到请求后,也回发生个ClientHello回应,里面包含了使用的SSL版本和加密组件(该加密组件是从客户端发生的列表中筛选出来的)

  6. 紧接着服务器发生证书报文(Certificate),将服务器申请的公钥证书传给客户端

  7. 然后服务器发生一个Server Hello Done报文给客户端,表示初期阶段的SSL握手协商结束。

  8. 客户端收到服务器发来的公钥证书后,拿本地存储的第三方机构根证书中的公钥对证书中的签名信息解密,如果解密的结构同证书中的原始服务器公钥信息一样,证明服务器可信。

  9. 接着客户端在本地生成一个随机密码字符串。用服务器的公钥加密这个字符串,将得到的结果传递给服务器器。

  10. 然后客户端再发送一个Change Cipher Spec报文(修改加密规则说明)给服务器,告诉服务器下面的通信将采用刚才的随机密码字符串作为加密密钥。

  11. 最后客户端发生一个Finish报文,报文中包含了从连接到现在所有报文的整体校验码,上面一系列的握手协商是否能最后成功,就看服务器能否正确解密这个Finish报文了。

  12. 服务器正确解密后,也发送个Change Cipher Spec报文(修改加密规则说明)给客户端。

  13. 最后服务端也发送个Finish报文让客户端解密验证。

  14. 等客户端、服务器两者的Finished报文都正常交换后,SSL连接算是正式建立完成。下面的通信就会受到SSL的加密保护。

  15. 现在客户端就可以安全的给服务器发送简单的应用层协议(http)了,并得到受保护的响应

  16. 最后通讯完成,由客户端发送close_notify报文,通知服务器断开链接。

扩展阅读

关于Http协议,你必须要知道的
http协议无状态中的 "状态" 到底指的是什么?!

几张趣图助你理解HTTP状态码

话说 SVN 与 GIT 的区别

科普:String hashCode 方法为什么选择数字31作为乘子

作者:滴水微澜

来源:http://www.cnblogs.com/zhou--fei/p/9932821.html

科普-- 白话HTTPS的更多相关文章

  1. 白话Https

    本文试图以通俗易通的方式介绍Https的工作原理,不纠结具体的术语,不考证严格的流程.我相信弄懂了原理之后,到了具体操作和实现的时候,方向就不会错,然后条条大路通罗马.阅读文本需要提前大致了解对称加密 ...

  2. 白话HTTPS加密机制

    在讲主题之前,我们先来区分两个概念:签名和加密有什么区别? 我们从字面意思看: 签名就是一个人对文件签署自己的名字,证明这个文件是我写的或者我认可的,所以只要别人看到我的签名,认识我字迹的人就知道这个 ...

  3. 自制Https证书并在Spring Boot和Nginx中使用

    白话Https一文中, 介绍了Https存在的目的和工作原理,但多是偏向于原理性的介绍,本文介绍如何一步一步自制一个能够通过浏览器认证的Https证书,并讲解在Spring Boot环境和Nginx环 ...

  4. 【转】互联网全站HTTPS的时代已经到来

    原文地址:http://blog.csdn.net/luocn99/article/details/39777707 前言 我目前正在从事HTTPS方面的性能优化工作.在HTTPS项目的开展过程中明显 ...

  5. 自制Https证书并在Spring Boot和Nginx中使用(转)

    白话Https一文中, 介绍了Https存在的目的和工作原理,但多是偏向于原理性的介绍,本文介绍如何一步一步自制一个能够通过浏览器认证的Https证书,并讲解在Spring Boot环境和Nginx环 ...

  6. Spring Boot工程支持HTTP和HTTPS,HTTP重定向HTTPS

    本文试图以通俗易通的方式介绍Https的工作原理,不纠结具体的术语,不考证严格的流程.我相信弄懂了原理之后,到了具体操作和实现的时候,方向就不会错,然后条条大路通罗马.阅读文本需要提前大致了解对称加密 ...

  7. 实现全站 HTTPS ,为什么国内网站总是那么slow&&low呀!

    1 https://konklone.com/post/switch-to-https-now-for-free# https://theintercept.com/2014/11/20/non-pr ...

  8. 数字签名技术与https

    1,非对称加密技术 非对称加密算法需要两个密钥,公开密钥(publickey)和私有密钥(privatekey):公钥和私钥是成对出现的. 非对称加密例子:B想把一段信息传给A,步骤:1)A把公钥传给 ...

  9. 轻松搭建CAS 5.x系列(2)-搭建HTTPS的SSO SERVER端

    概要说明 CAS要求,必须使用HTTPS的服务,否则就只等实现登录,无法实现单点登录.科普下HTTPS,网站有HTTP和HTTPS两种协议.HTTP是浏览器到网站之间是明文传输,比如你输入帐号名和密码 ...

随机推荐

  1. Python开发的入门教程(二)-List和Tuple类型

    介绍 本文主要介绍Python中List和Tuple类型的基本知识和使用. Python创建list Python内置的一种数据类型是列表:list.list是一种有序的集合,可以随时添加和删除其中的 ...

  2. kolla快速集成openstack-ocata和opencontrail-4.0.1.0单节点

    参考链接: kolla快速集成openstack-ocata和opencontrail-4.0.1.0单节点 https://github.com/Juniper/contrail-docker/wi ...

  3. (新手向)N皇后问题详解(DFS算法)

    非常经典的一道题: N皇后问题: 国际象棋中皇后的势力范围覆盖其所在的行.列以及两条对角线,现在考察如下问题:如何在n x n的棋盘上放置n个皇后,使得她们彼此互不攻击 . 免去麻烦我们这里假定n不是 ...

  4. 神舟zx6-ct5da装黑苹果Macos 10.15.6记录

    可能是一时脑子抽风,突然就想体验一把mac系统.以前就了解过,给非苹果电脑装macos叫黑苹果,emmmmm.好吧,给我的神船也整一个. 看了很多个视频,整理一下装黑苹果过程.本人电脑系统是win10 ...

  5. seo快速排名利器之高权重二级域名

    http://www.wocaoseo.com/thread-225-1-1.html        正规的白帽手法优化一个关键词一般都需要两三个月才能把词做上去,但是现在也有一批做网站优化的采取特殊 ...

  6. 最佳实践:Pulsar 为批流处理提供融合存储

    非常荣幸有机会和大家分享一下 Apache Pulsar 怎样为批流处理提供融合的存储.希望今天的分享对做大数据处理的同学能有帮助和启发. 这次分享,主要分为四个部分: 介绍与其他消息系统相比, Ap ...

  7. App性能测试前需要了解的内存原理

    这两天在研究性能中内存方面的一块,网上也零散看了挺多文章,写得很细但是感觉不够整体,所以这篇算是总结一下吧,当个复习资料. 那么这里个人分为两个大部分,第一部分应用内的内存管理,主要是oom的理解,G ...

  8. 浅析LR.Net工作流引擎

    在当代信息化软件系统开发中,工作流引擎是其中非常重要的一环.所谓工作流引擎,是指工作流作为软件系统的一部分, 其中包括了流程的节点管理.流向管理.流程样例管理.审核管理等重要功能. 工作流引擎可根据角 ...

  9. 项目实战 - 原理讲解<-> Keras框架搭建Mtcnn人脸检测平台

    Mtcnn它是2016年中国科学院深圳研究院提出的用于人脸检测任务的多任务神经网络模型,该模型主要采用了三个级联的网络,采用候选框加分类器的思想,进行快速高效的人脸检测.这三个级联的网络分别是快速生成 ...

  10. [Oracle/SQL]找出id为0的科目考试成绩及格的学生名单的四种等效SQL语句

    本文是受网文 <一次非常有意思的SQL优化经历:从30248.271s到0.001s>启发而产生的. 网文没讲创建表的数据过程,我帮他给出. 创建科目表及数据: CREATE TABLE ...