Cả hai đều là giao thức tầng Transport, nhưng chúng đánh đổi theo hai hướng ngược nhau. TCP hướng-kết-nối và tin cậy — nó đảm bảo mọi byte đều tới nơi, đúng thứ tự, đúng một lần. UDP không kết nối và kiểu "bắn rồi quên" — nó chỉ gửi các gói (datagram) mà không đảm bảo giao hàng hay thứ tự. Bạn đánh đổi độ tin cậy của TCP để lấy overhead thấp và tốc độ của UDP.
TCP UDP
┌───────────────────────┐ ┌───────────────────────┐
│ connection (handshake)│ │ no connection │
│ reliable (retransmit) │ │ best-effort (no retry)│
│ ordered delivery │ │ unordered │
│ flow + congestion ctrl│ │ none │
│ higher overhead │ │ minimal overhead │
└───────────────────────┘ └───────────────────────┘
