UDP(User Datagram Protocol)
UDP is a standard protocol with STD number 6. UDP is described by RFC 768
UDP is basically an application layer's interface to IP. It adds no reliability, flow-control or error recovery to IP. It simply serves as a multiplexer/demultiplexer for sending and receiving datagrams, using ports to direct the datagrams as shown in next several figures.

Unreliable, Connectionless service, No Acknowledgements, No ordering of packets, No flow control, No error control

UDP provides transfer of a packet(UDP packet) from a process on a host to a process on another host
Uses Service Access Points(SAP) called "port" instead of process id number (e.g. To allow an appl. to contact a server program without knowing which process on the dest. machine implement the server function)

UDP provides a mechanism for one application to send a datagram to another. The UDP layer can be regarded as being extremely thin and consequently has low overheads, but it requires the application to take responsibility for error recovery and so on.
Applications sending datagrams to a host need to identify a target that is more specific than the IP address, since datagrams are normally directed to certain processes and not to the system as a whole. UDP provides this by using ports.

Ports and Sockets--These concepts applies not only to UDP but also equally to TCP
Port and socket are necessary to exactly determine which local process at a given host actually communicates with
which process at remote host. A process Id can not be used for this purpose.
-An application process is assigned a process identifier number (process ID) which is likely to be different each time that process is started.
-Process IDs differ between operating system platforms, hence they are not uniform.
-A server process can have multiple connections to multiple clients at a time, hence simple connection identifiers would not be unique.
The concept of ports and sockets provides a way to uniformly and uniquely identify connections and the programs and hosts that are engaged in them, irrespective of specific process IDs. It is the basis for most computer communications called "Client Server Model"

Client Server Model

-Motivation for the client server model was the "Problem of rendezvous "
=How do we provide a connection when a process on a host, called a Client, which needs a service from a process usually on a remote host, called a Server.
For the communication, we must define 4 things for the identification of a connection:
- Local host identification---> IP address
- Local process identification
- Remote host identification-IP address
- Remote process identification
So, for the process identification the Port numbers are adopted.

Ports
Each process that wants to communicate with another process identifies itself to the TCP/IP protocol suite by one or more ports. A port is a 16-bit number, used by the host-to-host protocol to identify to which higher level protocol or application program (process) it must deliver incoming messages. There are two types of port: Well-known ports and Ephemeral ports:

(a) Well-known Ports--The well-known port numbers are defined in STD 2 — Assigned Internet Numbers.
Well-known ports belong to standard servers, for example Telnet uses port 23. Well-known port numbers range between 1 and 1023 (prior to 1992, the range between 256 and 1023 was used for UNIX-specific servers). See /etc/services on Unix and see winnt\system32\drivers\etc\services on Windows Nt & Windows 2000 systems and see windows\services on Windows 98 systems.
Well-known port numbers are typically odd, because early systems using the port concept required an odd/even pair of ports for duplex operations. Most servers require only a single port. Exceptions are the BOOTP server, which
uses two: 67 and 68. Well-known port numbers for UDP(and TCP) support the "Client Server Model" of distributed computing.

Therefore, various services on a server are identified by well-known port numbers.
IANA(Intenet Assigned Numbers Authority) Ranges:
-Well-known ports: port numbers between 0 and 1023 are assigned and controlled by IANA
- Registered ports: 1024 - 49,151 can be registered with IANA to prevent duplication.
- Dynamic ports: 49,152 - 65,536 are neither controlled nor registered. These are called "Ephemeral" ports. They can be used by any process.
BSD Unix Ranges:
- Reserved ports: 1 - 1023 used for well-known ports
- Ephemeral(short-lived) ports: 1024 - 5000 used for client applications--assigned dynamically for the duration of connections
- Non-privilieged ports: Above 5000 can be used by any process--A user's program can use these numbers

Example: The following is the list of well-known port numbers on a Windows 2000 system           (winnt\system32\drivers\etc\services)
# Copyright (c) 1993-1999 Microsoft Corp.
#
# This file contains port numbers for well-known services defined by IANA
#
# Format:
#
# <service name> <port number>/<protocol> [aliases...] [#<comment>]
#

