TCP ma blokowanie na początku kolejki, ponieważ gwarantuje kompletne i zgodne z zamówieniem dostarczanie, więc gdy pakiet zgubi się w transporcie, musi poczekać na ponowną transmisję brakującego pakietu, podczas gdy UDP dostarcza pakiety do aplikacji po ich przybyciu , w tym duplikaty i bez żadnej gwarancji, że pakiet w ogóle dotrze lub która kolejność dotrze (tak naprawdę jest to zasadniczo adres IP z numerami portów i (opcjonalnie) sumą kontrolną ładunku dodanego), ale jest to dobre w przypadku telefonii, na przykład tam, gdzie zwykle po prostu nie ma znaczenia, gdy brakuje kilku milisekund dźwięku, ale opóźnienie jest bardzo denerwujące, więc nie zawracaj sobie głowy retransmitami, po prostu upuszczasz duplikaty, sortujesz uporządkowane pakiety w odpowiedniej kolejności przez kilkaset milisekund bufora jittera , a jeśli pakiety nie pojawią się na czas lub w ogóle, są po prostu pomijane,możliwa interpolacja, jeśli jest obsługiwana przez kodek.
Ponadto znaczną częścią TCP jest kontrola przepływu, aby upewnić się, że uzyskasz jak najwięcej przepustowości, ale bez przeciążania sieci (co jest trochę redundantne, ponieważ przeciążona sieć zrzuci twoje pakiety, co oznacza, że musisz zrobić retransmisje, co szkodzi przepustowości), UDP nie ma nic takiego - co ma sens w aplikacjach takich jak telefonia, ponieważ telefonia z danym kodekiem wymaga określonej przepustowości, nie można jej „spowolnić”, a także dodatkowej przepustowości nie przyspiesza połączenia.
Oprócz aplikacji działających w czasie rzeczywistym / o niskim opóźnieniu, UDP ma sens w przypadku naprawdę małych transakcji, takich jak wyszukiwanie DNS, po prostu dlatego, że nie ma połączenia TCP i narzutu porzucenia, zarówno pod względem opóźnienia, jak i wykorzystania przepustowości. Jeśli twoje żądanie jest mniejsze niż typowy MTU i prawdopodobnie jest to również powtórka, możesz to zrobić w jednym okrążeniu, bez potrzeby utrzymywania jakiegokolwiek stanu na serwerze i zamawiania kontroli przepływu, a wszystko to prawdopodobnie nie jest szczególnie przydatne do takich zastosowań albo.
A potem, oczywiście, możesz użyć UDP do budowy własnych zamienników TCP, ale prawdopodobnie nie jest to dobry pomysł bez dogłębnego zrozumienia dynamiki sieci, nowoczesne algorytmy TCP są dość wyrafinowane.
Myślę też, że należy wspomnieć, że jest więcej niż UDP i TCP, takich jak SCTP i DCCP. Obecnie jedynym problemem jest to, że Internet (IPv4) jest pełen bram NAT, co uniemożliwia korzystanie z protokołów innych niż UDP i TCP w aplikacjach użytkowników końcowych.