udp(7)





NAME

       udp - UDP protocol on top of IPv4.


SYNOPSIS

       #include <sys/socket.h>
       #include <netinet/in.h>
       udp_socket = socket(PF_INET, SOCK_DGRAM, 0);



DESCRIPTION

       This  is  an  implemention  of  the User Datagram Protocol
       described in RFC768. It implements a connectionless, unre­
       liable  datagram packet service.  Packets may be reordered
       or duplicated before they arrive. UDP generates and checks
       checksums to catch transmission errors.

       When  a  UDP  socket  is  created,  its  local  and remote
       addresses are unspecified.  Datagrams can be sent  immedi­
       ately  using sendto(2) or sendmsg(2) with a valid destina­
       tion address as an argument.  When connect(2) is called on
       the  socket  the  default  destination  address is set and
       datagrams can now be sent using send(2) or write(2)  with­
       out specifying an destination address.  It is still possi­
       ble to send to other destinations by passing an address to
       sendto(2)  or sendmsg(2).  In order to receive packets the
       socket should be bound to an local address first by  using
       bind(2),  when  this is not the case the socket layer will
       automatically assign  a  local  port  on  the  first  user
       receive request.

       All  receive  operations return only one packet.  When the
       packet is smaller than the passed buffer  only  that  much
       data  is  returned,  when it is bigger the packet is trun­
       cated and the MSG_TRUNC flag is set.

       IP options may  be  sent  or  received  using  the  socket
       options  described  in  ip(7).  They are only processed by
       the kernel when the appropriate  sysctl  is  enabled  (but
       still  passed to the user even when it is turned off). See
       ip(7).

       When the MSG_DONTROUTE flag is set on sending the destina­
       tion  address must refer to an local interface address and
       the packet is only sent to that interface.

       UDP fragments a packet when its total length  exceeds  the
       interface MTU (Maximum Transmission Unit).  A more network
       friendly alternative is  to  use  path  MTU  discovery  as
       described in the IP_PMTU_DISCOVER section of ip(7).



ADDRESS FORMAT

       UDP  uses the IPv4 sockaddr_in address format described in
       ip(7).




ERROR HANDLING

       All fatal errors will be passed to the user  as  an  error
       return  even  when  the  socket  is  not  connected.  This
       behaviour differs from many other BSD  socket  implementa­
       tions  which  don't  pass  any errors unless the socket is
       connected. Linux's behaviour is mandated by RFC1122.

       For compatibility with legacy code it is possible  to  set
       the  SO_BSDCOMPAT  SOL_SOCKET  option  to  receive  remote
       errors only when the socket has been connected (except for
       EPROTO  and  EMSGSIZE).   It  is better to fix the code to
       handle  errors  properly  than  to  enable  this   option.
       Locally generated errors are always passed.

       When  the  IP_RECVERR  option  is  enabled  all errors are
       stored in the socket error queue and can  be  received  by
       recvmsg(2) with the MSG_ERRQUEUE flag set.



ERRORS

       All  errors  documented  for  socket(7)  or  ip(7)  may be
       returned by a send or receive on a UDP socket.

       ECONNREFUSED No receiver was associated with the  destina­
       tion  address.   This might be caused by a previous packet
       sent over the socket.



VERSIONS

       IP_RECVERR is a new feature in Linux 2.2



CREDITS

       This man page was writen by Andi Kleen.



SEE ALSO

       ip(7), socket(7), raw(7).

       RFC768 for the User Datagram protocol.
       RFC1122 for the host requirements.
       RFC1191 for a description of path MTU discovery.















Man(1) output converted with man2html