← Enterprise IT Networks Studio
🔒

TLS Handshake Animation

Message-by-message walk-through of TLS 1.3 (1-RTT) vs. TLS 1.2 (2-RTT)

ROUND TRIP 1 OF 1Message 1/6
💻
Client
🖧
Server
ClientHello
ServerHello + key_share
EncryptedExtensions + Certificate + CertificateVerify
Server Finished
Client Finished
Application Data (encrypted)
Step 1: ClientHello
Client sends: TLS version 1.3, supported cipher suites (TLS_AES_256_GCM_SHA384, TLS_CHACHA20_POLY1305_SHA256), a key_share extension containing its ephemeral (EC)DHE public key, and the server_name (SNI). Critically, the client guesses the key exchange group and sends its share immediately — no separate round trip needed to negotiate it.
TLS 1.3 vs TLS 1.2
Round trips1.3: 1-RTT · 1.2: 2-RTT
Static RSA key exchange1.3: removed · 1.2: allowed
Forward secrecy1.3: mandatory · 1.2: optional
Handshake encryption1.3: after ServerHello · 1.2: none
0-RTT resumption: for a repeat connection to a server it has visited before, TLS 1.3 can send encrypted application data in the very first flight using a resumed pre-shared key (PSK) — zero additional round trips before data flows, though this mode is vulnerable to replay attacks for non-idempotent requests and is used cautiously.
Key Facts
RFC 8446 defines TLS 1.3; RFC 5246 defines TLS 1.2
SNI (Server Name Indication) lets one IP host many TLS certs
CertificateVerify proves possession of the certificate's private key
AES-GCM and ChaCha20-Poly1305 are AEAD ciphers — encrypt + authenticate in one pass

About the TLS Handshake Animation

This simulator walks through the TLS handshake message by message, letting you compare the streamlined 1-round-trip (1-RTT) TLS 1.3 flow against the older 2-round-trip (2-RTT) TLS 1.2 flow. Each message is explained in plain language: what it contains, which side sends it, and why it exists — turning an otherwise abstract cryptographic protocol into a concrete sequence you can step through.

Why TLS 1.3 needs only one round trip

TLS 1.3 (RFC 8446) collapses the handshake by having the client guess the key-exchange group and send its ephemeral (EC)DHE public key in the very first message (ClientHello). The server can then respond with its own key share, certificate, and Finished message all in a single flight — both sides have enough information to derive the shared secret after just one round trip. TLS 1.2, by contrast, negotiates the cipher suite and key-exchange parameters in the first round trip, then exchanges the actual key material and Finished messages in a second round trip — hence 2-RTT before application data can flow.

What each handshake message accomplishes

ClientHello/ServerHello negotiate the protocol version, cipher suite, and randomness that seeds all derived keys. The Certificate and CertificateVerify messages prove the server's identity by presenting a CA-signed certificate and a signature over the handshake transcript. The Finished messages — HMACs over the entire transcript — are the final integrity check: if any prior message was tampered with in transit, the HMACs will not match and the connection is aborted before any application data is exchanged.

Forward secrecy and why static RSA key exchange was removed

A cipher suite has forward secrecy if a compromise of the server's long-term private key in the future cannot be used to decrypt past recorded sessions. (EC)DHE key exchange achieves this because a fresh ephemeral key pair is generated for every connection and discarded afterward. Static RSA key exchange (where the pre-master secret is encrypted directly with the server's long-term RSA public key) has no forward secrecy — if that key is ever compromised, every past session recorded by an eavesdropper can retroactively be decrypted. TLS 1.3 removed static RSA key exchange entirely for this reason.

Frequently asked questions

What is 0-RTT and is it safe?

0-RTT (zero round trip time) lets a client resume a previous TLS 1.3 session using a pre-shared key (PSK) and send encrypted application data in its very first flight, before the handshake even completes. It eliminates handshake latency entirely for repeat connections but is vulnerable to replay attacks, so servers typically restrict 0-RTT data to idempotent requests (e.g., HTTP GET) only.

Does TLS 1.3 encrypt the certificate?

Yes — this is a key difference from TLS 1.2. Because handshake traffic keys are derived immediately after ServerHello, the server's Certificate and CertificateVerify messages in TLS 1.3 are encrypted, hiding the server's certificate (and therefore which site is being visited) from a passive eavesdropper on the wire — though SNI in the ClientHello may still leak the hostname unless Encrypted Client Hello (ECH) is also used.

Why is TLS 1.2 still in use if TLS 1.3 is faster and more secure?

Legacy client and server compatibility. Some older embedded devices, corporate middleboxes, or legacy systems only support TLS 1.2 or earlier. Modern web browsers and servers negotiate the highest mutually supported version automatically, and most now default to TLS 1.3 with TLS 1.2 as fallback.

What is the difference between TLS and SSL?

SSL (Secure Sockets Layer) is the predecessor to TLS; SSL 2.0 and 3.0 are both deprecated and insecure. TLS (Transport Layer Security) 1.0 through 1.3 are the modern, standardized successors — "SSL" is still used colloquially (e.g., "SSL certificate") but virtually all traffic described this way is actually using TLS.

🎓

Try our Enterprise IT Networks Studio

More calculators, simulators, and guides for this discipline.

Related tools & guides

DNS Resolution & DHCP SimulatorZero Trust Network Security ExplainedARP Resolution SimulatorCCNP Security SCOR Exam Guide