Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ inet(7) — NEWS-os 5.0.1

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

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)



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



Typewritten Software • bear@typewritten.org • Edmonds, WA 98026