RFC 768 INTERNET STANDARD TRANSPORT · DATAGRAM

UDP: User Datagram Protocol

The simplest transport protocol: connectionless, fast, and minimal overhead

On rfc-editor.org ↗
PUBLISHED
August 1980
AUTHORS
J. Postel
ORG
ISI
STREAM
Legacy
UPDATED BY
RFC 9868 — UDP options
IP PROTOCOL NUMBER
17 (21 octal)
HEADER SIZE
8 octets
MINIMUM LENGTH VALUE
8
ORIGINAL USES
Internet Name Server and TFTP
DOI
10.17487/RFC0768

RFC text

Contents
Original text · RFC Editor View on rfc-editor.org ↗
RFC 768                                                        J. Postel
                                                                     ISI
                                                          28 August 1980



                         User Datagram Protocol
                         ----------------------

Introduction
------------

This User Datagram  Protocol  (UDP)  is  defined  to  make  available  a
datagram   mode  of  packet-switched   computer   communication  in  the
environment  of  an  interconnected  set  of  computer  networks.   This
protocol  assumes  that the Internet  Protocol  (IP)  [1] is used as the
underlying protocol.

This protocol  provides  a procedure  for application  programs  to send
messages  to other programs  with a minimum  of protocol mechanism.  The
protocol  is transaction oriented, and delivery and duplicate protection
are not guaranteed.  Applications requiring ordered reliable delivery of
streams of data should use the Transmission Control Protocol (TCP) [2].

Format
------


                  0      7 8     15 16    23 24    31
                 +--------+--------+--------+--------+
                 |     Source      |   Destination   |
                 |      Port       |      Port       |
                 +--------+--------+--------+--------+
                 |                 |                 |
                 |     Length      |    Checksum     |
                 +--------+--------+--------+--------+
                 |
                 |          data octets ...
                 +---------------- ...

                      User Datagram Header Format

Fields
------

Source Port is an optional field, when meaningful, it indicates the port
of the sending  process,  and may be assumed  to be the port  to which a
reply should  be addressed  in the absence of any other information.  If
not used, a value of zero is inserted.

                                                             28 Aug 1980
User Datagram Protocol                                           RFC 768
Fields



Destination  Port has a meaning  within  the  context  of  a  particular
internet destination address.

Length  is the length  in octets  of this user datagram  including  this
header  and the data.   (This  means  the minimum value of the length is
eight.)

Checksum is the 16-bit one's complement of the one's complement sum of a
pseudo header of information from the IP header, the UDP header, and the
data,  padded  with zero octets  at the end (if  necessary)  to  make  a
multiple of two octets.

The pseudo  header  conceptually prefixed to the UDP header contains the
source  address,  the destination  address,  the protocol,  and the  UDP
length.   This information gives protection against misrouted datagrams.
This checksum procedure is the same as is used in TCP.

                  0      7 8     15 16    23 24    31
                 +--------+--------+--------+--------+
                 |          source address           |
                 +--------+--------+--------+--------+
                 |        destination address        |
                 +--------+--------+--------+--------+
                 |  zero  |protocol|   UDP length    |
                 +--------+--------+--------+--------+

