Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
udp(7P)				   Protocols			       udp(7P)

       udp, UDP	- Internet User	Datagram Protocol

       #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);

       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	desti-
       nation 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  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
       address."   This	address	is network 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 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(7P) and icmp6(7p).

       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-

       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 Information Cen-
       ter, SRI	International, Menlo Park, Calif., August 1980

       A socket	operation may fail if:

		    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  mak-
		    ing	the new	connection.

		    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.

		    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 con-
		    nect() operation had not already been performed.

		    A bind() operation was attempted on	a socket with  a  net-
		    work  address/port pair that has already been bound	to an-
		    other socket.

		    A bind() operation was attempted on	a socket with  a  net-
		    work address for which no network interface	exists.

		    A  sendmsg()  operation  with a non-NULL msg_accrights was

		    A bind() operation was attempted with  a  "reserved"  port
		    number  and	 the  effective	user ID	of the process was not
		    the	privileged user.

		    The	system ran out of memory for internal data structures.

SunOS 5.9			  4 Nov	1999			       udp(7P)


Want to link to this manual page? Use this URL:

home | help