I have read Ivan Ristic, Bulletproof SSL and TLS. There its been said after 2 RTT, client start sending application data like for e.g. GET request.
But I have seen when analysing packets through wireshark that in some sites clients starts sending application right along with ClientFinished message i.e. after 1 RTT, while in some cases it doesn't and starts sending application data after 2 RTT i.e. after receiving ServerFinished message.
I think that its not required to wait till ServerFinished for sending application data since client already has key, so it can start sending application data.
In what cases does client sends application data before ServerFinished message and in what cases after ServerFinished message?
If 1 RTT was already there in TLS 1.2, then why there is so fuzz about 1 RTT in TLS 1.3? This is not my main question by the way, answer it if you like.
Copied from 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