If the computed  checksum  is zero,  it is transmitted  as all ones (the
equivalent  in one's complement  arithmetic).   An all zero  transmitted
checksum  value means that the transmitter  generated  no checksum  (for
debugging or for higher level protocols that don't care).

User Interface
--------------

A user interface should allow

  the creation of new receive ports,

  receive  operations  on the receive  ports that return the data octets
  and an indication of source port and source address,

  and an operation  that allows  a datagram  to be sent,  specifying the
  data, source and destination ports and addresses to be sent.

28 Aug 1980
RFC 768                                           User Datagram Protocol
                                                            IP Interface



IP Interface
-------------

The UDP module  must be able to determine  the  source  and  destination
internet addresses and the protocol field from the internet header.  One
possible  UDP/IP  interface  would return  the whole  internet  datagram
including all of the internet header in response to a receive operation.
Such an interface  would  also allow  the UDP to pass  a  full  internet
datagram  complete  with header  to the IP to send.  The IP would verify
certain fields for consistency and compute the internet header checksum.

Protocol Application
--------------------

The major uses of this protocol is the Internet Name Server [3], and the
Trivial File Transfer [4].

Protocol Number
---------------

This is protocol  17 (21 octal)  when used  in  the  Internet  Protocol.
Other protocol numbers are listed in [5].

References
----------

[1]     Postel,   J.,   "Internet  Protocol,"  RFC 760,  USC/Information
        Sciences Institute, January 1980.

[2]     Postel,    J.,   "Transmission   Control   Protocol,"   RFC 761,
        USC/Information Sciences Institute, January 1980.

[3]     Postel,  J.,  "Internet  Name Server,"  USC/Information Sciences
        Institute, IEN 116, August 1979.

[4]     Sollins,  K.,  "The TFTP Protocol,"  Massachusetts  Institute of
        Technology, IEN 133, January 1980.

[5]     Postel,   J.,   "Assigned   Numbers,"  USC/Information  Sciences
        Institute, RFC 762, January 1980.

AI ELI5

On this page
PROBLEMSome applications just want to send a short message to another program without setting up a connection or waiting for acknowledgments.
MECHANISMUDP puts an 8-byte header (source port, destination port, length, checksum) in front of the data and hands the datagram to IP, which marks it as protocol 17.
WHAT YOU GIVE UPDelivery, ordering and duplicate protection are not guaranteed, so applications that need them use TCP or add their own checks on top.

§1Introduction

The User Datagram Protocol (UDP) provides a simple, connectionless transport service for applications that need to send datagrams without the overhead of connection setup, reliability guarantees, or flow control.

UDP is one of the two original transport protocols of the Internet protocol suite, alongside TCP. Where TCP provides reliability, UDP provides simplicity and speed.

UDP adds only a thin layer on top of IP: source and destination port numbers for multiplexing, a length field, and an optional checksum. The entire header is just 8 bytes.

UDP is a way for one program to send a short message to another program with almost no fuss. It does not set anything up first and does not promise the message arrives.

ONE DATAGRAM, NO HANDSHAKE
SenderIP (protocol 17)Receiver (e.g. port 53)
  1. UDP datagramThe sender fills in ports, length and checksum. There is no connection setup.
  2. UDP datagramIP hands it to UDP, which passes it to the program on the destination port. If it is lost or duplicated, UDP does not notice or retry.

§2Protocol Format

The UDP header is four 16-bit fields, eight octets in all, followed by the data octets. The RFC draws it as four 8-bit columns; the diagram below shows the same layout as a 32-bit-wide grid.

The message starts with a tiny label of four numbers: where it came from, where it is going, how long it is, and a check number. Then comes the message itself.

UDP HEADER · 8 BYTES
User Datagram Header
FieldNameSizeValueDescription
SRC-PORTSource Port2 bytesoptional (0 if unused)Optional. When meaningful, the port of the sending process, and the port a reply should be addressed to absent other information. If not used, zero is inserted.
DST-PORTDestination Port2 bytesHas a meaning within the context of a particular internet destination address.
LENGTHLength2 bytes>= 8Length in octets of this user datagram including the header and the data. The minimum value is 8.
CHECKSUMChecksum2 bytes16-bit one's complement of the one's complement sum of a pseudo header, the UDP header and the data, padded with zero octets if needed. All zeros transmitted means no checksum was generated.

§3Fields

Each field in the UDP header serves a specific purpose:

Source Port (16 bits)
An optional field. When used, it indicates the port of the sending process and may be assumed to be the reply port. If not used, a value of zero is inserted.
Destination Port (16 bits)
The port within the destination host to which the datagram is addressed. This field is required and identifies the receiving application.
Length (16 bits)
The total length of the UDP datagram (header + data) in octets. The minimum value is 8 (header only, no data). The maximum is 65,535 bytes.
Checksum (16 bits)
Covers a pseudo-header (source IP, destination IP, protocol, UDP length), the UDP header, and the data. Optional in IPv4 (zero if not computed), mandatory in IPv6.

Each of the four numbers has a job. The ports say which programs are talking, the length says how big the message is, and the checksum helps catch mistakes.

CHECKSUM PSEUDO HEADER · 12 BYTES, NOT TRANSMITTED
Pseudo header conceptually prefixed to the UDP header
FieldNameSizeValueDescription
PSEUDO-SRCSource Address4 bytesSource internet address, taken from the IP header.
PSEUDO-DSTDestination Address4 bytesDestination internet address, taken from the IP header.
PSEUDO-ZEROZero1 byte0Zero octet.
PSEUDO-PROTOProtocol1 byte17IP protocol number for UDP.
PSEUDO-LENUDP Length2 bytesThe UDP length. Protects against misrouted datagrams.

§4Usage

UDP is the right transport choice when applications value speed and simplicity over guaranteed delivery:

Feature
UDP
TCP
Connection Setup
None
Three-way handshake
Reliability
None (best effort)
Guaranteed delivery
Ordering
Not guaranteed
Guaranteed (sequence numbers)
Header Size
8 bytes
20+ bytes
Flow Control
None
Sliding window

Applications using UDP must handle their own reliability if needed (e.g., DNS retransmits queries, QUIC builds reliability on top of UDP).

If you want speed and can live with a lost message now and then, UDP is a good fit. If you need every piece to arrive in order, use TCP instead.

§5Applications

Many of the Internet's most important protocols rely on UDP as their transport:

53DNS — Domain Name System queries and responses
67/68DHCP — Dynamic Host Configuration Protocol
123NTP — Network Time Protocol
161SNMP — Simple Network Management Protocol
443QUIC — Modern transport for HTTP/3
5353mDNS — Multicast DNS (zero-config)

The rise of QUIC (RFC 9000) has given UDP new prominence. QUIC builds a reliable, multiplexed transport on top of UDP, enabling HTTP/3 and demonstrating that UDP serves as an excellent foundation for innovation.

Name lookups, handing out addresses, telling the time and checking on devices all use short messages, so they use UDP.

§6References