HTTPS
一.HTTP的问题
1.明文传输可能被窃听;
2.认证问题,服务器和客户端都可能是伪装的,用户的权限无法验证;
3.可能被篡改,中间人攻击;
二.HTTPS介绍
1.超文本传输安全协议;
2.基于TLS/SSL 传输层安全协议,可以防止窃听和篡改;
3.TLS和SSL的关系:SSL是TLS的前身;TLS是SSL的标准化;
4.TLS/SSL协议的三个基本算法:
非对称加密,对称加密,散列函数
三个基本算法5.信鸽例子,理解对称和非对称加密
(1)对称加密:收发双方规定密钥,字母偏移5位加密;
A.加密的人也能解密,这就是对称;
B.问题:密钥需要传递,传递的过程中,可能被窃听和篡改
(2)非对称加密:
A.发送人留着钥匙,把带锁(开启状态)的盒子传过去,加密的人锁上;加密的人自己解不开,就是非对称;
B.问题:可能被窃听更换掉盒子
C.认证机构来给盒子做签名,也就是我们HTTPS需要的网站证书;
6.总结:
非对称可靠但慢,对称的高效性但不可靠;配合使用
非对称加密进行身份验证和密钥交换,对称加密进行数据的加密;
三次握手四次挥手
三次握手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后面加上的数字
四次挥手4.为什么要四次挥手
(1)根本原因,客户端发送FIN表示自己发完了数据,但是还允许对方继续发送剩下的数据。
(2)比如打电话:A:我没啥说的了;B:知道了;可能还会说些;B:我也说完了;A:知道了;
5.数据包的格式
和握手同理,+1表示确认。
以上:http最常见的问题都总结好了
网友评论