What is the difference between TLS Record Layer and Handshake layer version

Viewed 1703

They are a few posts on the web talking about and around it but not explaining the differences and significances. A Client Hello packet can be seen to have a Record Layer and Handshake Protocol version - 0x0301 and 0x0303. What is the difference between them? Which TLS version is being used when one of them shows 1.0 and the other indicates 1.2?

1 Answers

The TLS record layer version is 1.0 because the TLS version is negotiated on the basis of version mentioned in client hello. For example, if the client asks to use 1.2 and send the client hello to server and server asks to use 1.3 strictly then TLS record would never know which version will be negotiated. As such, it use 1.0 as generic.

The RFC tells you the same:

Earlier versions of the TLS specification were not fully clear on what the record layer version number (TLSPlaintext.version) should contain when sending ClientHello (i.e., before it is known which version of the protocol will be employed). Thus, TLS servers compliant with this specification MUST accept any value {03,XX} as the record layer version number for ClientHello."

Related