echo 7/tcp
echo 7/udp
discard 9/tcp sink null
discard 9/udp sink null
systat 11/tcp users #Active users
systat 11/tcp users #Active users
daytime 13/tcp
daytime 13/udp
qotd 17/tcp quote #Quote of the day
qotd 17/udp quote #Quote of the day
chargen 19/tcp ttytst source #Character generator
chargen 19/udp ttytst source #Character generator
ftp-data 20/tcp #FTP, data
ftp 21/tcp #FTP. control
telnet 23/tcp
smtp 25/tcp mail #Simple Mail Transfer Protocol
time 37/tcp timserver
time 37/udp timserver
rlp 39/udp resource #Resource Location Protocol
nameserver 42/tcp name #Host Name Server
nameserver 42/udp name #Host Name Server
nicname 43/tcp whois
domain 53/tcp #Domain Name Server
domain 53/udp #Domain Name Server
bootps 67/udp dhcps #Bootstrap Protocol Server
bootpc 68/udp dhcpc #Bootstrap Protocol Client
tftp 69/udp #Trivial File Transfer
gopher 70/tcp
finger 79/tcp
http 80/tcp www www-http #World Wide Web
kerberos 88/tcp krb5 kerberos-sec #Kerberos
kerberos 88/udp krb5 kerberos-sec #Kerberos
hostname 101/tcp hostnames #NIC Host Name Server
iso-tsap 102/tcp #ISO-TSAP Class 0
rtelnet 107/tcp #Remote Telnet Service
pop2 109/tcp postoffice #Post Office Protocol - Version 2
pop3 110/tcp #Post Office Protocol - Version 3
sunrpc 111/tcp rpcbind portmap #SUN Remote Procedure Call
sunrpc 111/udp rpcbind portmap #SUN Remote Procedure Call
auth 113/tcp ident tap #Identification Protocol
uucp-path 117/tcp
nntp 119/tcp usenet #Network News Transfer Protocol
ntp 123/udp #Network Time Protocol
epmap 135/tcp loc-srv #DCE endpoint resolution
epmap 135/udp loc-srv #DCE endpoint resolution
netbios-ns 137/tcp nbname #NETBIOS Name Service
netbios-ns 137/udp nbname #NETBIOS Name Service
netbios-dgm 138/udp nbdatagram #NETBIOS Datagram Service
netbios-ssn 139/tcp nbsession #NETBIOS Session Service
imap 143/tcp imap4 #Internet Message Access Protocol
pcmail-srv 158/tcp #PCMail Server
snmp 161/udp #SNMP
snmptrap 162/udp snmp-trap #SNMP trap
print-srv 170/tcp #Network PostScript
bgp 179/tcp #Border Gateway Protocol
irc 194/tcp #Internet Relay Chat Protocol
ipx 213/udp #IPX over IP
ldap 389/tcp #Lightweight Directory Access Protocol
https 443/tcp MCom
https 443/udp MCom
microsoft-ds 445/tcp
microsoft-ds 445/udp
kpasswd 464/tcp # Kerberos (v5)
kpasswd 464/udp # Kerberos (v5)
isakmp 500/udp ike #Internet Key Exchange
exec 512/tcp #Remote Process Execution
biff 512/udp comsat
login 513/tcp #Remote Login
who 513/udp whod
cmd 514/tcp shell
syslog 514/udp
printer 515/tcp spooler
talk 517/udp
ntalk 518/udp
efs 520/tcp #Extended File Name Server
router 520/udp route routed
timed 525/udp timeserver
tempo 526/tcp newdate
courier 530/tcp rpc
conference 531/tcp chat
netnews 532/tcp readnews
netwall 533/udp #For emergency broadcasts
uucp 540/tcp uucpd
klogin 543/tcp #Kerberos login
kshell 544/tcp krcmd #Kerberos remote shell
new-rwho 550/udp new-who
remotefs 556/tcp rfs rfs_server
rmonitor 560/udp rmonitord
monitor 561/udp
ldaps 636/tcp sldap #LDAP over TLS/SSL
doom 666/tcp #Doom Id Software
doom 666/udp #Doom Id Software
kerberos-adm 749/tcp #Kerberos administration
kerberos-adm 749/udp #Kerberos administration
kerberos-iv 750/udp #Kerberos version IV
kpop 1109/tcp #Kerberos POP
phone 1167/udp #Conference calling
ms-sql-s 1433/tcp #Microsoft-SQL-Server
ms-sql-s 1433/udp #Microsoft-SQL-Server
ms-sql-m 1434/tcp #Microsoft-SQL-Monitor
ms-sql-m 1434/udp #Microsoft-SQL-Monitor
wins 1512/tcp #Microsoft Windows Internet Name Service
wins 1512/udp #Microsoft Windows Internet Name Service
ingreslock 1524/tcp ingres
l2tp 1701/udp #Layer Two Tunneling Protocol
pptp 1723/tcp #Point-to-point tunnelling protocol
radius 1812/udp #RADIUS authentication protocol
radacct 1813/udp #RADIUS accounting protocol
nfsd 2049/udp nfs #NFS server
knetd 2053/tcp #Kerberos de-multiplexor
man 9535/tcp #Remote Man Server

(b) Ephemeral(short-lived) Ports

Clients do not need well-known port numbers because they initiate communication with servers and the port number they are using is contained in the UDP datagrams sent to the server. Each client process is allocated a port number as long as it needs it by the host it is running on.

Summary

UDP is a connection-less protocol
UDP is suitable for a process that requires simple request-response communication with no concern for flow and error control.
UDP is suitable for a process with internal(it's own) flow and error-control mechanism such as TFTP(Trivial FTP)
UDP is suitable for multicasting and broadcasting
UDP is used for SNMP, RIP and OSPF