
The TCP/IP Guide - Version 3.0 (Contents) ` 827 _ © 2001-2005 Charles M. Kozierok. All Rights Reserved.
TCP/IP User Datagram Protocol (UDP)
The very fact that the TCP/IP protocol suite bears the name of the Internet Protocol and the
Transmission Control Protocol suggests that these are the two key protocols in the suite: IP
at the network layer and TCP at the transport layer. It's no wonder, therefore, that many
people don't even realize that there is a second transport layer protocol in TCP/IP. Like a
shy younger brother, the User Datagram Protocol (UDP) sits in the shadows while TCP gets
the glory. Its fancier sibling deserves much of this limelight, since TCP is arguably the more
important of the two transport layer protocol. However, UDP itself fills a critical niche in the
TCP/IP protocol suite, allowing many applications to work at their best when using TCP
would be less than ideal.
In this section I describe the simpler and lesser-known TCP/IP transport protocol: the User
Datagram Protocol (UDP). I begin with an overview of the protocol and a discussion of its
history and standards. I outline how UDP operates, and describe the format used for UDP
messages. I conclude with a discussion of what sorts of applications use UDP, and the well-
known or registered ports that are assigned to them.
Note: There is also a protocol that is part of the NetBIOS/NetBEUI protocol suite
called the User Datagram Protocol, also abbreviated UDP. The two are of course
not the same.
UDP Overview, History and Standards
I suppose the “sibling rivalry” analogy I drew in the introduction to this section may be a little
bit silly. I highly doubt that protocols lie awake at night worrying about how much we use
them. ☺ However, it's interesting to discover just how important the User Datagram Protocol
(UDP) really is, given how little attention it gets compared to the Transmission Control
Protocol (TCP). In fact, in true older-sibling, spotlight-stealing fashion, we can't even really
understand the history of UDP without first discussing TCP.
In the topic that describes the history of TCP/IP, I explained that very early on in the devel-
opment of the protocol suite, there was only one protocol that handled the functions now
performed by both IP and TCP. This protocol, itself called TCP, provided network-layer
connectivity like IP, and also established connections, provided reliability and took care of
the typical transport-layer “quality” requirements as flow control and retransmission
handling that we associate with modern TCP.
It didn’t take long before the developers of the fledgling combined protocol quickly realized
that mixing these functions together was a mistake. While most conventional applications
needed the classic transport-layer reliability functions, some did not. These features intro-
duced overhead, which would have to be endured even by the applications where reliability
features were not needed at all. Worse, there were some applications where the features
were not only of no value, but actually a detriment, since even the small amount of lost
performance due to the overhead would be a problem.