どちらも Transport 層のプロトコルですが、正反対のトレードオフを取ります。TCP はコネクション指向で信頼性があり — すべてのバイトが、順序どおり、ちょうど一度到着することを保証します。UDP はコネクションレスで「撃ちっぱなし(fire-and-forget)」であり — 配送や順序の保証なしにパケット(datagram)を送るだけです。TCP の信頼性を、UDP の低オーバーヘッドと速度と引き換えにします。
TCP UDP
┌───────────────────────┐ ┌───────────────────────┐
│ connection (handshake)│ │ no connection │
│ reliable (retransmit) │ │ best-effort (no retry)│
│ ordered delivery │ │ unordered │
│ flow + congestion ctrl│ │ none │
│ higher overhead │ │ minimal overhead │
└───────────────────────┘ └───────────────────────┘
