Vol. I · No. 46The protocol sectionSat, 10 Oct 2026
Layer 7 · Web · the same HTTP, sent far better

HTTP/2

HTTP, multiplexed

HTTP/2 changes how HTTP travels, not what it says. The methods, headers and status codes are unchanged, but it carries many requests at once over one TCP connection, compresses repeated headers away, and is binary rather than text — ending the era of six connections per origin.

HTTP/2 keeps HTTP’s meaning and multiplexes it into one binary connection — many requests in flight, headers compressed.

Operates at
Layer 7
over one TCP conn
Port
443
in practice always TLS
Framing
Binary
streams and frames
Headers
HPACK
compressed, indexed

How it works

One connection carrying many requests at once
HTTP/1.1 — a queue per connection
One response at a time; browsers opened six connections just to work around it.
HTTP/2 — interleaved streams
S1
S3
S5
Requests and responses interleave as frames on one connection, in any order.
Streams

Each request/response pair is a numbered stream; frames from many streams interleave freely.

HPACK

Headers repeated on every request are sent once and referenced by index afterwards.

Priority & flow control

A client can say which streams matter, and either end can throttle per stream.

The gain is real but it stops at the transport: because everything shares one TCP connection, a single lost packet still stalls every stream underneath it — the head-of-line blocking QUIC was built to remove.

The main points

What HTTP/2 does, step by step

1
Negotiate at the handshake

ALPN inside the TLS handshake agrees “h2” before any request is sent — no extra round trip.

2
Open streams

Each request takes a new odd-numbered stream ID; many can be open on the connection at once.

3
Send binary frames

HEADERS and DATA frames from different streams interleave, so nothing waits its turn.

4
Reassemble per stream

The far end sorts frames by stream ID back into the requests and responses HTTP has always had.

What changed, what didn’t
Same semantics — methods, headers, status codes
New framing — binary, not text
One connection — not six per origin
HPACK — header compression
Server push — added, then abandoned
Still TCP — so still head-of-line blocked

In cybersecurity

Everything true of HTTP is still true here — plus new state to exhaust: streams, header tables and priority trees are all things a client can abuse cheaply.

Rapid Reset

CVE-2023-44487: open and cancel streams endlessly to make a server do unbounded work.

Cap concurrent streams

SETTINGS_MAX_CONCURRENT_STREAMS is the throttle that keeps one client from taking the server.

HPACK bombs

A crafted header table can expand into far more memory than the bytes sent suggest.

Request smuggling

Downgrading h2 to HTTP/1.1 at a proxy re-introduces boundary disagreements.

TLS is effectively required

Browsers only speak h2 over TLS, so the transport is encrypted by default.

Inspection is harder

Binary framing means tooling that grepped HTTP text no longer sees anything useful.

Rides in the stack

IPTCPTLSHTTP/2

ALPN in the TLS handshake is how client and server agree on h2 before the first request is written.

Works with

HTTPHTTP/3gRPC

See it on Linux

curl

HTTP/1.1 or HTTP/2?

HTTP/1.1HTTP/2
FormatTextBinary frames
Concurrency6 connectionsOne, multiplexed
HeadersRepeatedHPACK indexed
HOL blockingPer connectionStill, at TCP