UDP work is based on a simple transmission model without implied handshakes for reliability, ordering, or data integrity. As a result UDP is an unreliable service and messages may arrive out of order, missing or duplicated. UDP presupposes that error checking and correction is performed in the application or is unnecessary. Time-sensitive programs usually use UDP because they prefer to drop packets rather than wait for delayed ones, which may not be a good choice in a real-time system.
UDP is also useful for servers answering small queries from large number of clients. UDP, unlike TCP, is compatible with packet broadcast and multicasting.
UDP programs use datagram sockets to establish host-to-host communications.
1980 - UDP was designed by David P. Reed and formally defined in RFC 768.