HTTP
HTTP全称叫做超文本传输协议,它定义了客户端和服务端之间交换报文的格式和方式,默认使用80端口,它使用TCP作为传输层协议,保证了数据传输的可靠性。HTTP是一个无状态的协议,HTTP服务器不会保存关于客户的任何信息。
它有两种连接模式,一种是持续连接,另一种是非持续连接。
非持续连接指的是服务器必须为每一个请求的对象建立和维护一个全新的连接。持续连接下,TCP连接默认不关闭,可以被多个请求复用。采用持续连接的优点是可以避免每次简历TCP连接三次挥手所花费的时间。
HTTP协议存在的问题:
1,HTTP报文使用明文方式发送,可能被第三方窃听
2,HTTP可能被第三方截取后修改通信内容,接收方没有办法发现报文内容的修改
3,HTTP还存在身份被冒充的情况出现
因此,HTTP是不安全的,存在隐患的,这种情况下,HTTPS应运而生。
HTTPS
HTTPS全称叫做超文本传输安全协议,HTTPS是基于HTTP协议的,不过它使用TLS/SSL来对数据进行加密。使用TSL/SSL协议,所有的信息都是加密的,第三方没有办法窃听,并且它提供了一种校验机制,信息一旦被修改,通信的双方会立刻发现,它还配备了身份证书,防止身份被冒充的情况出现。
TLS 握手过程
第一步,客户端向服务器发起请求,请求中包含使用的协议版本号、生成的一个随机数、以及客户端支持的加密方法。
第二步,服务器端接收到请求后,确认双方使用的加密方法、并给出服务器的证书、以及一个服务器生成的随机数。
第三步,客户端确认服务器证书有效后,生成一个新的随机数,并使用数字证书中的公钥,加密这个随机数,然后发给服 务器。并且还会提供一个前面所有内容的 hash 的值,用来供服务器检验。
第四步,服务器使用自己的私钥,来解密客户端发送过来的随机数。并提供前面所有内容的 hash 值来供客户端检验。
第五步,客户端和服务器端根据约定的加密方法使用前面的三个随机数,生成对话秘钥,以后的对话过程都使用这个秘钥 来加密信息。