有人问我一道这样的题:http 和 https 区别,https 在请求时额外的过程,https 是如何保证数据安全的? 然后我个人总结一下这里给出回答。
这个问题分两部分:
1. http 和 https 区别
首先我先概述一下http是什么?
Http是一个应用层的协议,它只在实在TCP层上做了而外一些约定,符合约定的就是http协议。从变成的角度来看,我们最简单网络编程,建立socket之后,可以互相传递数据。然后传递的这些数据符合一些约定就是http一些了。
这传递的主要有两部分:
1)请求:请求头和请求体。
请求头包含:request url,host,content-type等等。请求体是我们告诉服务器,我们想要的服务,就是和服务器交互的信息。
2). 响应:响应头和响应体。响应头code,正常200。
废话不多说。直接回到这个问题:
-
从网络协议模型上来看:从上图可以看出https比http协议多了一层,https比http多了SSL/TLS层。HTTPS 使用 SSL(Secure Socket Layer) 和 TLS(Transport Layer Security)这两个协议。
-
从性能上讲:http高于https。一般https会比http慢两倍以上。
http的请求全过程:三次握手,四挥手。这里有个知识点:滑动窗口。
2. https 在请求时额外的过程,https 是如何保证数据安全的?
https协议会让客户端在验证服务器端的证书之后。生成一串随机的密码串,然后加上两个随机数计算,并且和服务器端协商之后,就使用这个计算之后的key去加密敏感数据,然后发送给客户端。
**怎么和服务器协商呢?**就是客户端会发送的随机密码串和两个随机数给服务器,服务器验证这个数据的正确性和密码正确,就是协商完成。
所以结论:https是通过对称加密算法来保证数据的安全性的。
3. 抓包查看
http的抓包:
https的抓包:
想知道更多抓包的细节及原理,可以关注我的公众号:程序袁小黑,搜这篇文章就可以看到。
最后总结一句话:HTTP+ 加密 + 认证 + 完整性保护 =HTTPS。
更多精彩内容请关注我的微信公众号: