He leído Ivan Ristic, SSL y TLS a prueba de balas. No se ha dicho después de 2 RTT, el cliente comienza a enviar datos de la aplicación como, por ejemplo, Solicitud GET.
Pero al analizar paquetes a través de Wirehark, he visto que en algunos sitios los clientes comienzan a enviar la aplicación junto con el mensaje ClientFinished, es decir, después de 1 RTT, mientras que en algunos casos no lo hace y comienza a enviar los datos de la aplicación después de 2 RTT, es decir, después de recibir ServerFinished mensaje.
Creo que no es necesario esperar hasta que ServerFinished envíe los datos de la aplicación ya que el cliente ya tiene una clave, por lo que puede comenzar a enviar los datos de la aplicación.
¿En qué casos envía el cliente los datos de la aplicación antes del mensaje ServerFinished y en qué casos después del mensaje ServerFinished?
Si 1 RTT ya estaba allí en TLS 1.2, entonces ¿por qué hay tanta confusión sobre 1 RTT en TLS 1.3? Por cierto, esta no es mi pregunta principal, responda si lo desea.
Copiado desde RFC
Client Server
ClientHello -------->
ServerHello
Certificate*
ServerKeyExchange*
CertificateRequest*
<-------- ServerHelloDone
Certificate*
ClientKeyExchange
CertificateVerify*
[ChangeCipherSpec]
Finished -------->
[ChangeCipherSpec]
<-------- Finished
Application Data <-------> Application Data
Figure 1. Message flow for a full handshake