http 和 https 的区别
一.HTTP 传输协议
1.1 什么是http协议
超文本传输协议,是一个基于请求与响应,无状态的,应用层的协议,常基于
TCP、IP
协议,互联网目前使用的最为广泛的网络协议,所有的WWW
文件都必须遵守这个标准,设计HTTP
协议的初衷,就是为了提供一种发送和接受http
页面的方法。
版本 | 产生时间 | 内容 |
---|---|---|
http 0.9 | 1991 | 不涉及数据包传输,规定客户端和服务器之间只能进行Get请求 |
http 1.0 | 1996 | 传输格式不显示,增加 Put,Patch,Head,Options,Delete命令 |
http 1.1 | 1997 | 增加了长链接,管道机制,分块传输编码 |
http 2.0 | 1996 | 多路复用 |
多路复用的功能
多个 stream
公用一个 TCP/IP
连接
http报文
https
https 是身披 SSL 外壳的HTTP,HTTPS 是一种通过计算机网络进行安全通信的传输协议,经过 HTTP 进行通信,利用
SSL/TLS
建立安全通信,加密数据包,HTTPS
主要就是通过对网站服务器的身份认证,同时保护交互数据的隐式与完整性
http特点
- 无状态
- 无连接(发完数据就断开联系
- 基于请求和相应,由客户端发起,服务器端响应
- 简单快速,灵活,(因为说断开就断开,说响应就相应)
- 他是用明文的方法进行传输,而且不会对通信的双方,进行确认,无法保证数据的完整性。
https特点
- 内容加密:采用混合加密技术,中间者无法直接查看明文内容
- 验证身份:通过证书认证,客户端访问的是自己的服务器
- 保护数据完整性:防止传输的内容被人篡改
HTTP通信传输
客户端输入 URL 回车,DNS 解析域名得到服务器的
IP
地址,服务器端在80
端口监听客户端的请求,端口通过TCP/IP
协议建立 HTTP 请求。
HTTPS 的原理
- http 默认的端口号是80;
- https 默认的端口号是:443;
连接过程
client
向server
发送请求,到服务器的443端口,内容包括,一个随机数
和一个客户端支持的加密算法
- 客户端收到信息以后,给服务器端一个相应握手机制,
server
会返回给服务器端一个随机数
,还有匹配好的加密算法
,这个加密算法,一定是匹配好的加密算法
的子集。 - 随后
server
会往client
发送的是一个数字证书
,server
必须有一套自己的数字证书
,他可以只制作,也可以向组织申请,区别在于自己制作的需要经过客户端认证,其实这个证书就是一个公钥
- 如果客户端认证了
数字证书
以后,就会产生一个随机值(预主密钥
) - 然后客户端将
随机数1
、随机数2
、预主密钥
,组成会话密钥
,然后通过数字证书的公钥
,来加密会话密钥
- 服务器端解密,得到
随机数1
,随机数2
、预主密钥
,验证他们和客户端的相同 - 客户端先发一条加密的消息给服务器,确定服务器能收到
- 服务器也发送一条加密的消息给客户端,保证客户端能收到,那么
SSL
连接就建成了
HTTPS的问题
- https 加密也还是有限的,不能防止对服务器的攻击
- SSL 证书也不是绝对安全的,比如某灯塔国家,可以控制
AC
证书, - SSL 证书需要购买,功能越强大,也就越贵
https
协议会让界面的加载速度延长50%
https
缓存不如http
连接高效https
会占用很多的服务器资源,导致服务器压力增大,或者增大部署服务器的成本。
参考文献
【快速搞懂HTTP与HTTPS】 https://www.bilibili.com/video/BV1rt4y1m7o5/?p=5&share_source=copy_web&vd_source=80cf96a12f63a1720dfc645c2eb041c0
https://blog.csdn.net/LVXIANGAN/article/details/73187726