Skip to content

Networking & Protocols

Most of what an engineering team builds talks to something else over a network, so a working grasp of the protocols pays for itself in clearer design reviews and faster incident calls. You don’t need to memorize the specs — you need to know what each protocol is for and what it trades away. This page covers how HTTP has evolved and how the common communication styles compare.

HTTP: /1.1 vs /2 vs /3

HTTP is the foundation of the web, and it has evolved across three major versions that are all still in use. The headline: each version chips away at latency, and HTTP/3 finally changes the transport underneath.

VersionReleasedTransportKey improvementsUsed today?
HTTP/1.11997TCPKeep-alive connections, chunked transfersStill common
HTTP/22015TCPMultiplexing, header compression, binary framing, server pushWidely adopted
HTTP/32022QUIC over UDPEliminates TCP head-of-line blocking, encrypted by defaultGrowing fast

HTTP/1.1 — the original workhorse. Text-based, roughly one request per connection. It introduced keep-alive connections and chunked transfer encoding, but it suffers from head-of-line blocking: one slow request can hold up everything behind it. Still widely used, especially in older systems.

HTTP/2 — faster, binary, smarter. Still on TCP, but adds multiplexing (many requests over one connection), HPACK header compression, binary framing for efficient parsing, and server push. The catch: because it still rides on TCP, it inherits TCP’s head-of-line blocking.

HTTP/3 — built for speed with QUIC. Runs on QUIC, a protocol built on UDP. It handles streams independently (so no head-of-line blocking), is encrypted by default via TLS 1.3, sets up connections faster with a 0-RTT handshake, and survives network switching — say, moving from Wi-Fi to mobile mid-request. Supported by Chrome, Firefox, Safari, Cloudflare, and modern CDN stacks.

Side by side:

FeatureHTTP/1.1HTTP/2HTTP/3
TransportTCPTCPQUIC (over UDP)
MultiplexingNoYesYes
Header compressionNoHPACKQPACK
Server pushNoYesLimited
Encryption requiredOptionalOptionalAlways (TLS 1.3)
Fixes HOL blockingNoNo (TCP-bound)Yes
Connection speedSlowFastFaster

Learn more: HTTP/2 and HTTP/3 overviews from Cloudflare, QUIC on Wikipedia, and the IETF HTTP Working Group.

💡
You rarely choose your HTTP version by hand — your CDN, load balancer, and client negotiate it. The thing worth knowing as a manager: enabling HTTP/2 or /3 is usually a config change at the edge with real latency wins, not an application rewrite. When someone proposes a big performance project, “did we turn on HTTP/3 first?” is a fair question.

Communication protocols

Beyond plain HTTP, distributed systems use a handful of communication styles. They all ultimately ride on TCP or UDP, but they differ in shape — request/response versus streaming, one-way versus bidirectional, real-time versus queued.

StyleWhat it isDirectionReal-time?Streaming?Best forYear
HTTPFoundation of web communicationOne-time requestNoNoWeb browsers, basic APIs1991
RESTHTTP API styleOne-time requestNoNoWeb services, CRUD APIs2000
SOAPXML-based enterprise protocolOne-time requestNoNoLegacy & enterprise APIs1998
GraphQLQuery language for APIsOne-time, dynamicNoNoFlexible frontends, modern APIs2015
RPCRemote command styleOne-time or streamingSomeYesMicroservices, internal APIs1984
gRPCModern RPC over HTTP/2One-time or streamingYesClient/server/bidirectionalLow-latency microservice comms2015
WebSocketReal-time 2-way channelFull-duplexYesYesChat, games, live dashboards2011
AMQPMessage-queue protocolAsynchronousNoNoBackground jobs, IoT, logs2003
TCPReliable transport protocolTwo-wayLow-levelYesMoving any kind of data1974
UDPLightweight, unreliable transportOne-way (fire-and-forget)Super fastNoGames, video, voice, IoT1980

A few anchors for the mental model: REST, SOAP, and GraphQL all ride on HTTP; gRPC runs over HTTP/2 with binary messages and is the go-to for low-latency service-to-service calls; WebSocket keeps a connection open for true two-way streaming; AMQP decouples sender and receiver through a broker, which is what you want for background work. Underneath, TCP guarantees ordered, reliable delivery while UDP trades those guarantees for raw speed — which is exactly why real-time video and games use it.

Direction modes

It also helps to name the directionality, because it shows up in protocol choices:

ModeMeaningAnalogyExamples
SimplexOne-way onlyTV broadcastHTTP, REST, SOAP
Half-duplexTwo-way, one side at a timeWalkie-talkieLegacy polling systems
Full-duplexTwo-way, simultaneousPhone callWebSocket, gRPC streaming, SignalR
💡
The most common protocol mistake I see is reaching for WebSockets or gRPC streaming when plain request/response would do. Persistent connections cost you in load balancing, reconnection logic, and observability. Start with REST; move to streaming only when the use case is genuinely real-time and bidirectional — live collaboration, trading, gameplay — not just “we want it to feel fast.”

📚 Go Deeper

Books

Tools

  • MDN — HTTP referenceThe clearest practical reference for methods, status codes, headers, and caching — bookmark it.
  • IETF HTTP Working GroupThe source specs for HTTP/1.1 through HTTP/3, including QUIC — for when you need the authoritative answer.
Last updated on