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]