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 (IP) 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 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 must be 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.
History
Originally, TCP, and its reliable byte stream service, was the only service available on internetworks. A number of people realized that for a number of applications (notably packet voice, where the real-time delays inherent with re-transmission were very problematic - it would rather not have data at all, than have it late), such a service was more 'heavy-weight' than they needed. As a result, after a discussion at the January, 1978 TCP Meeting, TCP and IP were split apart, and UDP was added, to allow users access to the unreliable datagram service provided by IP.