一、前言
现在如果你想要自己建一个网站,那么我相信你不可避免的会接触到https协议。
https协议和http协议的作用其实是一样的,用于客户端与浏览器中间收发数据。
唯一的区别在于https
比http
多了一个s
,也就是安全层(secure)。
不理解http协议的可以参考文章:手写一个WebServer;
二、http缺陷
从http的原理我们可以明白这么一个事实:客户端与服务器之间是直接通过套接字收发数据的。
同时一个ip地址发送到另一个ip地址,一般其中间都会经过许多中继点。
不理解的可以参考文章:网络编程详解。
比如身处四川的你在电脑上发送一条数据给北京的某个服务器,你发生的数据可能就会经由你家的路由器、然后是中间无数的网络节点、最终到达北京的服务器。
此时只要有人在这条线路之间进行网络数据监视,便能够轻松获得你发送给服务器的数据。
graph LR
A[A]-- 数据-->B[B]
B[B]-- 数据-->C[C]
比如上图中A想要发送给C数据,很多时候就不得不经由B去转发,那么B自然能够轻易获取到A发送给C的数据了。
这便是http问题之一的数据泄露,一旦其中包含一些隐秘的数据,甚至可能造成资金损失。
然后再试想一下,虽然A确实将数据往C发了,但中间的B完全可以不继续转发,而是直接给你返回一个伪造的数据:
graph LR
A[A]-- 数据-->B[B]
B[B]-- 返回伪造数据-->A[A]