User Datagram Protocol
The User Datagram Protocol (usually UDP) is the unreliable datagram protocol of the TCP/IP protocol suite. It provides the ability to send and receive datagrams, identified by a pair of Internet Protocol host addresses and a 16-bit port number on each end, between any two hosts.
It runs on top of the Internet Protocol - the internetworking layer in TCP/IP. That layer is unreliable - packets carried by it may be delayed, damaged, duplicated, re-ordered, or lost, and UDP does not provide any service level beyond that. Any application using UDP which needs a reliable service therefore has to use a number of mechanisms to build it out of the unreliable substrate.
To do that, it can use checksums (to prevent and detect damaged data - UDP provides the option to have no checksum in use), sequence numbers (each packet sent over the channel is individually numbered), acknowledgements, timeouts (to look for missing acknowledgements), and re-transmissions (of data which was damaged, or never acknowledged, and thus was somehow lost).
A number of major infrastructure protocols (e.g. the Domain Name System) and application protocols (including Network File System, Voice over IP, etc) are built on top of UDP.