udp(4p) 맨 페이지 - 윈디하나의 솔라나라

개요

섹션
맨 페이지 이름
검색(S)

udp(4p)

udp(4P)                        Network Protocols                       udp(4P)

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(3C) and recv(3C)).
       If the connect(3C) call is used to fix the destination for future pack‐
       ets, then the recv(3C) or read(2) and send(3C) 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 or 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(3C)  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  ad‐
       dress (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 endpoint when
       the first packet is sent. Broadcast packets may be sent,  assuming  the
       underlying  network  supports  this, by using a reserved "broadcast ad‐
       dress." This address is network interface dependent.


       Note that no two UDP sockets can be bound to the same port  unless  the
       bound IP addresses are different. IPv4  INADDR_ANY and IPv6 unspecified
       addresses compare as equal to any IPv4 or IPv6 address. For example, if
       a  socket  is bound to INADDR_ANY or unspecified address and port X, no
       other socket can bind to port X, regardless  of  the  binding  address.
       This special consideration of INADDR_ANY and unspecified address can be
       changed using the SO_REUSEADDR socket option. If SO_REUSEADDR is set on
       a socket doing a bind, IPv4  INADDR_ANY and IPv6 unspecified address do
       not  compare as equal to any IP address. This means that as long as the
       two sockets are not both bound to INADDR_ANY/unspecified address or the
       same IP address, the two sockets can be bound to the same port.


       If an application does not want  to  allow  another  socket  using  the
       SO_REUSEADDR  option  to bind to a port its socket is bound to, the ap‐
       plication can set the socket level option SO_EXCLBIND on a socket.  The
       option  values  of 0 and 1 represent enabling and disabling the option,
       respectively. Once this option is enabled on a socket, no other  socket
       can be bound to the same port.


       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(4P)  or  ip6(4P).
       Additionally,  there  is  one UDP-level option of interest to IPsec Key
       Management applications (see ipsec(4P) and pf_key(4P)):

       UDP_NAT_T_ENDPOINT

           If this boolean option is set, datagrams sent via this socket  will
           have a non-ESP marker inserted between the UDP header and the data.
           Likewise, inbound packets that match the endpoint's local-port will
           be  demultiplexed  between  ESP or the endpoint itself if a non-ESP
           marker is present. This option is only available  on  IPv4  sockets
           (AF_INET),  and  the  application must have sufficient privilege to
           use PF_KEY sockets to also enable this option.



       There are a variety of ways that a UDP packet can be lost or corrupted,
       including a failure of the underlying communication mechanism. UDP  im‐
       plements  a checksum over the data portion of the packet. If the check‐
       sum 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 pro‐
       vided 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(4P) and icmp6(4P).


       ICMP  "source  quench" messages are ignored. ICMP "destination unreach‐
       able," "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.


       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"  notifica‐
       tions  are  similarly passed upstream. All other ICMP6 messages are ig‐
       nored.

SEE ALSO
       read(2), write(2), bind(3C), connect(3C), recv(3C), send(3C), icmp(4P),
       icmp6(4P), inet(4P), inet6(4P), ip(4P), ip6(4P), ipsec(4P), pf_key(4P),
       tcp(4P)


       Postel, Jon, RFC 768, User Datagram Protocol, Network Information  Cen‐
       ter, August 1980. https://tools.ietf.org/html/rfc768.


       Huttunen,  A.,  Swander,  B., Volpe, V., DiBurro, L., Stenberg, M., RFC
       3948, UDP Encapsulation of IPsec ESP  Packets,  The  Internet  Society,
       2005. https://tools.ietf.org/html/rfc3948.

DIAGNOSTICS
       A socket operation may fail if:

       EISCONN          A  connect()  operation  was  attempted on a socket on
                        which a connect()  operation  had  already  been  per‐
                        formed,  and the socket could not be successfully dis‐
                        connected before making the new connection.


       EISCONN          A sendto() or sendmsg() operation  specifying  an  ad‐
                        dress  to  which  the  message  should be sent was at‐
                        tempted 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  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 struc‐
                        tures.


Oracle Solaris 11.4               3 Nov 2021                           udp(4P)
맨 페이지 내용의 저작권은 맨 페이지 작성자에게 있습니다.
RSS ATOM XHTML 5 CSS3