Transport

Transport is how bytes move between two programs: connections, handshakes, streams and the protocols on top. A browser opens up to 6 HTTP/1.1 connections for each site, and each one carries one request at a time. HTTP/2 sends many requests at once as streams on one connection.

Play a level

See it on the board

The same traffic runs on two boards. The simulator measured both when this page was built.

Board to show
HTTP/1.1UsersAPI server1 vCPU · 1 GB
HTTP/1.1UsersAPI server1 vCPU · 1 GB
HTTP/1.1 with 6 connections: misses a goal
HTTP/2UsersAPI server1 vCPU · 1 GB
HTTP/2UsersAPI server1 vCPU · 1 GB
HTTP/2 streams on one connection: meets the goals
See it on the board
Measure Goal HTTP/1.1 with 6 connections HTTP/2 streams on one connection
p99 latency under 160 ms 10.1 s Fail 92 ms Pass
Monthly cost 4 USD/mo 4 USD/mo
Error rate 26.9% 0%

Key numbers

Protocol values from the protocol table. The simulator uses the same values.
NumberValue
HTTP/1.1 connections for each site6 connections
Header bytes for each HTTP/1.1 request700 bytes
Header bytes for each HTTP/2 request60 bytes
Round trips to open HTTP/2 (TCP and TLS)2 RTT
Round trips to open HTTP/3 (QUIC)1 RTT
Connections and streamsDrag or use arrow keys to change the protocol

HTTP/1.1 · connections: 6 · 30 files in 7 round trips, 630 ms

How it works

Before the first byte of data, a new connection costs round trips. TCP needs one round trip to open, and TLS adds one more. On a 90 ms link, that is 180 ms before the request starts. A reused connection does not pay this cost again, so keep connections open and share them.

HTTP/1.1 sends one request at a time on each connection. A page with 100 small files waits in line, also when the link has free capacity. Browsers open a few connections for each site to work around this, but each new connection pays its handshake and starts slowly.

HTTP/2 puts many requests on one connection as separate streams, and it compresses repeated headers. Small files no longer wait for each other at the HTTP level. But all streams still share one TCP connection, so one lost packet stops all of them until it is sent again.

HTTP/3 runs on QUIC over UDP. Each stream recovers from loss on its own, and a new connection can start after one round trip, or none for a known server.

The protocol does not add bandwidth. When the link is full, all streams share the same capacity.

In the levels you choose protocols and reuse connections so that round trips do not add up.