---
name: "udp"
section: "4"
platform: "linux"
package: "freebsd-manpages"
version: "6.0-5"
release: "Debian 4.0 (Etch)"
platforms: ["linux", "freebsd", "openbsd", "macos"]
url: "https://new.carta.tech/udp/4"
---

# udp(4)

Internet User Datagram Protocol

## NAME

**udp** – Internet User Datagram Protocol

## SYNOPSIS

**#include \<sys/types.h\>**

**#include \<sys/socket.h\>**

**#include \<netinet/in.h\>**

*int*\

**socket**(*AF\_INET*, *SOCK\_DGRAM*, *0*);

## DESCRIPTION

UDP is a simple, unreliable datagram protocol which is used to support the SOCK\_DGRAM abstraction for the Internet protocol family. UDP sockets are connectionless, and are normally used with the [sendto(2)](/sendto/2.md) and [recvfrom(2)](/recvfrom/2.md) calls, though the [connect(2)](/connect/2.md) call may also be used to fix the destination for future packets (in which case the [recv(2)](/recv/2.md) or [read(2)](/read/2.md) and [send(2)](/send/2.md) or [write(2)](/write/2.md) system calls may be used).

UDP address formats are identical to those used by TCP. In particular UDP provides a port identifier in addition to the normal Internet address format. Note that the UDP port space is separate from the TCP port space (i.e., a UDP port may not be “connected” to a TCP port). In addition broadcast packets may be sent (assuming the underlying network supports this) by using a reserved “broadcast address”; this address is network interface dependent.

Options at the IP transport level may be used with UDP; see [ip(4)](/ip/4.md).

## ERRORS

A socket operation may fail with one of the following errors returned:

- \[EISCONN\]

  when trying to establish a connection on a socket which already has one, or when trying to send a datagram with the destination address specified and the socket is already connected;

- \[ENOTCONN\]

  when trying to send a datagram, but no destination address is specified, and the socket has not been connected;

- \[ENOBUFS\]

  when the system runs out of memory for an internal data structure;

- \[EADDRINUSE\]

  when an attempt is made to create a socket with a port which has already been allocated;

- \[EADDRNOTAVAIL\]

  when an attempt is made to create a socket with a network address for which no network interface exists.

## MIB VARIABLES

The **udp** protocol implements a number of variables in the net.inet branch of the [sysctl(3)](/sysctl/3.md) MIB.

- UDPCTL\_CHECKSUM

  (udp.checksum) Enable udp checksums (enabled by default).

- UDPCTL\_MAXDGRAM

  (udp.maxdgram) Maximum outgoing UDP datagram size

- UDPCTL\_RECVSPACE

  (udp.recvspace) Maximum space for incoming UDP datagrams

- udp.log\_in\_vain

  For all udp datagrams, to ports on which there is no socket listening, log the connection attempt (disabled by default).

- udp.blackhole

  When a datagram is received on a port where there is no socket listening, do not return an ICMP port unreachable message. (Disabled by default. See [blackhole(4)](/blackhole/4.md).)

## SEE ALSO

[getsockopt(2)](/getsockopt/2.md), [recv(2)](/recv/2.md), [send(2)](/send/2.md), [socket(2)](/socket/2.md), [blackhole(4)](/blackhole/4.md), [inet(4)](/inet/4.md), [intro(4)](/intro/4.md), [ip(4)](/ip/4.md)

## HISTORY

The **udp** protocol appeared in 4.2BSD.
