「1分钟--前端05」HTTP那些事(下)

HTTPS

一.HTTP的问题

1.明文传输可能被窃听;

2.认证问题,服务器和客户端都可能是伪装的,用户的权限无法验证;

3.可能被篡改,中间人攻击;

二.HTTPS介绍

1.超文本传输安全协议;

2.基于TLS/SSL 传输层安全协议,可以防止窃听和篡改;

3.TLS和SSL的关系:SSL是TLS的前身;TLS是SSL的标准化;

4.TLS/SSL协议的三个基本算法:

非对称加密,对称加密,散列函数

「1分钟--前端05」HTTP那些事(下)_第1张图片
三个基本算法

5.信鸽例子,理解对称和非对称加密

(1)对称加密:收发双方规定密钥,字母偏移5位加密;

A.加密的人也能解密,这就是对称;

B.问题:密钥需要传递,传递的过程中,可能被窃听和篡改

(2)非对称加密:

A.发送人留着钥匙,把带锁(开启状态)的盒子传过去,加密的人锁上;加密的人自己解不开,就是非对称;

B.问题:可能被窃听更换掉盒子

C.认证机构来给盒子做签名,也就是我们HTTPS需要的网站证书;

6.总结:

非对称可靠但慢,对称的高效性但不可靠;配合使用

非对称加密进行身份验证和密钥交换,对称加密进行数据的加密;


三次握手四次挥手

「1分钟--前端05」HTTP那些事(下)_第2张图片
三次握手

1.为什么要三次握手:

确保客户端和服务端都能确认双方收发正常;

(1)第一次握手:客户端--什么都不能确认;服务端--确认对方发送正常;

(2)第二次:客户端--自己发和收正常,对方收和发正常;服务端--对方发,自己收;

(3)第三次:客户端--自己发和收,对方收和发;服务端--对方收发,自己收发;

2.为什么要发送特定的数据包?

三次握手的另一个目的是确认双方都支持TCP协议;

(1)第一次,客户端发seq=x

(2)第二次server猜测client要建立TCP,但不能确定,发送ack为x+1,seq = y;

(3)第三次,客户端知道服务端支持TCP,知道自己要建立TCP,发送ack = y+1, seq = x+1;

最后,服务端知道客户端支持TCP,确定双方要建立TCP连接;

3.seq,ack,SYN和ACK是什么意思?

(1)seq: 数据包本身的序列号;

(2)ack: 期望对方继续发送的那个数据包的序列号;

(3)SYN标志位,1表示请求连接;

(4)ACK就是ack后面加上的数字

「1分钟--前端05」HTTP那些事(下)_第3张图片
四次挥手

4.为什么要四次挥手

(1)根本原因,客户端发送FIN表示自己发完了数据,但是还允许对方继续发送剩下的数据。

(2)比如打电话:A:我没啥说的了;B:知道了;可能还会说些;B:我也说完了;A:知道了;

5.数据包的格式

和握手同理,+1表示确认。

以上:http最常见的问题都总结好了

你可能感兴趣的:(「1分钟--前端05」HTTP那些事(下))