udp(7P)




NAME

     udp, UDP - Internet User Datagram Protocol


SYNOPSIS

     #include <sys/socket.h>

     #include <netinet/in.h>

     s = socket(AF_INET, SOCK_DGRAM, 0);

     s = socket(AF_INET6, SOCK_DGRAM, 0);

     t = t_open("/dev/udp", O_RDWR);

     t = t_open("/dev/udp6", O_RDWR);


DESCRIPTION

     UDP is a simple datagram protocol which is layered  directly
     above  the Internet Protocol ("IP") or the Internet Protocol
     Version 6 ("IPv6").  Programs  may  access   UDP  using  the
     socket  interface,  where  it supports the SOCK_DGRAM socket
     type, or using the Transport Level Interface ("TLI"),  where
     it supports the connectionless (T_CLTS) service type.

     Within the socket interface, UDP is normally used  with  the
     sendto(),  sendmsg(),  recvfrom(),  and recvmsg() calls (see
     send(3SOCKET) and recv(3SOCKET)).  If  the  connect(3SOCKET)
     call is used to fix the destination for future packets, then
     the recv(3SOCKET) or read(2) and send(3SOCKET)  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 IPor IPv6 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(3SOCKET) call
     can be used to set the local address and port  number  of  a
     UDP  socket.  The  local  IP  or  IPv6  address  may be left
     unspecified in the bind() call by using  the  special  value
     INADDR_ANY  for  IP, or the unspecified address (all zeroes)
     for IPv6.  If the bind() call is not done,  a  local  IP  or
     IPv6  address  and port number will be assigned to  the end-
     point 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  net-
     work interface dependent. Broadcasts may only be sent by the
     privileged user.

     IPv6 does not support broadcast addresses; their function is
     supported by IPv6 multicast addresses.

     Options at the IP level may be used with UDP; see ip(7P)  or
     ip6(7p).

     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 por-
     tion  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.

     UDP processes Internet Control Message Protocol ("ICMP") and
     Internet  Control Message Protocol Version 6 ("ICMP6") error
     messages received in response to UDP packets  it  has  sent.
     See icmp(7P) and icmp6(7p).

     ICMP "source quench" messages are ignored. ICMP "destination
     unreachable,"  "time  exceeded" and "parameter problem" mes-
     sages 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.

     ICMP6 "destination unreachable" packets are  ignored  unless
     the  enclosed  code indicates that the port is not in use on
     the target host, in which case, the application is notified.
     ICMP6 "parameter problem" notifications are similarly passed
     upstream. All other ICMP6 messages are ignored.


SEE ALSO

     read(2),    write(2),    bind(3SOCKET),    connect(3SOCKET),
     recv(3SOCKET), send(3SOCKET), icmp(7P), icmp6(7P), inet(7P),
     inet6(7P), ip(7P), ip6(7P), tcp(7P)

     Postel, Jon, RFC 768, User Datagram Protocol, 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  success-
                fully  disconnected before making the new connec-
                tion.

          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() opera-
                tion 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
                msg_accrights 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
                structures.


Man(1) output converted with man2html