HTTPS 相关内容总结
HTTPS常见的状态码?
- 1XX:提示信息,表示目前是协议处理的中间状态,还需要后续的操作
- 2XX:成功,报文已经收到并被正确处理
- 3XX:重定向,资源位置发生变动,需要客户端重新发送请求
- 4XX:客户端错误,请求报文有误,服务端无法处理
- 5XX:服务端错误,服务端在处理请求时发生了错误
HTTP1.0 1.1 2 3 演变
HTTP 1.1 vs 1.0
- 长连接改善短链接的性能开销
- 支持管道网络传输:只要请求发出去了,不必等待其回来
长连接的问题
- 占用资源
- 长连接期间会使负载均衡失效
HTTP 2.0 vs 1.1
- 头部压缩
- 二进制格式
- 并发传输多路复用:解决队头阻塞的问题
- 服务器主动推送资源
HTTP 3.0 vs 2.0
- QUIC:UDP的优势
握手过程总结
TCP握手过程
- 客户端随机初始化序号,并将此序号置于TCP的首部的序号字段,同时将SYN标志位置为1,表示SYN报文。接着将第一个SYN报文发送给服务端,表示向服务端发起连接。
- 服务端收到客户端的 SYN 报文后,服务端也初始化自己的序号,将此序号填入TCP的序号字段中,其次把TCP的确认应答号字段填入(server_isn = 客户端初始化序号 + 1),接着把SYN和ACK标志位置为一。发送给客户端。
- 客户端收到服务端报文后,回应应答报文,ACK置为1,其次将确认应答号填入 = server_isn + 1,最后把报文发送给服务端。
TLS use RSA 握手过程
- 客户端首先会发一个 Client Hello 消息。
- 服务端收到客户端的 Client Hello 消息后,确认TLS版本号是否支持,从客户端密码套件列表中选择密码套件,生辰随机数;接着,返回Server Hello消息。
- 客户端验证证书
- 客户端生成新的随机数,用服务器的RSA公钥加密该随机数,通过Client Key Exchange消息发送给服务端;服务端收到后,使用RSA私钥解密,得到客户端的随机数。此时,双方根据已经得到的三个随机数,生成会话密钥master secret,然后客户端发送一个 Change Cipher Spec,告诉服务端开始使用加密方式发送信息。然后,客户端再发一个 Encrypted Handshake Message 消息,把之前所有发送的数据做个摘要,再用会话密钥master secret加密一下,让服务器做个验证。
- 服务端也同样发送 Change Cipher Spec 和 Encrypted Handshake Message,如果双方的加密和解密都没问题,握手正式完成。
TLS use ECDHE 握手过程
- 客户端首先会发一个 Client Hello消息。
- 服务端发送Server Hello,客户端密码套件列表中选择密码套件。
- 客户端验证服务端证书。
- 客户端会生成一个随机数作为客户端椭圆曲线的私钥,然后再根据服务端前面给的信息,生成客户端的椭圆曲线公钥,然后用Client Key Exchange消息发给服务端,算好会话密钥后,客户端会发一个 Change Cipher Spec 消息,告诉服务端后续改用对称算法加密通信,接着,客户端会发Encrypted Handshake Message 消息,把之前发送的数据做一个摘要,再用对称密钥加密一下,让服务端做个验证,验证下本次生成的对称密钥是否可以正常使用。
- 服务端发 Change Cipher Spec 和 Encrypted Handshake Message 消息,如果双方都验证加密和解密没问题,那么握手正式完成。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Writer-X!