TCP ha il blocco della coda, in quanto garantisce la consegna completa e in ordine, quindi quando un pacchetto viene perso durante il trasporto, deve attendere una ritrasmissione del pacchetto mancante, mentre UDP consegna i pacchetti all'applicazione appena arrivano , compresi i duplicati e senza alcuna garanzia che arrivi un pacchetto o quale ordine arrivano (in realtà è essenzialmente IP con numeri di porta e un checksum (opzionale) di payload aggiunto), ma va bene per la telefonia, ad esempio, dove di solito semplicemente non importa quando mancano pochi millisecondi di audio, ma il ritardo è molto fastidioso, quindi non ti preoccupi dei ritrasmissioni, lascia semplicemente cadere i duplicati, ordina i pacchetti riordinati nell'ordine giusto per alcune centinaia di millisecondi di buffer di jitter e se i pacchetti non vengono visualizzati in tempo o per niente, vengono semplicemente ignorati,possibile interpolato ove supportato dal codec.
Inoltre, una parte importante di TCP è il controllo del flusso, per essere sicuri di ottenere il massimo flusso di dati possibile, ma senza sovraccaricare la rete (il che è un po 'ridondante, poiché una rete sovraccarica lascerà cadere i pacchetti, il che significa che dovresti fare ritrasmissioni, che danneggiano il throughput), UDP non ha nulla di tutto ciò - il che ha senso per applicazioni come la telefonia, poiché la telefonia con un determinato codec richiede una certa quantità di larghezza di banda, non è possibile "rallentarla" e anche larghezza di banda aggiuntiva non rende la chiamata più veloce.
Oltre alle applicazioni in tempo reale / a bassa latenza, UDP ha senso per transazioni molto piccole, come le ricerche DNS, semplicemente perché non ha l'istituzione della connessione TCP e l'overhead di smontaggio, sia in termini di latenza che in termini di utilizzo della larghezza di banda. Se la tua richiesta è più piccola di una MTU tipica e probabilmente anche la risposta, puoi farlo in un roundtrip, senza la necessità di mantenere uno stato sul server e il controllo del flusso come ordini e tutto ciò che probabilmente non è particolarmente utile anche per tali usi.
E poi, puoi usare UDP per costruire i tuoi sostituti TCP, ovviamente, ma probabilmente non è una buona idea senza una profonda comprensione delle dinamiche di rete, i moderni algoritmi TCP sono piuttosto sofisticati.
Inoltre, suppongo che dovrebbe essere menzionato che esiste più di UDP e TCP, come SCTP e DCCP. L'unico problema attualmente è che Internet (IPv4) è piena di gateway NAT che rendono impossibile l'uso di protocolli diversi da UDP e TCP nelle applicazioni per l'utente finale.