Compare
Side-by-side on the decisions that recur: TCP vs UDP, HTTP/2 vs HTTP/3, flow vs congestion control, L4 vs L7, forward vs reverse proxy, IPv4 vs IPv6 — with when to choose each.
TCP vs UDPHTTP/2 vs HTTP/3Flow control vs Congestion controlSwitch vs RouterForward proxy vs Reverse proxyL4 load balancing vs L7 load balancingServer-Sent Events vs WebSocketsIPv4 vs IPv6ARP (IPv4) vs Neighbor Discovery (IPv6)Keep-alive (reuse) vs New connection per request
| HTTP/2 | HTTP/3 | |
|---|---|---|
| Transport | One TCP connection, TLS on top | QUIC over UDP, with TLS 1.3 built into the transport |
| Multiplexing | Many streams framed inside one TCP byte stream | Many streams, each with its own loss recovery and ordering |
| Head-of-line blocking | One lost TCP segment stalls every stream behind it | Loss on one stream does not stall other streams; ordering within a stream still waits for retransmission |
| Connection setup | TCP handshake + TLS handshake: 2 RTT (1 RTT with TLS 1.3 + TFO, rarely deployed) | 1 RTT, 0-RTT on resumption |
| Mobility | Connection dies when the client IP changes (Wi-Fi → LTE) | Connection IDs survive address changes |
| Middleboxes | Works anywhere TCP/443 works | Needs UDP/443 open; some corporate networks block it, browsers fall back to HTTP/2 |
| Server cost | Kernel TCP stack, hardware offload, mature tooling | User-space stack: more CPU per byte, less offload, newer tooling |
| Choose this when | The safe default: broad compatibility, kernel-optimised TCP, and networks where UDP may be filtered. | Lossy or mobile links with many parallel small requests, where per-stream recovery and 0-RTT resumption pay for the user-space CPU. |