IEN 89


                          Internet Name Server




                               Jon Postel




















                               2 May 1979




                     Information Sciences Institute
                   University of Southern California
                           4676 Admiralty Way
                   Marina del Rey, California  90291

                             (213) 822-1511


IEN-89                                                         J. Postel
                                                                     ISI
                                                              2 May 1979



                          INTERNET NAME SERVER
                          --------------------

INTRODUCTION
------------

This memo defines the procedure to access an Internet Name Server.  Such
a server  provides  the actual  addresses  of hosts in the internet when
supplied  with a host name.   An  Internet  Name  Server  is  a  dynamic
name-to-number translation service.

This server utilizes the User Datagram Protocol (UDP) [2], which in turn
calls on the Internet Protocol (IN) [3].

NAME SYNTAX
-----------

It is strongly  recommended  that the use of host names  in programs  be
consistent  for both input and output across all hosts.  To promote such
consistency of the internet level, the following syntax is specified:

The SYNTAX  of names as presented to the user and as entered by the user
is:

  | NET | REST

  where:

    NET is a network name or number as defined in [1]

  and

    REST is a host name within  that network  expressed  as a  character
    string  or as a number.   When  a number is used, it is expressed in
    decimals and is prefixed with a sharp sign (e.g., #1234).

  Note that this syntax  has minimal  impact  on the allowable character
  strings for host names within a network.  The only restriction is that
  a REST string cannot begin with an exclamation point (|).

  The |NET|  may be omitted when specifying a host in the local network.
  That is "|" indicates the network portion of a name string.






Postel                                                          [page 1]


                                                              2 May 1979
Internet Name Server                                              IEN 89



NAME SERVER
-----------

To aid in the translation  of names to internet  addresses, several name
server  processes will be provided.  The name server process will accept
a name in the above form and will return a name, address pair.

The name server processes will have well-known addresses; addresses that
are constant  over long periods  of time and published in documents such
as [1].

A request  sent to a name server is sent as a user datagram [2] with the
following content:

    +--------+--------+--------+--------+--------+--------+---\\---+
    |        |        |                                            |
    |  NAME  | LENGTH |                NAME STRING                 |
    |        |        |                                            |
    +--------+--------+--------+--------+--------+--------+---\\---+

  where:

    NAME is a one octet code indicating that the following is a name,

    LENGTH  is a one octet  count  of the number  of octets  in the name
    string, and

    NAME STRING is an ASCII character string of the form | NET | REST.

A reply  to a successful translation is sent as a user datagram with the
following content:

    +--------+--------+--------+--------+--------+--------+---\\---+
    |        |        |                                            |
    |  NAME  | LENGTH |                NAME STRING                 |
    |        |        |                                            |
    +--------+--------+--------+--------+--------+--------+---\\---+
    |        |        |                                   |
    | ADDRESS| LENGTH |         INTERNET ADDRESS          |
    |        |        |                                   |
    +--------+--------+--------+--------+--------+--------+









[page 2]                                                          Postel


2 May 1979
IEN 89                                              Internet Name Server



  where:

    ADDRESS  is a one octet  code indicating  that the following  is  an
    internet address,

    LENGTH  is a one octet  count  (=4)  of the length  of the  internet
    address, and

    INTERNET ADDRESS is the internet address.

Actually  a particular  name might map to several internet addresses, in
this case the response would include a list of internet addresses.

When  a name  is not found,  an error is reported via a user datagram as
follows:

    +--------+--------+--------+--------+--------+--------+---\\---+
    |        |        |                                            |
    |  NAME  | LENGTH |                NAME STRING                 |
    |        |        |                                            |
    +--------+--------+--------+--------+--------+--------+---\\---+
    |        |        |  ERROR |                                   |
    | ERROR  | LENGTH |  CODE  |       ERROR STRING                |
    |        |        |        |                                   |
    +--------+--------+--------+--------+--------+--------+---\\---+

  where:

    ERROR CODE specifies the error.

    ERROR STRING explains the error.

Error Codes

  The following error codes are defined:

    CODE          MEANING
    ----          -------
     0            Undetermined or undefined error
     1            Name not found
     2            Improper name syntax
     3            Name not found, but the following similar names exist

  Note Error 3 is followed by a list of name strings.






Postel                                                          [page 3]


                                                              2 May 1979
Internet Name Server                                              IEN 89



Communication with a Name Server Process

  Communication  with a name server process is via user datagrams.  User
  datagrams   do  not  guarantee  reliable  communication.   Thus,  some
  requests or replies may be lost.

  The  name  server   process   is  a  transaction   oriented   process;
  furthermore,  the  nature  of  the  transactions  allows  them  to  be
  processed in any order and even to be duplicated.  This allows the use
  of a very simple communication protocol.

  If a request  is made to the name server  process  and no response  is
  received  within a reasonable time, then the requester should make the
  request  again.   This recovers  from communication errors which cause
  the loss of either the request or the reply.

  In order  to use this simple  strategy,  care must be taken  to  allow
  replies to be properly matched with requests.  The name server process
  does this by including in each reply a copy of the entire request.

  The user datagram  protocol  does provide a checksum for the detection
  of errors.

Format

  The requests and replies to and from a name server process are encoded
  as "items".   An item consists  of an item-code an item-length and the
  item-data.   The item-length  includes in its count the item-count and
  the item-length octets.

    Item  :=  Item-Code  Item-Length  Item-Data

    +--------+--------+--------+--------+--------+--------+---\\---+
    |        |        |                                            |
    |  Item  |  Item  |               Item                         |
    |  Code  | Length |                      Data                  |
    |        |        |                                            |
    +--------+--------+--------+--------+--------+--------+---\\---+

  A request is typically one item, and a reply is typically two items.










[page 4]                                                          Postel


2 May 1979
IEN 89                                              Internet Name Server




                 +--------+--------+--------+--------+
                 |ItemCode|Item Len|... Item Data ...|
                 +--------+--------+--------+--------+
                 | ......... Item Data cont ........ |
                 +--------+--------+--------+--------+
                 | Item Data cont. |ItemCode|Item Len|
                 +--------+--------+--------+--------+
                 | ........... Item Data ........... |
                 +--------+--------+--------+--------+

Item Code Value Assignments:

  NAME    = 1

  ADDRESS = 2

  ERROR   = 3

Example

  a typical request:


                 +-----------------+--------+--------+
                 |   1    |   12   |   |    |   A    |
                 +--------+--------+--------+--------+
                 |   R    |   P    |   A    |   |    |
                 +--------+--------+--------+--------+
                 |   I    |   S    |   I    |   B    |
                 +--------+--------+--------+--------+



















Postel                                                          [page 5]


                                                              2 May 1979
Internet Name Server                                              IEN 89



  and the reply:


                 +-----------------+--------+--------+
                 |   1    |   12   |   |    |   A    |
                 +--------+--------+--------+--------+
                 |   R    |   P    |   A    |   |    |
                 +--------+--------+--------+--------+
                 |   I    |   S    |   I    |   B    |
                 +--------+--------+--------+--------+
                 |   2    |   6    |   10   |   3    |
                 +--------+--------+--------+--------+
                 |   0    |   52   |
                 +--------+--------+




































[page 6]                                                          Postel


2 May 1979
IEN 89                                              Internet Name Server
References



References
----------

[1]     J. Postel. "Assigned Numbers," RFC 755, IEN 93, May 1979.

[2]     J.  Postel.  "User Datagram  Protocol,"  IEN 88, USC-Information
        Sciences Institute, May 1979.

[3]     J.  Postel.  "Internet  Datagram Protocol -- Version 4," IEN 80,
        USC-Information Sciences Institute, February 1979.







































Postel                                                          [page 7]