100% Free Forever
AI-Powered Learning
Industry Expert Content
Certificates & Badges
Learn At Your Own Pace

When Should You Use TCP vs UDP?

Learn when to use TCP vs UDP, the reliability vs latency tradeoff, and real use cases like APIs, video, and DNS.

mediumQ185 of 224 in Computer Networks Est. time: 6 minsLast updated:
Open Code Lab

Expected Interview Answer

Use TCP when correctness and ordered, complete delivery matter more than latency (web pages, file transfers, APIs), and use UDP when low latency and minimal overhead matter more than guaranteed delivery (live video, gaming, DNS lookups), because TCP trades speed for reliability via handshakes, acknowledgements, and retransmission, while UDP sends packets with no such guarantees.

TCP is connection-oriented: it performs a three-way handshake, numbers every byte, acknowledges receipt, retransmits lost segments, and enforces in-order delivery through buffering, which is exactly what a file download or a REST API call needs since a missing byte would corrupt the result. UDP is connectionless: it fires datagrams onto the wire with just a checksum and no handshake, no acknowledgement, and no retransmission, so a lost packet is simply gone, which is acceptable β€” even preferable β€” for a live video frame or a game state update where a stale retransmitted packet is worse than a dropped one. TCP also applies flow control and congestion control, which can introduce head-of-line blocking and variable latency under loss, something latency-sensitive applications actively want to avoid. Some protocols like DNS use UDP by default for its low overhead but fall back to TCP for large responses that need reliable delivery, showing the two are chosen per use case rather than one being universally better.

  • TCP guarantees ordered, complete delivery for correctness-critical data
  • UDP minimizes latency and overhead for time-sensitive streams
  • TCP handles congestion and flow control automatically
  • UDP avoids head-of-line blocking, favoring freshness over completeness

AI Mentor Explanation

TCP is like a bowler sending down a delivery and the umpire confirming the exact outcome before the next ball is bowled β€” every ball is accounted for, resent if the signal is missed, and the over proceeds strictly in order. UDP is like a scoreboard operator flashing live run updates to the crowd without waiting for confirmation that every fan saw the previous flash β€” if one update is missed, the operator just posts the next score rather than resending the old one. A stale confirmed run total arriving late is less useful than the current score arriving fast, which is exactly why live scoreboards favor UDP-style delivery over TCP-style guarantees.

Step-by-Step Explanation

  1. Step 1

    Identify the priority

    Decide whether correctness/completeness or latency/freshness matters more for the use case.

  2. Step 2

    TCP path

    For correctness (APIs, file transfer, email), choose TCP for its handshake, ordering, and retransmission.

  3. Step 3

    UDP path

    For latency-sensitive streams (video, gaming, VoIP, DNS), choose UDP to avoid retransmission delay and head-of-line blocking.

  4. Step 4

    Hybrid consideration

    Some systems layer their own reliability over UDP (e.g., QUIC, WebRTC) to get low latency with selective reliability.

What Interviewer Expects

  • Correctly explains TCP is connection-oriented and reliable, UDP is connectionless and best-effort
  • Gives concrete use cases for each (web/API/file transfer vs streaming/gaming/DNS)
  • Understands the latency vs reliability tradeoff, including head-of-line blocking
  • Mentions that some protocols build custom reliability atop UDP when needed

Common Mistakes

  • Claiming UDP is simply β€œworse” than TCP rather than a different tradeoff
  • Forgetting DNS commonly uses UDP with a TCP fallback for large responses
  • Not mentioning head-of-line blocking as a TCP downside for real-time use
  • Assuming TCP guarantees low latency because it guarantees delivery

Best Answer (HR Friendly)

β€œI would explain it as picking the right tool for the job: TCP is like sending a tracked, signed-for package where you need every piece to arrive correctly and in order, so I would use it for things like API calls or file uploads. UDP is like a live broadcast where speed matters more than perfection, so I would use it for video calls, live gaming, or quick lookups like DNS, where a dropped packet is better replaced by a fresh one than resent late.”

Code Example

Minimal TCP vs UDP socket setup in Python
import socket

# TCP: reliable, ordered, connection-oriented
tcp_sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
tcp_sock.connect(("example.com", 80))
tcp_sock.sendall(b"GET / HTTP/1.1\r\nHost: example.com\r\n\r\n")
print(tcp_sock.recv(200))
tcp_sock.close()

# UDP: connectionless, best-effort, no handshake
udp_sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
udp_sock.sendto(b"ping", ("8.8.8.8", 53))
udp_sock.settimeout(2)
try:
    data, addr = udp_sock.recvfrom(512)
    print(data, addr)
except socket.timeout:
    print("No reply -- UDP gives no delivery guarantee")
udp_sock.close()

Follow-up Questions

  • Why does DNS use UDP by default but fall back to TCP sometimes?
  • How does QUIC combine UDP with reliability features?
  • What is head-of-line blocking and why does it affect TCP more than UDP?
  • How would you add reliability on top of UDP for a custom protocol?

MCQ Practice

1. Which protocol is best suited for a live video call?

UDP is preferred for live video/voice because low latency matters more than retransmitting stale frames.

2. What is a key downside of TCP for real-time applications?

TCP enforces strict ordering, so one lost segment blocks delivery of everything after it until retransmitted.

3. Why does DNS typically use UDP?

DNS queries are small and latency-sensitive, so UDP's minimal overhead fits, with TCP as a fallback for large responses.

Flash Cards

TCP core guarantee? β€” Reliable, ordered, connection-oriented delivery via handshake, acknowledgements, and retransmission.

UDP core tradeoff? β€” Low overhead, connectionless, best-effort delivery with no ordering or retransmission guarantees.

When to choose UDP? β€” Latency-sensitive streams like video, gaming, VoIP, and quick lookups like DNS.

What is head-of-line blocking? β€” When one lost TCP segment delays delivery of all data queued behind it, hurting real-time apps.

1 / 4

Continue Learning