udp(7) 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(3N) and
recv(3N)]. If the connect(3N) call is used to fix the destination for
future packets, then the recv(3N) or read(2) and send(3N) 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 endpoint 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(3N) 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
underlying 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 cor-
rupted, including a failure of the underlying communication 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.
Page 1 Reliant UNIX 5.44 Printed 11/98
udp(7) 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 subsequent 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.
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 disconnected
before making the new connection.
EISCONN A sendto() or sendmsg() operation specifying 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 message 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.
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 internal data struc-
tures.
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 Information
Center, SRI International, Menlo Park, Calif., August 1980.
Page 2 Reliant UNIX 5.44 Printed 11/98