UDP(7) DEVICES AND MODULES UDP(7)
NAME
UDP - Internet User Datagram Protocol
SYNOPSIS
#include <sys/socket.h>
#include <netinet/in.h>
s = socket(AFINET, SOCKDGRAM, 0);
t = topen("/dev/udp", ORDWR);
DESCRIPTION
UDP is a simple datagram protocol which is layered directly
above the Internet Protocol (IP). Programs may access UDP
using the socket interface, where it supports the SOCKDGRAM
socket type, or using the Transport Level Interface (TLI),
where it supports the connectionless (TCLTS) service type.
Within the socket interface, UDP is normally used with the
sendto(), sendmsg(), recvfrom(), and recvmsg() calls [see
send(2) and recv(2)]. If the connect(2) call is used to fix
the destination for future packets, then the recv(2) or
read(2) and send(2) or write(2) calls may be used.
UDP address formats are identical to those used by the
Transmission Control Protocol (TCP). Like TCP, UDP uses a
port number along with an IP address to identify the end-
point of communication. The UDP port number space is
separate from the TCP port number space (that is, a UDP port
may not be connected to a TCP port). The bind(2) call can
be used to set the local address and port number of a UDP
socket. The local IP address may be left unspecified in the
bind() call by using the special value INADDRANY. If the
bind() call is not done, a local IP address and port number
will be assigned to the endpoint when the first packet is
sent. Broadcast packets may be sent (assuming the underly-
ing network supports this) by using a reserved broadcast
address; This address is network interface dependent.
Broadcasts may only be sent by the privileged user.
Options at the IP level may be used with UDP; see ip(7).
There are a variety of ways that a UDP packet can be lost or
corrupted, including a failure of the underlying communica-
tion mechanism. UDP implements a checksum over the data
portion of the packet. If the checksum of a received packet
is in error, the packet will be dropped with no indication
given to the user. A queue of received packets is provided
for each UDP socket. This queue has a limited capacity.
Arriving datagrams which will not fit within its high-water
capacity are silently discarded.
1
UDP(7) DEVICES AND MODULES UDP(7)
UDP processes Internet Control Message Protocol (ICMP) error
messages received in response to UDP packets it has sent.
See icmp(7). ICMP source quench messages are ignored. ICMP
destination unreachable, time exceeded and parameter problem
messages disconnect the socket from its peer so that subse-
quent attempts to send packets using that socket will return
an error. UDP will not guarantee that packets are delivered
in the order they were sent. As well, duplicate packets may
be generated in the communication process.
SEE ALSO
read(2), write(2), bind(3N), connect(3N), recv(3N),
send(3N), icmp(7), inet(7), ip(7), tcp(7).
Postel, Jon, User Datagram Protocol, RFC 768, Network Infor-
mation Center, SRI International, Menlo Park, Calif., August
1980.
DIAGNOSTICS
A socket operation may fail if:
EISCONN A connect() operation was attempted on a
socket on which a connect() operation
had already been performed, and the
socket could not be successfully discon-
nected before making the new connection.
EISCONN A sendto() or sendmsg() operation speci-
fying an address to which the message
should be sent was attempted on a socket
on which a connect() operation had
already been performed.
ENOTCONN A send() or write() operation, or a
sendto() or sendmsg() operation not
specifying an address to which the mes-
sage should be sent, was attempted on a
socket on which a connect() operation
had not already been performed.
EADDRINUSE A bind() operation was attempted on a
socket with a network address/port pair
that has already been bound to another
socket.
EADDRNOTAVAIL A bind() operation was attempted on a
socket with a network address for which
no network interface exists.
EINVAL A sendmsg() operation with a non-NULL
msgaccrights was attempted.
2
UDP(7) DEVICES AND MODULES UDP(7)
EACCES A bind() operation was attempted with a
reserved port number and the effective
user ID of the process was not the
privileged user.
ENOBUFS The system ran out of memory for inter-
nal data structures.
3