HTTP vs TCP comes down to layers: TCP is the transport protocol that moves packets reliably between machines, while HTTP is the request-and-response language that runs on top of it. HTTP/3 swaps TCP for QUIC, which rides on UDP. Knowing which layer failed tells you why a page, a crawl, or a Search Console report looks the way it does.
HTTP vs TCP: What Each Protocol Actually Does
HTTP vs TCP is a layering question, not a rivalry. TCP, the Transmission Control Protocol, is the transport layer that sets up a connection and delivers packets reliably, re-requesting anything lost on the way. HTTP sits on top of TCP and defines the messages themselves: get me this URL, here is the content, here is a 404.
TCP dates back to the 1970s, when Vinton Cerf and colleagues needed packet switching between network nodes with reliable delivery. HTTP versions before HTTP/3 ran over TCP, and so did most other application protocols, including mail (SMTP) and file transfer (FTP). On the web, HTTP is the layer a site owner usually cares about; the transport below it is normally invisible until it breaks.
The two layers answer different questions:
- TCP: did every packet arrive, in order, without corruption?
- HTTP: what did the server say about the requested resource?
- TLS (in HTTPS): can anyone between the endpoints read the exchange?
Why the Internet Uses Layers at All
The layered model exists so each layer can ignore the ones beneath it. A physical medium, whether fiber, radio, or cable, carries raw bits. Transport protocols such as TCP group those bits into reliable streams. Application protocols such as HTTP give those streams meaning.
Martin Splitt's analogy on the Search Off the Record podcast (May 2025): if your messages travel by messenger pigeon, you want someone else to feed and nurse the pigeons. The site owner who publishes an image mostly cares that the image reaches the phone; the transport details belong to lower layers.
This layering is also why debugging can be painful. Transport failures offer little built-in reporting, while HTTP failures come back as descriptive status codes from the server.
Where UDP, QUIC, and HTTP/3 Fit
UDP is the connectionless alternative to TCP: it sends packets without guaranteeing they arrive. That is useless for a document request but ideal for video calls, where a delayed old frame is worse than a missing one, and for DNS lookups, which rely heavily on UDP.
QUIC, standardized as RFC 9000 in 2021, is the transport under HTTP/3. It runs over UDP and multiplexes independent streams, so one lost packet no longer stalls the others. That avoids TCP's head-of-line blocking, where a single missing packet queues everything behind it. QUIC also mandates TLS, combining the transport and encryption handshakes instead of paying for two separate ones, which reduces round trips.
| Protocol | Layer | Delivery guarantee | Typical use |
|---|---|---|---|
| TCP | Transport | Reliable, ordered | HTTP/1, HTTP/2, email, FTP |
| UDP | Transport | None, best effort | DNS, video calls |
| QUIC | Transport (over UDP) | Reliable per stream, TLS built in | HTTP/3 |
The practical takeaway for site owners: serving over HTTP/3 can shave handshake round trips and contain packet loss, but it does not change how crawlers interpret your content.
What HTTP Status Codes Tell You About a Request
Status codes are the reporting system of the HTTP layer, and each class tells a story. The classes break down as follows, per the MDN status code reference:
- 1xx (informational): 100 Continue, and 101 Switching Protocols, which a server returns when upgrading to WebSockets. Google Search passes through the 1xx range and reacts to the next non-1xx response.
- 2xx (success): 200 means content was returned; 204 means success with no body, as in Google's generate_204 endpoint used to test connectivity.
- 3xx (redirection): 301 and 308 are permanent, 302 and 307 temporary; Google Search mainly cares about the temporary-versus-permanent distinction for canonicalization.
- 4xx (client error): 404 means the URL does not exist, 410 means it existed and is gone, 401 and 403 mean unauthorized or forbidden. 418 "I'm a teapot", from the 1998 April Fools' RFC 2324, is the joke exception that made it into the standard.
- 5xx (server error): the server failed to fulfill a valid request. 429 Too Many Requests sits in the 4xx class because the client asked too often, even when the server technically has capacity.
Real-Time Features: WebSockets, Early Hints, and Polling
HTTP is request-response by nature, so real-time features need workarounds. A chat app built on plain HTTP usually polls: the client asks every few seconds, and the server answers with new messages or nothing. Server-sent events and WebSockets reduce that overhead; a WebSocket keeps a channel open so the server can push messages, and the upgrade begins with an HTTP 101 Switching Protocols response.
Early Hints is another 1xx-range feature. Cloudflare popularized it a few years before 2025 as a way to send preliminary response headers while the server prepares the full response. Google Search ignores the 1xx range and reads the final response, so the team has documented that Early Hints offers little crawling benefit.
The common thread: anything in the 1xx range is an intermediate signal, not a final answer, and crawlers largely wait for the response that follows.
Why Search Console Reports Network Errors
Search Console's vague-sounding network or connection errors usually trace to the lower layers discussed above: TCP, UDP, DNS, or QUIC. When Googlebot's request fails below HTTP, the transport layer has no verbose error to offer. As Gary Illyes put it on the episode, if a packet does not arrive, the layer's attitude is: it was lost, goodbye.
The Search Console documentation covers crawl and fetch errors at a higher level, and the HTTP layer is where detail improves. A server can pinpoint what went wrong with a 404 or a 5xx, but diagnosing a transport failure requires packet-level tools such as Wireshark. That asymmetry is why network-error reports name the symptom rather than the cause.
For site owners the action is the same either way: check that the server responds, DNS resolves, and TLS certificates are valid, since failures in any of those layers surface as network errors rather than clean HTTP status codes.
FAQ
- Is HTTP part of TCP? No. TCP is a transport protocol that moves packets reliably; HTTP is an application protocol that runs on top of TCP (or, for HTTP/3, on top of QUIC over UDP). They solve different problems at different layers.
- Does HTTP/3 replace TCP? For HTTP traffic, HTTP/3 replaces TCP with QUIC, a protocol standardized in 2021 that runs over UDP. Other protocols such as email and older HTTP versions still use TCP.
- What is the difference between 204 and 304? 204 means the request succeeded and the response has no body, often used for connectivity checks. 304 Not Modified tells the client its cached copy is still valid, so the body is not resent.
- Why do I get a network error instead of a 404? A 404 comes from the HTTP server, meaning the request reached it. A network error means the failure happened lower down, in TCP, UDP, DNS, or QUIC, where no descriptive status reporting exists.
- Do Google Search and other crawlers use Early Hints? Google Search passes through the 1xx range, including Early Hints responses, and evaluates the final response. The Search Relations team has said Early Hints provides little crawling benefit.
Fork this article
Start a new branch from the same video, shaped your way. You keep the credit; the original keeps the attribution.
A fork in another language is filed as a translation of this article, so the two pages point at each other. You can unlink it later from the editor.
0/240
You are creating
- Format
- For
- Language
- Source
- Your angle
You will be asked to sign in before it is generated.
Buy credits