Oba to protokoły warstwy Transport, ale robią przeciwne kompromisy. TCP jest połączeniowy i niezawodny — gwarantuje, że każdy bajt dotrze, w kolejności, dokładnie raz. UDP jest bezpołączeniowy i typu „wyślij i zapomnij" — po prostu wysyła pakiety (datagramy) bez gwarancji dostarczenia czy kolejności. Wymieniasz niezawodność TCP na niski narzut i szybkość UDP.
TCP UDP
┌───────────────────────┐ ┌───────────────────────┐
│ connection (handshake)│ │ no connection │
│ reliable (retransmit) │ │ best-effort (no retry)│
│ ordered delivery │ │ unordered │
│ flow + congestion ctrl│ │ none │
│ higher overhead │ │ minimal overhead │
└───────────────────────┘ └───────────────────────┘
