User Datagram Protocol or UDP is part of the Internet Protocol suite. By using UDP, programs running on different computers on a network can send short messages known as Datagrams to one another. UDP can be used in networks where TCP is traditionally implemented, but unlike TCP, it does not guarantee reliability or correct data sequencing. Datagrams may go missing without notice or arrive in a different order from how they were sent. David P. Reed formulated the protocol in 1980 and officially defined it in RFC 768.

UDP uses a simple communication model without implicit transmission checks for guaranteeing reliability, sequencing, or datagram integrity. Though these factors might seem to suggest that UDP is not a useful protocol, it is still widely used in particular areas where speed, more than reliability, is of utmost importance. With UDP, error checks and corrections are carried out in the communicating application, not at the network layer. However, if error checks and corrections are needed at the network layer, the application can use Transmission Control Protocol (TCP) or Stream Control Transmission Protocol (SCTP), which are specifically formulated for this reason.  Since UDP does not have the overhead of checking whether the data has reached the destination every time it is sent, it makes the protocol that much faster and more efficient. UDP is often used for time sensitive applications where missing data is preferred to late arriving data.

UDP is a stateless protocol that is useful for servers engaged in answering short queries from a large number of clients. While TCP is mainly used for communication between a server and a single client, UDP is used for packet broadcast or multi-casting whereby the data is sent to all the clients in the network. Frequent network applications that use UDP include: Trivial File Transfer Protocol (TFTP) , Voice over IP (VoIP), IPTV, Domain Name System (DNS), etc.

Since UDP lacks any kind of mechanism to control or avoid network congestion, other forms of network based control mechanisms need to be implemented to ensure smooth flow of traffic in a UDP network. One of the solutions being designed to tackle this problem is DCCP or Datagram Congestion Control Protocol, which is aimed at monitoring and controlling traffic congestion in a UDP network.

A typical IP network consists of five layers:

  • The Physical Layer consisting of the actual channel for data flow like coaxial, twisted pair, or fiber optic cables

  • The Data Link Layer implementing Wi-Fi, ISDN, GPRS etc.

  • The Network / Internet Layer

  • Transport Layer implementing TCP, UDP, etc.

  • Application Layer running DNS, FTP, HTTP, POP3, SMTP, Telnet, etc.

As shown above, UDP belongs to the fourth layer. Although the entire amount of UDP traffic in a network is a small fraction of the whole, a number of key applications in the fifth layer like DNS and SNMP or simple network management protocol use UDP.

UDP Packet

The UDP header comprises of only four fields. The use of two of those is optional (light red background in diagram).

Source Port
Source port recognizes the sending port and should be understood to be the port to respond to if required. If not used, then its value should be zero.

Destination Port
Destination port recognizes the destination port and is mandatory.

Length
A 16-bit length field indicates the length in bytes of the complete datagram: header and data.

Checksum
The 16-bit checksum field is implemented for error checking the header and data. The algorithm for computing the checksum is different for transmission over IPv4 and IPv6.

Additional Reading on UDP

The UDP protocol is defined in RFC 768: User Datagram Protocol.