User Datagram Protocol (UDP)
The User Datagram Protocol (UDP) was proposed in 1980 and is one of the core protocols of the Internet protocol suite. Distributed applications send messages, called datagrams, to one another by specifying a destination address in the IP header. UDP is connectionless, meaning that prior relationships between nodes do not have to be set up beforehand in order to send UDP packets, as in TCP. Packets are sent out to the network and the IP routing ensures delivery to its destination if the links are congestion free. If there is congestion, packets are simply dropped. The UDP protocol therefore has no control mechanisms for guaranteeing reliability or for sequencing the ordering of the arrival of packets. Datagrams can arrive in any order or go missing enroute without notice. However, the simplicity of the protocol makes it very efficient can be far faster than TCP and for some applications, therefore, it is preferred.
An example of a range of applications that use UDP would be those situations where time-sensitive data is more important than guaranteed delivery; that is, it is better for a packet to be dropped than to be delayed. Streaming audio or video applications (e.g., Voice over IP (VoIP) or IPTV) therefore will often base their implementations on UDP. Another example concerns networks of extremely low bandwidth where TCP’s control mechanisms can be too severe and restrict the full utilisation of the network bandwidth. In such cases, UDP is often used and can be integrated with reliability at the application level also if that is desirable. Lastly, and most importantly from a discovery perspective, UDP is the basis for the multicast protocol. UDP is supported in most programming languages. For example, in the Java programming language UDP connections are implemented in java.net and are called DatagramSocket.