TLS握手中的RTT

TLS 1.2 握手过程中的 RTT 次数

TLS 1.2 握手通常需要2 RTT 才能完成。具体步骤如下:

  1. 第一次 RTT

    • 客户端发送 ClientHello:客户端生成一个随机数(Client Random)并发送 ClientHello 消息。
    • 服务器响应 ServerHello:服务器生成一个随机数(Server Random),选择加密套件,发送 ServerHello 消息,可能还包括 CertificateServerKeyExchangeCertificateRequestServerHelloDone 消息。
  2. 第二次 RTT

    • 客户端响应 ServerHelloDone:客户端发送 ClientKeyExchangeChangeCipherSpecFinished 消息。
    • 服务器完成握手:服务器接收 ClientKeyExchangeChangeCipherSpecFinished 消息,并发送 ChangeCipherSpecFinished 消息。
      在这里插入图片描述

TLS 1.3 1-RTT 初次

TLS 1.3 握手过程中通常只需要 1 个 RTT 即可完成

  1. 第一次 RTT

    • 客户端发送 ClientHello:客户端生成一个随机数(Client Random),发送 ClientHello 消息,其中包括支持的加密套件列表、协议版本等信息,并附带公钥信息用于密钥交换。如果是 0-RTT 握手,还可以包含早期数据。
    • 服务器响应 ServerHello:服务器生成一个随机数(Server Random),选择加密套件,发送 ServerHello 消息,可能包括 EncryptedExtensionsCertificateCertificateVerifyFinished 消息。
  2. 客户端完成握手

    • 客户端发送 Finished:客户端接收服务器的 ServerHello 消息后,立即发送 Finished 消息,完成握手。

TLS1.3 0-RTT 握手过程

  • 零往返时间:在传统的握手过程中,客户端需要等待至少一个往返时间(RTT)才能发送数据。但是在 0-RTT 握手中,客户端可以在发送 ClientHello 消息的同时发送应用数据,而不需要等待服务器的响应。这意味着从客户端开始握手到发送数据的过程中,不需要等待任何往返,故称为 0-RTT
  1. 0-RTT 数据发送

    • 客户端发送 ClientHello 和早期数据:客户端发送 ClientHello 消息,并附带早期数据和之前会话的会话票据。
  2. 服务器处理 ClientHello 和早期数据

    • 服务器响应 ServerHello:服务器验证会话票据,恢复会话密钥,发送 ServerHello 消息,处理早期数据,并发送 Finished 消息。
  3. 客户端完成握手

    • 客户端发送 Finished:客户端接收 ServerHello 消息后,发送 Finished 消息,完成握手。

在 0-RTT 握手过程中,客户端可以在握手开始时就发送应用数据,从而实现 0 个 RTT 的数据传输延迟。

总结

  • TLS 1.2:通常需要 2 个 RTT 才能完成握手。
  • TLS 1.3:通常只需要 1 个 RTT 即可完成握手。
  • TLS 1.3(0-RTT):支持 0 个 RTT 数据传输(在之前已有会话的情况下)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值