May 15, 2003 INET 4

### NAME

inet - Internet protocol family

### SYNOPSIS

### DESCRIPTION

The Internet protocol family is a collection of protocols layered atop the Internet Protocol (IP) transport layer, and using the Internet address format. The Internet family provides protocol support for the ```SOCK_STREAM`,`SOCK_DGRAM`, and ```SOCK_RAW` socket types; the ```SOCK_RAW` interface provides access to the IP protocol.

### ADDRESSING

Internet addresses are four byte quantities, stored in network standard format (on the VAX these are word and byte reversed). The include file <```netinet/in.h`> defines this address as a discriminated union.

Sockets bound to the Internet protocol family use the following addressing structure,

  `

      struct sockaddr_in {
              uint8_t         sin_len;
              sa_family_t     sin_family;
              in_port_t       sin_port;
              struct in_addr  sin_addr;
              int8_t          sin_zero[8];
      };

  `

Sockets may be created with the local address ```INADDR_ANY` to effect ``wildcard'' matching on incoming messages. The address in a connect(2) or sendto(2) call may be given as ```INADDR_ANY` to mean ``this host''. The distinguished address ```INADDR_BROADCAST` is allowed as a shorthand for the broadcast address on the primary network if the first network configured supports broadcast.

### PROTOCOLS

The Internet protocol family comprises the IP transport protocol, Internet Control Message Protocol (ICMP), Transmission Control Protocol (TCP), and User Datagram Protocol (UDP). TCP is used to support the ```SOCK_STREAM` abstraction while UDP is used to support the ```SOCK_DGRAM` abstraction. A raw interface to IP is available by creating an Internet socket of type ```SOCK_RAW`. The ICMP message protocol is accessible from a raw socket.

The 32-bit Internet address contains both network and host parts. It is frequency-encoded; the most-significant bit is clear in Class A addresses, in which the high-order 8 bits are the network number. Class B addresses use the high-order 16 bits as the network field, and Class C addresses have a 24-bit network part. Sites with a cluster of local networks and a connection to the Internet may chose to use a single network number for the cluster; this is done by using subnet addressing. The local (host) portion of the address is further subdivided into subnet and host 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 on a datagram socket in the Internet domain; they have the same form as the ```SIOCIFADDR` command (see netintro(4)).

```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.

### SEE ALSO

ioctl(2), socket(2), icmp(4), intro(4), ip(4), netintro(4), tcp(4), udp(4) (see```/usr/share/doc/psd/20.ipctut`) (see```/usr/share/doc/psd/21.ipc`)

### HISTORY

The inet protocol interface appeared in 4.2BSD.

### BUGS

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 services exported.