Separate HTTP semantics from protocol versions

HTTP versions carry shared semantics through different framing, compression, multiplexing, and transport mechanisms.

  • http versions
  • framing
  • transport

Methods and statuses do not belong to one wire version

HTTP semantics define resources, methods, statuses, fields, and representations independently from a particular message syntax. GET and 304 Not Modified keep their meaning across HTTP/1.1, HTTP/2, and HTTP/3 even though their wire encodings differ.

GET /manual HTTP/1.1
Host: example.invalid
Accept: text/html

Expected result: this is an HTTP/1.1 textual serialization. A developer tool can display an HTTP/2 or HTTP/3 request similarly for readability, but those versions encode control data and fields in frames rather than sending these exact lines.

HTTP/1.1 uses a text message syntax

HTTP/1.1 uses a start line, textual field lines, and framing rules over a connection. It has no multiplexing layer, so clients commonly use multiple connections or carefully sequence exchanges. Ambiguous message framing is a security concern because peers must agree on message boundaries.

HTTP/2 adds binary framing and multiplexing over TCP

HTTP/2 maps the same semantics into frames on streams, compresses field sections with HPACK, and allows concurrent exchanges on one connection. For HTTPS, clients normally select h2 through TLS application protocol negotiation.

TCP still delivers one ordered byte stream. Packet loss can stall progress for otherwise independent HTTP/2 streams at the transport layer.

HTTP/3 maps HTTP onto QUIC

HTTP/3 uses QUIC streams, binary HTTP frames, and QPACK field compression. QUIC integrates TLS 1.3, provides stream-level delivery, and avoids one stream’s packet loss blocking delivery on other streams in the same way TCP can for HTTP/2.

HTTP/3 is not “HTTP without semantics” and QUIC is not merely UDP messages. QUIC provides reliable, ordered delivery within each stream plus congestion control and cryptographic protection.

Version is a hop property

A browser can use HTTP/3 to a CDN while that CDN uses HTTP/2 or HTTP/1.1 to an origin. The client-visible version describes its immediate connection. Trace each hop before linking an upstream performance or field behavior to that value.

Optimize after correctness

Version changes can improve connection use and loss behavior, but they do not fix incorrect cache directives, redirect logic, CORS policy, or method semantics. Verify the shared HTTP contract first, then measure the transport behavior on the actual path.

Primary sources