综述
理解一个抽象概念,可以通过类比法来切入,然后反复的实践、加深理解,直到把抽象概念理解透彻。比如我们常用水流来理解电流,水位差来理解电势、电压;生活中的哲理、计算机中的模型、算法,归根到底其实都是想通的,没什么难的。
HTTPS连接(应用层)建立的基础,是在TCP连接(传输层)建立之上。我们知道网络模型中,上层的数据是被包装在下层的数据中的,像蚕宝宝的壳子,一层又一层;连接的建立我们可以类比信鸽送信,并不能保证数据准时达到(这个可以解释为什么TCP建立连接需要三次握手,而不是两次握手),不送信并不表示不收信(这个解释了为什么TCP断开连接需要四次挥手,而不是像握手一样,在第二个数据包中同时放着ack和syn)。HTTPS是在HTTP上做了防篡改、防监听、防伪装,其中所使用的方案就是我们常规用到的对称加密和非对称加密,并结合一些通信的策略来解决的。
SSL、TLS、CA
SSL(Secure Socket Layer 安全套接层)是基于HTTP之下TCP之上的一个协议层,是基于HTTP标准并对TCP传输数据时进行加密,所以HPPTS是HTTP+SSL/TCP的简称。
TLS(传输层安全)是更为安全的升级版 SSL。TLS/SSL是一种加密通道的规范,它利用对称加密、公私钥不对称加密及其密钥交换算法,CA系统进行加密且可信任的信息传输。
CA(CertificateAuthority)是证书认证机构。
TCP连接建立
image.png- 三次握手保证了不会建立无效的连接,从而浪费资源。从策略上来理解,client端发的你能收到,server端发的你也能收到,确认过之后,连接才建立。
- 四次握手,不发并不表示不收,不收并不表示不发,所以四次挥手才能断开TCP连接。
用信鸽来解释HTTPS
参考:用信鸽来解释 HTTPS
这个模型,从一个简单的通信模型做为切入。传统的HTTP明文传输、对称加密的方案加密数据传输(对称密钥需要走一次网络请求,因为要约定对称密钥哈)、发送一个带锁但是盒子开着的数据包(对方把东西放进去之后,我收到之后来开锁;盒子可能被中间调包)、发送一个锁开着的盒子并且给盒子签名防篡改(CA证书认证机构来完成签名,我们叫做颁发证书)、带锁的盒子用来交换对称密钥,拿到对称密钥之后,以后还是对称加密来传输数据。
本质上,拿对方给的公钥加密,对方拿到加密后的数据之后,要用自己的私钥解密。所以,要有两个公钥,两个证书,服务端验客户端,客户端也要验服务端。
HTTPS连接建立
image.png- 当客户在浏览器中输入网址的并且按下回车,浏览器会在浏览器DNS缓存,本地DNS缓存,和Hosts中寻找对应的记录,如果没有获取到则会请求DNS服务来获取对应的IP。
- HTTPS在HTTP的基础上加入了SSL协议,SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。
网友评论