inet(7) DEVICES AND MODULES inet(7)
NAME
inet - Internet protocol family
SYNOPSIS
#include <sys/types.h>
#include <netinet/in.h>
DESCRIPTION
The Internet protocol family implements a collection of pro-
tocols which are centered around the Internet Protocol (IP)
and which share a common address format. The Internet fam-
ily protocols can be accessed via the socket interface,
where they support the SOCKSTREAM, SOCKDGRAM, and SOCKRAW
socket types, or the Transport Level Interface (TLI), where
they support the connectionless (TCLTS) and connection
oriented (TCOTSORD) service types.
PROTOCOLS
The Internet protocol family comprises the Internet Protocol
(IP), the Address Resolution Protocol (ARP), the Internet
Control Message Protocol (ICMP), the Transmission Control
Protocol (TCP), and the User Datagram Protocol (UDP).
TCP supports the socket interface's SOCKSTREAM abstraction
and TLI's TCOTSORD service type. UDP supports the
SOCKDGRAM socket abstraction and the TLI TCLTS service
type. See tcp(7) and udp(7). A direct interface to IP is
available via both TLI and the socket interface; See ip(7).
ICMP is used by the kernel to handle and report errors in
protocol processing. It is also accessible to user pro-
grams; see icmp(7). ARP is used to translate 32-bit IP
addresses into 48-bit Ethernet addresses; see arp(7).
The 32-bit IP address is divided into network number and
host number parts. It is frequency-encoded; The most-
significant bit is zero in Class A addresses, in which the
high-order 8 bits represent the network number. Class B
addresses have their high order two bits set to 10 and use
the high-order 16 bits as the network number field. Class C
addresses have a 24-bit network number part of which the
high order three bits are 110. Sites with a cluster of IP
networks may chose to use a single network number for the
cluster; This is done by using subnet addressing. The host
number portion of the address is further subdivided into
subnet number and host number parts. Within a subnet, each
subnet appears to be an individual network; Externally, the
entire cluster appears to be a single, uniform network
requiring only a single routing entry. Subnet addressing is
enabled and examined by the following ioctl(2) commands;
They have the same form as the SIOCSIFADDR command [see
if(3N)].
1
inet(7) DEVICES AND MODULES inet(7)
SIOCSIFNETMASK Set interface network mask. The network
mask defines the network part of the
address; If it contains more of the
address than the address type would
indicate, then subnets are in use.
SIOCGIFNETMASK Get interface network mask.
ADDRESSING
IP addresses are four byte quantities, stored in network
byte order. IP addresses should be manipulated using the
byte order conversion routines [see byteorder(3N)].
Addresses in the Internet protocol family use the following
structure:
struct sockaddrin {
short sinfamily;
ushort sinport;
struct inaddr sinaddr;
char sinzero[8];
};
Library routines are provided to manipulate structures of
this form; See inet(3N).
The sinaddr field of the sockaddrin structure specifies a
local or remote IP address. Each network interface has its
own unique IP address. The special value INADDRANY may be
used in this field to effect wildcard matching. Given in a
bind(2) call, this value leaves the local IP address of the
socket unspecified, so that the socket will receive connec-
tions or messages directed at any of the valid IP addresses
of the system. This can prove useful when a process neither
knows nor cares what the local IP address is or when a pro-
cess wishes to receive requests using all of its network
interfaces. The sockaddrin structure given in the bind( 2)
call must specify an inaddr value of either IPADDRANY or
one of the system's valid IP addresses. Requests to bind
any other address will elicit the error EADDRNOTAVAI. When
a connect(2) call is made for a socket that has a wildcard
local address, the system sets the sinaddr field of the
socket to the IP address of the network interface that the
packets for that connection are routed via.
The sinport field of the sockaddrin structure specifies a
port number used by TCP or UDP. The local port address
specified in a bind(2) call is restricted to be greater than
IPPORTRESERVED (defined in <netinet/in.h>) unless the
creating process is running as the super-user, providing a
space of protected port numbers. In addition, the local
2
inet(7) DEVICES AND MODULES inet(7)
port address must not be in use by any socket of same
address family and type. Requests to bind sockets to port
numbers being used by other sockets return the error EAD-
DRINUSE. If the local port address is specified as 0, then
the system picks a unique port address greater than
IPPORTRESERVED. A unique local port address is also picked
when a socket which is not bound is used in a connect(2) or
sendto [see send(2)] call. This allows programs which do
not care which local port number is used to set up TCP con-
nections by simply calling socket(2) and then connect(2),
and to send UDP datagrams with a socket(2) call followed by
a sendto(2) call.
Although this implementation restricts sockets to unique
local port numbers, TCP allows multiple simultaneous connec-
tions involving the same local port number so long as the
remote IP addresses or port numbers are different for each
connection. Programs may explicitly override the socket
restriction by setting the SOREUSEADDR socket option with
setsockopt [see getsockopt(3N)].
TLI applies somewhat different semantics to the binding of
local port numbers. These semantics apply when Internet fam-
ily protocols are used via the TLI.
SEE ALSO
ioctl(2), send(2), bind(3N), connect(3N), getsockopt(3N),
if(3N), byteorder(3N), gethostent(3N), getnetent(3N),
getprotoent(3N), getservent(3N), socket(3N), arp(7),
icmp(7), ip(7), tcp(7), udp(7).
Network Information Center, DDN Protocol Handbook (3 vols.),
Network Information Center, SRI International, Menlo Park,
Calif., 1985.
NOTES
The Internet protocol support is subject to change as the
Internet protocols develop. Users should not depend on
details of the current implementation, but rather the ser-
vices exported.
3