UDP (User Datagram Protocol) jest protokołem transportowym w zestawie protokołów internetowych, który nie zapewnia gwarancji dostarczenia datagramów. Jego podstawową cechą jest to, że przesyła dane w sposób bezpołączeniowy, co oznacza, że nie ustanawia żadnej sesji komunikacyjnej przed wysłaniem danych. To sprawia, że jest idealny do zastosowań, gdzie szybkość jest ważniejsza od niezawodności, takich jak transmisje wideo na żywo, gry online czy VoIP (Voice over Internet Protocol). W tych zastosowaniach opóźnienia mogą być bardziej krytyczne niż utrata niektórych pakietów danych. W praktyce, programiści często decydują się na użycie UDP tam, gdzie aplikacja może sama poradzić sobie z ewentualnymi błędami, np. przez ponowne wysyłanie zagubionych pakietów. W związku z tym, standardy RFC 768 definiują UDP jako protokół, który nie implementuje mechanizmów kontroli błędów ani retransmisji, co przyspiesza proces przesyłania danych i zmniejsza narzuty. Z tego powodu, UDP jest wszechobecny w aplikacjach wymagających niskich opóźnień i dużej przepustowości.
Wybór ICMP (Internet Control Message Protocol), HTTP (Hypertext Transfer Protocol) czy TCP (Transmission Control Protocol) jako protokołów, które nie gwarantują dostarczenia datagramów, jest nieprawidłowy z kilku powodów. ICMP, mimo że często używany do przesyłania komunikatów o błędach i diagnostyki, nie jest protokołem stosowanym do przesyłania danych aplikacji. Jego rola polega na informowaniu o problemach, a nie na dostarczaniu danych użytkownika. HTTP działa na bazie TCP, co oznacza, że wszelkie dane przesyłane przez HTTP są zapewniane przez warstwę transportową, która gwarantuje dostarczenie pakietów. Oznacza to, że HTTP nie może być odpowiedzią, gdyż opiera się na protokole, który zapewnia niezawodność przesyłania. TCP, z kolei, jest protokołem połączeniowym, który zapewnia, że wszystkie pakiety są dostarczane w odpowiedniej kolejności oraz bez błędów. Mechanizmy takie jak retransmisje i numerowanie sekwencyjne są kluczowe dla jego działania, co oznacza, że TCP z definicji nie może być odpowiedzią na postawione pytanie. Wiele osób myli te protokoły, nie rozumiejąc różnic między ich zastosowaniami i mechanizmami działania. Właściwa znajomość tych protokołów jest niezbędna do efektywnego projektowania systemów komunikacji, które mogą w różny sposób podchodzić do kwestii niezawodności.