本篇文章是楼主在面试过几家公司之后总结的,在基础知识部分中的计算机网络部分,HTTPS和DNS被问到的频率是非常高的,故在此做一个总结。
HTTPS
我们知道,使用浏览器在网上冲浪的时候应用层使用的协议是HTTP或HTTPS协议。至于这个协议的格式这里就不再进行讲解了,本篇文章的重点还是在于HTTPS的握手流程。
我们知道HTTP是很早的时候提出来的,基于当时的视角来说,HTTP属于无状态协议,并且不提供任何的数据加密机制等等。但是随着互联网技术的发展,数据安全、通信安全问题越来越突出。进而,计算机科学家们在HTTP的基础之上结合加密机制提出一个新的超文本传输协议(HTTPS)。
对称加密和非对称加密
为了确保文章的通熟易懂,在这里也稍微从理论的角度来讲解一下常见的两种加密技术(对称加密和非对称加密)。在两个主机进行通信的过程中,如果两个主机之间使用的是明文(HTTP使用的是明文),由于网络传输的不安全性,对数据的窃取将易如反手。因此就需要使用一种机制来使得在不安全的网络传输的基础之上提供安全通信。
首先来聊一下对称加密,这个比较容易理解。举个简单的例子,就好比我们在看抗日剧(非神剧)中的时候,情报部门常用的密码本,这个密码本的使用就是一个对称加密的应用。
简单来说,对称加密就是通信双方都有一个相同的密码本,发送方在发送数据的时候,先根据密码本来讲原始的数据进行加密(最简单的密码本就是移位)。接收方在收到加密的数据之后,再根据与发送方相同的一个密码本进行解密,得到原始的数据。
至于非对称加密就稍微麻烦一点