Skip to main content

Command Palette

Search for a command to run...

TCP vs UDP: Understanding Internet Transport Protocols

Published
3 min read

The internet functions because of standardized rules for data transmission. At the transport layer, there are mainly two protocols used in general: TCP (Transmission Control Protocol) and UDP (User Datagram Protocol). They serve fundamentally different purposes.

TCP: The Reliable Connection

TCP establishes a verified connection before data transfer. It guarantees:

  • All data arrives intact

  • Data arrives in correct order

  • Lost packets are retransmitted

Analogy: A phone call requiring acknowledgment ("Did you hear that?" "Yes.").

Technical behaviour: Three-way handshake (SYN, SYN-ACK, ACK), sequence numbers, acknowledgements, and retransmission.

UDP: The Fast Delivery

UDP sends data immediately without verification. It offers:

  • Minimal latency

  • No connection setup

  • No delivery guarantees

Analogy: A public announcement - you broadcast without knowing who received it.

Technical behaviour: Simple header (source/destination ports, length, checksum), no handshake, no acknowledgements.

Key Differences

AspectTCPUDP
ConnectionConnection-orientedConnectionless
ReliabilityGuaranteed deliveryBest-effort delivery
OrderingMaintains packet sequenceNo sequence guarantees
SpeedSlower (overhead)Faster (minimal overhead)
Error RecoveryBuilt-in retransmissionNo recovery
Header Size20-60 bytes8 bytes fixed

When to Use TCP

Use TCP when data integrity is critical:

  • Web browsing (HTTP/HTTPS)

  • Email (SMTP, IMAP)

  • File transfers (FTP, SFTP)

  • Database operations

  • Remote administration (SSH)

Example: Loading this webpage - every HTML, CSS, and JavaScript file arrives via TCP.

When to Use UDP

Use UDP when speed matters more than perfection:

  • Real-time video/voice (Zoom, Teams)

  • Live streaming (Twitch, YouTube Live)

  • Online gaming

  • DNS queries

  • IoT sensor data

  • VPN tunnelling (often UDP-based)

Example: A video call - missing a few frames is preferable to stuttering from retransmissions.

HTTP and the TCP/UDP Relationship

HTTP (Hypertext Transfer Protocol) is an application-layer protocol that depends on TCP for transport.

The Layering Model:

[Application Layer: HTTP/HTTPS]
        ↓ uses
[Transport Layer: TCP/UDP]
        ↓ uses
[Network Layer: IP]

Critical distinction: HTTP defines what data is sent (requests/responses, headers, content), while TCP defines how it's delivered reliably.

HTTP over TCP Flow:

  1. Browser establishes TCP connection to server (3-way handshake)

  2. HTTP request sent over established TCP connection

  3. Server processes request, sends HTTP response

  4. TCP ensures all response data arrives correctly

  5. Connection may persist or close

Why HTTP Doesn't Replace TCP:

  • HTTP is content-aware (understands URLs, headers, methods)

  • TCP is content-agnostic (just moves bytes reliably)

  • HTTP/3 uses QUIC (UDP-based) but still requires transport functionality

Common misconception: "HTTP sends web pages." Actually, TCP sends the bytes; HTTP structures what those bytes mean.

Practical Implementation Examples

# TCP connection visible in netstat
$ netstat -tn
tcp 0 0 192.168.1.100:54322 142.250.74.46:443 ESTABLISHED

# UDP is connectionless - no 'ESTABLISHED' state
$ netstat -un
udp 0 0 192.168.1.100:5353 224.0.0.251:5353

Developer decision flow:

  • Need reliability? → TCP

  • Need low latency? → UDP

  • Building a web app? → HTTP over TCP

  • Building a game or VOIP? → Custom protocol over UDP

Conclusion

TCP and UDP serve complementary roles in internet architecture. TCP provides the reliable foundation for most applications, while UDP enables real-time performance where speed trumps perfection.

Modern applications often use both: TCP for critical data, UDP for time-sensitive streams. Understanding this distinction helps developers choose the right tool for their specific use case.

Next time you browse a website or join a video call, you'll know which protocol is working behind the scenes.

Enjoyed this guide? Let's connect!
🐦 Twitter/X: @rohan_gupta96
💼 LinkedIn: https://www.linkedin.com/in/rohangupta9896
🐙 GitHub: https://github.com/rohan9896

More from this blog

Rohan Gupta's Blog

14 posts