✅HTTPS建立连接的时候是几次握手?

✅HTTPS建立连接的时候是几次握手?

典型回答

这里其实考察的是TCP的三次握手,以及HTTPS相比HTTP中需要增加的TLS/SSL,但是其实TLS的数据交换并不叫握手,没有这么叫的,他只是数据交换而已。

需要TCP的3次握手,在根据TLS的版本,做2-4步的加密通道建立(TLS 1.2需要4步,TLS 1.3需要2步)。

首先是需要进行TCP的三次握手,用来建议TCP的连接

  • 第一次握手:客户端发送SYN包(同步序列编号)到服务器,进入SYN_SENT状态。
  • 第二次握手:服务器返回SYN-ACK包(确认客户端的SYN),进入SYN_RCVD状态。
  • 第三次握手:客户端发送ACK包确认服务器的SYN,完成TCP连接建立。

✅什么是TCP三次握手、四次挥手?

接下来通过TLS来建立加密通道,根据不同的版本看,情况不一样。以TLS 1.2为例(需2个往返,共4步):

  • ClientHello:发送客户端支持的TLS版本、加密算法、随机数。
  • ServerHello:服务器选定TLS版本、加密算法、随机数;发送证书(身份验证)、ServerKeyExchange(密钥参数,如ECDHE)。
  • 客户端验证证书:生成预主密钥,用服务器公钥加密后发送;计算会话密钥。
  • Finish:双方发送加密的Finished消息验证握手完整性。

对于TLS 1.3来说,做了优化(1个往返,共2步):

  • ClientHello:包含支持的加密算法和密钥共享(Key Share)。
  • ServerHello:选择参数、发送证书、生成会话密钥并直接响应。

(图片来自网络)