一、HTTP
1、HTTP(Hyper Text Transfer Protocol:超文本传输协议)
定义:是一种简单的请求-响应超文本传输协议,被用于在Web浏览器和网站服务器之间传递消息。
NOTE: 传输的数据并不是计算机底层中的二进制包,而是完整的、有意义的数据,如HTML 文件, 图片文件, 查询结果等超文本,能够被上层应用识别
特点:无状态、无连接
1)无连接:【即为:通讯结束,客户端与服务器关闭连接】无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间
2)无状态:HTTP协议无法根据之前的状态进行本次的请求处理
3)基于TCP的连接。
其他特点
1)支持客户/服务器模式
2)简单快速:客户向服务器请求服务时,只需传送请求方法和路径。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快
3)灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记
4)明文传输: 不通过任何方式的数据加密
5)默认端口: 80
缺点:
1》通讯使用明文,内容可能被窃听
2》不验证通信方的身份,因此有可能遭遇伪装
3》无法证明报文完整性,所以,有可能被篡改
4》脆弱性和安全漏洞
5》web编程语言可能存在安全漏洞
二、HTTPS
HTTPS = HTTP + SSL/TLS
HTTPS = HTTP + 加密 + 认证身份 + 数据完整性保护 —— https安全的原因
通过SSL证书来验证服务器的身份,并为浏览器和服务器之间的通讯进行加密。通过摘要算法保证数据的完成性
SSL协议位于TCP/IP协议与各种应用层协议之间,浏览器和服务器在使用SSL建立连接时需要选择一组恰当的加密算法来实现安全通讯,为数据通讯提供安全支持。
NOTE: 主要问题:1》客户端知道对方就是对方 2》加密保持数据的完整
HTTPS 通信步骤:
非对称机密 + 对称机密
TCP => TLS/SSL => http上层的数据交换
Https采用了共享秘钥加密和公开秘钥加密两者混合加密机制。
共享秘钥加密【对称加密】/ 公开秘钥加密【非对称加密】
1)共享秘钥解决了数据加密额问题, 而产生秘钥如何传输给对方的问题。
2)公开秘钥解决了共享秘钥的传输问题,而产生了公共秘钥中的公钥是否来自于指定的服务器?【即为: 它是它】
3)证书:证书证明了公钥的正确性。
建立https的通信过程
步骤1:客户端通过发送Client Hello报文开始SSL通信。 报文中包含客户端支持的SSL指定的版本、加密组件(Cipher Suite)列表(所使用的加密算法及秘钥长度等)。
步骤2:服务器可进行SSL通信时,会以Server Hello报文作为应答。 和客户端一样,在报文中包含SSL版本以及加密组件。 服务器的加密组件内容时候从接收到的客户端加密组件内筛选出来的。 —— 即为:服务器选择了TLS版本以及加密的套件
步骤3:之后服务器发送Certificate报文,报文中包含公开加密证书 —— 即为:将服务器的证书发送给客户端
步骤4:最后,服务器发送 Server Hello Done不报文通知客户端,最初阶段的SSL握手协商部分结束
步骤5:SSL第一次握手结束之后,客户端以Client Key Exchange报文作为回应。报文中包含通信加密中使用的一种被称为Pre-master secret的随机密码串。该报文已用步骤3中的公开秘钥进行加密。
步骤6:接着客户端就继续发送Change Cipher Spec 报文。 该报文会提示服务器,在此报文之后的通信会采用Pre-master secret秘钥加密。
步骤7:客户端发送Finished报文。该报文包含连接至今全部报文的整体校验值。 这次握手协商是否能够成功,要以服务器是否能够正确解密该报文作为判定标准。
步骤8:服务器同样发送Change Cipher Spec报文
步骤9:服务器同样发送Finished报文
步骤10:服务器和客户端的 Finished 报文交换完毕之后,SSL 连接 就算建立完成。当然,通信会受到 SSL 的保护。从此处开始进行应用 层协议的通信,即发送 HTTP 请求。
步骤11:应用层协议通信,即发送 HTTP 响应。
步骤12:最后由客户端断开连接。断开连接时,发送 close_notify 报 文。上图做了一些省略,这步之后再发送 TCP FIN 报文来关闭与 TCP 的通信。
注意:pre-master secret + random1(客户端生成的) + random2(服务器生成的) = master secret 【共享秘钥】
pre-master secret的了解: https://zhuanlan.zhihu.com/p/142902614 https://honglu.me/2016/01/13/HTTPS%E8%AF%A6%E8%A7%A3/
三、区别
1)安全性:https是基于TLS/SSL进行加密通讯。
2)连接方式不同:???
3)默认端口: http是80, https是443
4)性能: https又因为需要设计加密以及多次握手,性能叫http低
5)证书:https需要证书,功能越强大的证书费用越高。
本文由mdnice多平台发布
网友评论