home *** CD-ROM | disk | FTP | other *** search
Text File | 1994-06-09 | 172.5 KB | 4,350 lines |
-
- Network Working Group P. Mockapetris
- Request for Comments: 883 ISI
- November 1983
-
- DOMAIN NAMES - IMPLEMENTATION and SPECIFICATION
-
- +-----------------------------------------------------+
- | |
- | This memo discusses the implementation of domain |
- | name servers and resolvers, specifies the format of |
- | transactions, and discusses the use of domain names |
- | in the context of existing mail systems and other |
- | network software. |
- | |
- | This memo assumes that the reader is familiar with |
- | RFC 882, "Domain Names - Concepts and Facilities" |
- | which discusses the basic principles of domain |
- | names and their use. |
- | |
- | The algorithms and internal data structures used in |
- | this memo are offered as suggestions rather than |
- | requirements; implementers are free to design their |
- | own structures so long as the same external |
- | behavior is achieved. |
- | |
- +-----------------------------------------------------+
-
-
-
-
- +-----------------------------------------------+
- | |
- | ***** WARNING ***** |
- | |
- | This RFC contains format specifications which |
- | are preliminary and are included for purposes |
- | of explanation only. Do not attempt to use |
- | this information for actual implementations. |
- | |
- +-----------------------------------------------+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Mockapetris [Page i]
-
-
- RFC 883 November 1983
- Domain Names - Implementation and Specification
-
-
- TABLE OF CONTENTS
- INTRODUCTION........................................................3
- Overview.........................................................3
- Implementation components........................................2
- Conventions......................................................6
- Design philosophy................................................8
- NAME SERVER TRANSACTIONS...........................................11
- Introduction....................................................11
- Query and response transport....................................11
- Overall message format..........................................13
- The contents of standard queries and responses..................15
- Standard query and response example.............................15
- The contents of inverse queries and responses...................17
- Inverse query and response example..............................18
- Completion queries and responses................................19
- Completion query and response example...........................22
- Recursive Name Service..........................................24
- Header section format...........................................26
- Question section format.........................................29
- Resource record format..........................................30
- Domain name representation and compression......................31
- Organization of the Shared database.............................33
- Query processing................................................36
- Inverse query processing........................................37
- Completion query processing.....................................38
- NAME SERVER MAINTENANCE............................................39
- Introduction....................................................39
- Conceptual model of maintenance operations......................39
- Name server data structures and top level logic.................41
- Name server file loading........................................43
- Name server file loading example................................45
- Name server remote zone transfer................................47
- RESOLVER ALGORITHMS................................................50
- Operations......................................................50
- DOMAIN SUPPORT FOR MAIL............................................52
- Introduction....................................................52
- Agent binding...................................................53
- Mailbox binding.................................................54
- Appendix 1 - Domain Name Syntax Specification......................56
- Appendix 2 - Field formats and encodings...........................57
- TYPE values.....................................................57
- QTYPE values....................................................57
- CLASS values....................................................58
- QCLASS values...................................................58
- Standard resource record formats................................59
- Appendix 3 - Internet specific field formats and operations........67
- REFERENCES and BIBLIOGRAPHY........................................72
- INDEX..............................................................73
-
-
-
- Mockapetris [Page ii]
-
-
- RFC 883 November 1983
- Domain Names - Implementation and Specification
-
-
- INTRODUCTION
-
- Overview
-
- The goal of domain names is to provide a mechanism for naming
- resources in such a way that the names are usable in different
- hosts, networks, protocol families, internets, and administrative
- organizations.
-
- From the user's point of view, domain names are useful as
- arguments to a local agent, called a resolver, which retrieves
- information associated with the domain name. Thus a user might
- ask for the host address or mail information associated with a
- particular domain name. To enable the user to request a
- particular type of information, an appropriate query type is
- passed to the resolver with the domain name. To the user, the
- domain tree is a single information space.
-
- From the resolver's point of view, the database that makes up the
- domain space is distributed among various name servers. Different
- parts of the domain space are stored in different name servers,
- although a particular data item will usually be stored redundantly
- in two or more name servers. The resolver starts with knowledge
- of at least one name server. When the resolver processes a user
- query it asks a known name server for the information; in return,
- the resolver either receives the desired information or a referral
- to another name server. Using these referrals, resolvers learn
- the identities and contents of other name servers. Resolvers are
- responsible for dealing with the distribution of the domain space
- and dealing with the effects of name server failure by consulting
- redundant databases in other servers.
-
- Name servers manage two kinds of data. The first kind of data
- held in sets called zones; each zone is the complete database for
- a particular subtree of the domain space. This data is called
- authoritative. A name server periodically checks to make sure
- that its zones are up to date, and if not obtains a new copy of
- updated zones from master files stored locally or in another name
- server. The second kind of data is cached data which was acquired
- by a local resolver. This data may be incomplete but improves the
- performance of the retrieval process when non-local data is
- repeatedly accessed. Cached data is eventually discarded by a
- timeout mechanism.
-
- This functional structure isolates the problems of user interface,
- failure recovery, and distribution in the resolvers and isolates
- the database update and refresh problems in the name servers.
-
-
-
-
- Mockapetris [Page 1]
-
-
- RFC 883 November 1983
- Domain Names - Implementation and Specification
-
-
- Implementation components
-
- A host can participate in the domain name system in a number of
- ways, depending on whether the host runs programs that retrieve
- information from the domain system, name servers that answer
- queries from other hosts, or various combinations of both
- functions. The simplest, and perhaps most typical, configuration
- is shown below:
-
- Local Host | Foreign
- |
- +---------+ +----------+ | +--------+
- | | user queries | |queries | | |
- | User |-------------->| |---------|->|Foreign |
- | Program | | Resolver | | | Name |
- | |<--------------| |<--------|--| Server |
- | | user responses| |responses| | |
- +---------+ +----------+ | +--------+
- | A |
- cache additions | | references |
- V | |
- +----------+ |
- | database | |
- +----------+ |
-
- User programs interact with the domain name space through
- resolvers; the format of user queries and user responses is
- specific to the host and its operating system. User queries will
- typically be operating system calls, and the resolver and its
- database will be part of the host operating system. Less capable
- hosts may choose to implement the resolver as a subroutine to be
- linked in with every program that needs its services.
-
- Resolvers answer user queries with information they acquire via
- queries to foreign name servers, and may also cache or reference
- domain information in the local database.
-
- Note that the resolver may have to make several queries to several
- different foreign name servers to answer a particular user query,
- and hence the resolution of a user query may involve several
- network accesses and an arbitrary amount of time. The queries to
- foreign name servers and the corresponding responses have a
- standard format described in this memo, and may be datagrams.
-
-
-
-
-
-
-
-
- Mockapetris [Page 2]
-
-
- RFC 883 November 1983
- Domain Names - Implementation and Specification
-
-
- Depending on its capabilities, a name server could be a stand
- alone program on a dedicated machine or a process or processes on
- a large timeshared host. A simple configuration might be:
-
- Local Host | Foreign
- |
- +---------+ |
- / /| |
- +---------+ | +----------+ | +--------+
- | | | | |responses| | |
- | | | | Name |---------|->|Foreign |
- | Master |-------------->| Server | | |Resolver|
- | files | | | |<--------|--| |
- | |/ | | queries | +--------+
- +---------+ +----------+ |
-
- Here the name server acquires information about one or more zones
- by reading master files from its local file system, and answers
- queries about those zones that arrive from foreign resolvers.
-
- A more sophisticated name server might acquire zones from foreign
- name servers as well as local master files. This configuration is
- shown below:
-
- Local Host | Foreign
- |
- +---------+ |
- / /| |
- +---------+ | +----------+ | +--------+
- | | | | |responses| | |
- | | | | Name |---------|->|Foreign |
- | Master |-------------->| Server | | |Resolver|
- | files | | | |<--------|--| |
- | |/ | | queries | +--------+
- +---------+ +----------+ |
- A |maintenance | +--------+
- | \------------|->| |
- | queries | |Foreign |
- | | | Name |
- \------------------|--| Server |
- maintenance responses | +--------+
-
- In this configuration, the name server periodically establishes a
- virtual circuit to a foreign name server to acquire a copy of a
- zone or to check that an existing copy has not changed. The
- messages sent for these maintenance activities follow the same
- form as queries and responses, but the message sequences are
- somewhat different.
-
-
-
- Mockapetris [Page 3]
-
-
- RFC 883 November 1983
- Domain Names - Implementation and Specification
-
-
- The information flow in a host that supports all aspects of the
- domain name system is shown below:
-
- Local Host | Foreign
- |
- +---------+ +----------+ | +--------+
- | | user queries | |queries | | |
- | User |-------------->| |---------|->|Foreign |
- | Program | | Resolver | | | Name |
- | |<--------------| |<--------|--| Server |
- | | user responses| |responses| | |
- +---------+ +----------+ | +--------+
- | A |
- cache additions | | references |
- V | |
- +----------+ |
- | Shared | |
- | database | |
- +----------+ |
- A | |
- +---------+ refreshes | | references |
- / /| | V |
- +---------+ | +----------+ | +--------+
- | | | | |responses| | |
- | | | | Name |---------|->|Foreign |
- | Master |-------------->| Server | | |Resolver|
- | files | | | |<--------|--| |
- | |/ | | queries | +--------+
- +---------+ +----------+ |
- A |maintenance | +--------+
- | \------------|->| |
- | queries | |Foreign |
- | | | Name |
- \------------------|--| Server |
- maintenance responses | +--------+
-
- The shared database holds domain space data for the local name
- server and resolver. The contents of the shared database will
- typically be a mixture of authoritative data maintained by the
- periodic refresh operations of the name server and cached data
- from previous resolver requests. The structure of the domain data
- and the necessity for synchronization between name servers and
- resolvers imply the general characteristics of this database, but
- the actual format is up to the local implementer. This memo
- suggests a multiple tree format.
-
-
-
-
-
-
- Mockapetris [Page 4]
-
-
- RFC 883 November 1983
- Domain Names - Implementation and Specification
-
-
- This memo divides the implementation discussion into sections:
-
- NAME SERVER TRANSACTIONS, which discusses the formats for name
- servers queries and the corresponding responses.
-
- NAME SERVER MAINTENANCE, which discusses strategies,
- algorithms, and formats for maintaining the data residing in
- name servers. These services periodically refresh the local
- copies of zones that originate in other hosts.
-
- RESOLVER ALGORITHMS, which discusses the internal structure of
- resolvers. This section also discusses data base sharing
- between a name server and a resolver on the same host.
-
- DOMAIN SUPPORT FOR MAIL, which discusses the use of the domain
- system to support mail transfer.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Mockapetris [Page 5]
-
-
- RFC 883 November 1983
- Domain Names - Implementation and Specification
-
-
- Conventions
-
- The domain system has several conventions dealing with low-level,
- but fundamental, issues. While the implementer is free to violate
- these conventions WITHIN HIS OWN SYSTEM, he must observe these
- conventions in ALL behavior observed from other hosts.
-
- ********** Data Transmission Order **********
-
- The order of transmission of the header and data described in this
- document is resolved to the octet level. Whenever a diagram shows
- a group of octets, the order of transmission of those octets is
- the normal order in which they are read in English. For example,
- in the following diagram the octets are transmitted in the order
- they are numbered.
-
-
- 0 1
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | 1 | 2 |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | 3 | 4 |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | 5 | 6 |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- Transmission Order of Bytes
-
- Whenever an octet represents a numeric quantity the left most bit
- in the diagram is the high order or most significant bit. That
- is, the bit labeled 0 is the most significant bit. For example,
- the following diagram represents the value 170 (decimal).
-
-
- 0 1 2 3 4 5 6 7
- +-+-+-+-+-+-+-+-+
- |1 0 1 0 1 0 1 0|
- +-+-+-+-+-+-+-+-+
-
- Significance of Bits
-
- Similarly, whenever a multi-octet field represents a numeric
- quantity the left most bit of the whole field is the most
- significant bit. When a multi-octet quantity is transmitted the
- most significant octet is transmitted first.
-
-
-
-
-
- Mockapetris [Page 6]
-
-
- RFC 883 November 1983
- Domain Names - Implementation and Specification
-
-
- ********** Character Case **********
-
- All comparisons between character strings (e.g. labels, domain
- names, etc.) are done in a case-insensitive manner.
-
- When data enters the domain system, its original case should be
- preserved whenever possible. In certain circumstances this cannot
- be done. For example, if two domain names x.y and X.Y are entered
- into the domain database, they are interpreted as the same name,
- and hence may have a single representation. The basic rule is
- that case can be discarded only when data is used to define
- structure in a database, and two names are identical when compared
- in a case insensitive manner.
-
- Loss of case sensitive data must be minimized. Thus while data
- for x.y and X.Y may both be stored under x.y, data for a.x and B.X
- can be stored as a.x and B.x, but not A.x, A.X, b.x, or b.X. In
- general, this prevents the first component of a domain name from
- loss of case information.
-
- Systems administrators who enter data into the domain database
- should take care to represent the data they supply to the domain
- system in a case-consistent manner if their system is
- case-sensitive. The data distribution system in the domain system
- will ensure that consistent representations are preserved.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Mockapetris [Page 7]
-
-
- RFC 883 November 1983
- Domain Names - Implementation and Specification
-
-
- Design philosophy
-
- The design presented in this memo attempts to provide a base which
- will be suitable for several existing networks. An equally
- important goal is to provide these services within a framework
- that is capable of adjustment to fit the evolution of services in
- early clients as well as to accommodate new networks.
-
- Since it is impossible to predict the course of these
- developments, the domain system attempts to provide for evolution
- in the form of an extensible framework. This section describes
- the areas in which we expect to see immediate evolution.
-
- DEFINING THE DATABASE
-
- This memo defines methods for partitioning the database and data
- for host names, host addresses, gateway information, and mail
- support. Experience with this system will provide guidance for
- future additions.
-
- While the present system allows for many new RR types, classes,
- etc., we feel that it is more important to get the basic services
- in operation than to cover an exhaustive set of information.
- Hence we have limited the data types to those we felt were
- essential, and would caution designers to avoid implementations
- which are based on the number of existing types and classes.
- Extensibility in this area is very important.
-
- While the domain system provides techniques for partitioning the
- database, policies for administrating the orderly connection of
- separate domains and guidelines for constructing the data that
- makes up a particular domain will be equally important to the
- success of the system. Unfortunately, we feel that experience
- with prototype systems will be necessary before this question can
- be properly addressed. Thus while this memo has minimal
- discussion of these issues, it is a critical area for development.
-
- TYING TOGETHER INTERNETS
-
- Although it is very difficult to characterize the types of
- networks, protocols, and applications that will be clients of the
- domain system, it is very obvious that some of these applications
- will cross the boundaries of network and protocol. At the very
- least, mail is such a service.
-
- Attempts to unify two such systems must deal with two major
- problems:
-
- 1. Differing formats for environment sensitive data. For example,
-
-
- Mockapetris [Page 8]
-
-
- RFC 883 November 1983
- Domain Names - Implementation and Specification
-
-
- network addresses vary in format, and it is unreasonable to
- expect to enforce consistent conventions.
-
- 2. Connectivity may require intermediaries. For example, it is a
- frequent occurence that mail is sent between hosts that share
- no common protocol.
-
- The domain system acknowledges that these are very difficult
- problems, and attempts to deal with both problems through its
- CLASS mechanism:
-
- 1. The CLASS field in RRs allows data to be tagged so that all
- programs in the domain system can identify the format in use.
-
- 2. The CLASS field allows the requestor to identify the format of
- data which can be understood by the requestor.
-
- 3. The CLASS field guides the search for the requested data.
-
- The last point is central to our approach. When a query crosses
- protocol boundaries, it must be guided though agents capable of
- performing whatever translation is required. For example, when a
- mailer wants to identify the location of a mailbox in a portion of
- the domain system that doesn't have a compatible protocol, the
- query must be guided to a name server that can cross the boundary
- itself or form one link in a chain that can span the differences.
-
- If query and response transport were the only problem, then this
- sort of problem could be dealt with in the name servers
- themselves. However, the applications that will use domain
- service have similar problems. For example, mail may need to be
- directed through mail gateways, and the characteristics of one of
- the environments may not permit frequent connectivity between name
- servers in all environments.
-
- These problems suggest that connectivity will be achieved through
- a variety of measures:
-
- Translation name servers that act as relays between different
- protocols.
-
- Translation application servers that translate application
- level transactions.
-
- Default database entries that route traffic through application
- level forwarders in ways that depend on the class of the
- requestor.
-
- While this approach seems best given our current understanding of
-
-
- Mockapetris [Page 9]
-
-
- RFC 883 November 1983
- Domain Names - Implementation and Specification
-
-
- the problem, we realize that the approach of using resource data
- that transcends class may be appropriate in future designs or
- applications. By not defining class to be directly related to
- protocol, network, etc., we feel that such services could be added
- by defining a new "universal" class, while the present use of
- class will provide immediate service.
-
- This problem requires more thought and experience before solutions
- can be discovered. The concepts of CLASS, recursive servers and
- other mechanisms are intended as tools for acquiring experience
- and not as final solutions.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Mockapetris [Page 10]
-
-
- RFC 883 November 1983
- Domain Names - Implementation and Specification
-
-
- NAME SERVER TRANSACTIONS
-
- Introduction
-
- The primary purpose of name servers is to receive queries from
- resolvers and return responses. The overall model of this service
- is that a program (typically a resolver) asks the name server
- questions (queries) and gets responses that either answer the
- question or refer the questioner to another name server. Other
- functions related to name server database maintenance use similar
- procedures and formats and are discussed in a section later in
- this memo.
-
- There are three kinds of queries presently defined:
-
- 1. Standard queries that ask for a specified resource attached
- to a given domain name.
-
- 2. Inverse queries that specify a resource and ask for a domain
- name that possesses that resource.
-
- 3. Completion queries that specify a partial domain name and a
- target domain and ask that the partial domain name be
- completed with a domain name close to the target domain.
-
- This memo uses an unqualified reference to queries to refer to
- either all queries or standard queries when the context is clear.
-
- Query and response transport
-
- Name servers and resolvers use a single message format for all
- communications. The message format consists of a variable-length
- octet string which includes binary values.
-
- The messages used in the domain system are designed so that they
- can be carried using either datagrams or virtual circuits. To
- accommodate the datagram style, all responses carry the query as
- part of the response.
-
- While the specification allows datagrams to be used in any
- context, some activities are ill suited to datagram use. For
- example, maintenance transactions and recursive queries typically
- require the error control of virtual circuits. Thus datagram use
- should be restricted to simple queries.
-
- The domain system assumes that a datagram service provides:
-
- 1. A non-reliable (i.e. best effort) method of transporting a
- message of up to 512 octets.
-
-
- Mockapetris [Page 11]
-
-
- RFC 883 November 1983
- Domain Names - Implementation and Specification
-
-
- Hence datagram messages are limited to 512 octets. If a
- datagram message would exceed 512 octets, it is truncated
- and a truncation flag is set in its header.
-
- 2. A message size that gives the number of octets in the
- datagram.
-
- The main implications for programs accessing name servers via
- datagrams are:
-
- 1. Datagrams should not be used for maintenance transactions
- and recursive queries.
-
- 2. Since datagrams may be lost, the originator of a query must
- perform error recovery (such as retransmissions) as
- appropriate.
-
- 3. Since network or host delay may cause retransmission when a
- datagram has not been lost, the originator of a query must
- be ready to deal with duplicate responses.
-
- The domain system assumes that a virtual circuit service provides:
-
- 1. A reliable method of transmitting a message of up to 65535
- octets.
-
- 2. A message size that gives the number of octets in the
- message.
-
- If the virtual circuit service does not provide for message
- boundary detection or limits transmission size to less than
- 65535 octets, then messages are prefaced with an unsigned 16
- bit length field and broken up into separate transmissions
- as required. The length field is only prefaced on the first
- message. This technique is used for TCP virtual circuits.
-
- 3. Multiple messages may be sent over a virtual circuit.
-
- 4. A method for closing a virtual circuit.
-
- 5. A method for detecting that the other party has requested
- that the virtual circuit be closed.
-
- The main implications for programs accessing name servers via
- virtual circuits are:
-
- 1. Either end of a virtual circuit may initiate a close when
- there is no activity in progress. The other end should
- comply.
-
-
- Mockapetris [Page 12]
-
-
- RFC 883 November 1983
- Domain Names - Implementation and Specification
-
-
- The decision to initiate a close is a matter of individual
- site policy; some name servers may leave a virtual circuit
- open for an indeterminate period following a query to allow
- for subsequent queries; other name servers may choose to
- initiate a close following the completion of the first query
- on a virtual circuit. Of course, name servers should not
- close the virtual circuit in the midst of a multiple message
- stream used for zone transfer.
-
- 2. Since network delay may cause one end to erroneously believe
- that no activity is in progress, a program which receives a
- virtual circuit close while a query is in progress should
- close the virtual circuit and resubmit the query on a new
- virtual circuit.
-
- All messages may use a compression scheme to reduce the space
- consumed by repetitive domain names. The use of the compression
- scheme is optional for the sender of a message, but all receivers
- must be capable of decoding compressed domain names.
-
- Overall message format
-
- All messages sent by the domain system are divided into 5 sections
- (some of which are empty in certain cases) shown below:
-
- +---------------------+
- | Header |
- +---------------------+
- | Question | the question for the name server
- +---------------------+
- | Answer | answering resource records (RRs)
- +---------------------+
- | Authority | RRs pointing toward an authority
- +---------------------+
- | Additional | RRs holding pertinent information
- +---------------------+
-
- The header section is always present. The header includes fields
- that specify which of the remaining sections are present, and also
- specify whether the message is a query, inverse query, completion
- query, or response.
-
- The question section contains fields that describe a question to a
- name server. These fields are a query type (QTYPE), a query class
- (QCLASS), and a query domain name (QNAME).
-
- The last three sections have the same format: a possibly empty
- list of concatenated resource records (RRs). The answer section
- contains RRs that answer the question; the authority section
-
-
- Mockapetris [Page 13]
-
-
- RFC 883 November 1983
- Domain Names - Implementation and Specification
-
-
- contains RRs that point toward an authoritative name server; the
- additional records section contains RRs which relate to the query,
- but are not strictly answers for the question.
-
- The next two sections of this memo illustrate the use of these
- message sections through examples; a detailed discussion of data
- formats follows the examples.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Mockapetris [Page 14]
-
-
- RFC 883 November 1983
- Domain Names - Implementation and Specification
-
-
- The contents of standard queries and responses
-
- When a name server processes a standard query, it first determines
- whether it is an authority for the domain name specified in the
- query.
-
- If the name server is an authority, it returns either:
-
- 1. the specified resource information
-
- 2. an indication that the specified name does not exist
-
- 3. an indication that the requested resource information does
- not exist
-
- If the name server is not an authority for the specified name, it
- returns whatever relevant resource information it has along with
- resource records that the requesting resolver can use to locate an
- authoritative name server.
-
- Standard query and response example
-
- The overall structure of a query for retrieving information for
- Internet mail for domain F.ISI.ARPA is shown below:
-
- +-----------------------------------------+
- Header | OPCODE=QUERY, ID=2304 |
- +-----------------------------------------+
- Question |QTYPE=MAILA, QCLASS=IN, QNAME=F.ISI.ARPA |
- +-----------------------------------------+
- Answer | <empty> |
- +-----------------------------------------+
- Authority | <empty> |
- +-----------------------------------------+
- Additional | <empty> |
- +-----------------------------------------+
-
- The header includes an opcode field that specifies that this
- datagram is a query, and an ID field that will be used to
- associate replies with the original query. (Some additional
- header fields have been omitted for clarity.) The question
- section specifies that the type of the query is for mail agent
- information, that only ARPA Internet information is to be
- considered, and that the domain name of interest is F.ISI.ARPA.
- The remaining sections are empty, and would not use any octets in
- a real query.
-
-
-
-
-
- Mockapetris [Page 15]
-
-
- RFC 883 November 1983
- Domain Names - Implementation and Specification
-
-
- One possible response to this query might be:
-
- +-----------------------------------------+
- Header | OPCODE=RESPONSE, ID=2304 |
- +-----------------------------------------+
- Question |QTYPE=MAILA, QCLASS=IN, QNAME=F.ISI.ARPA |
- +-----------------------------------------+
- Answer | <empty> |
- +-----------------------------------------+
- Authority | ARPA NS IN A.ISI.ARPA |
- | ------- |
- | ARPA NS IN F.ISI.ARPA |
- +-----------------------------------------+
- Additional | F.ISI.ARPA A IN 10.2.0.52 |
- | ------- |
- | A.ISI.ARPA A IN 10.1.0.22 |
- +-----------------------------------------+
-
- This type of response would be returned by a name server that was
- not an authority for the domain name F.ISI.ARPA. The header field
- specifies that the datagram is a response to a query with an ID of
- 2304. The question section is copied from the question section in
- the query datagram.
-
- The answer section is empty because the name server did not have
- any information that would answer the query. (Name servers may
- happen to have cached information even if they are not
- authoritative for the query.)
-
- The best that this name server could do was to pass back
- information for the domain ARPA. The authority section specifies
- two name servers for the domain ARPA using the Internet family:
- A.ISI.ARPA and F.ISI.ARPA. Note that it is merely a coincidence
- that F.ISI.ARPA is a name server for ARPA as well as the subject
- of the query.
-
- In this case, the name server included in the additional records
- section the Internet addresses for the two hosts specified in the
- authority section. Such additional data is almost always
- available.
-
- Given this response, the process that originally sent the query
- might resend the query to the name server on A.ISI.ARPA, with a
- new ID of 2305.
-
-
-
-
-
-
-
- Mockapetris [Page 16]
-
-
- RFC 883 November 1983
- Domain Names - Implementation and Specification
-
-
- The name server on A.ISI.ARPA might return a response:
-
- +-----------------------------------------+
- Header | OPCODE=RESPONSE, ID=2305 |
- +-----------------------------------------+
- Question |QTYPE=MAILA, QCLASS=IN, QNAME=F.ISI.ARPA |
- +-----------------------------------------+
- Answer | F.ISI.ARPA MD IN F.ISI.ARPA |
- | ------- |
- | F.ISI.ARPA MF IN A.ISI.ARPA |
- +-----------------------------------------+
- Authority | <empty> |
- +-----------------------------------------+
- Additional | F.ISI.ARPA A IN 10.2.0.52 |
- | ------- |
- | A.ISI.ARPA A IN 10.1.0.22 |
- +-----------------------------------------+
-
- This query was directed to an authoritative name server, and hence
- the response includes an answer but no authority records. In this
- case, the answer section specifies that mail for F.ISI.ARPA can
- either be delivered to F.ISI.ARPA or forwarded to A.ISI.ARPA. The
- additional records section specifies the Internet addresses of
- these hosts.
-
- The contents of inverse queries and responses
-
- Inverse queries reverse the mappings performed by standard query
- operations; while a standard query maps a domain name to a
- resource, an inverse query maps a resource to a domain name. For
- example, a standard query might bind a domain name to a host
- address; the corresponding inverse query binds the host address to
- a domain name.
-
- Inverse query mappings are not guaranteed to be unique or complete
- because the domain system does not have any internal mechanism for
- determining authority from resource records that parallels the
- capability for determining authority as a function of domain name.
- In general, resolvers will be configured to direct inverse queries
- to a name server which is known to have the desired information.
-
- Name servers are not required to support any form of inverse
- queries; it is anticipated that most name servers will support
- address to domain name conversions, but no other inverse mappings.
- If a name server receives an inverse query that it does not
- support, it returns an error response with the "Not Implemented"
- error set in the header. While inverse query support is optional,
- all name servers must be at least able to return the error
- response.
-
-
- Mockapetris [Page 17]
-
-
- RFC 883 November 1983
- Domain Names - Implementation and Specification
-
-
- When a name server processes an inverse query, it either returns:
-
- 1. zero, one, or multiple domain names for the specified
- resource
-
- 2. an error code indicating that the name server doesn't
- support inverse mapping of the specified resource type.
-
- Inverse query and response example
-
- The overall structure of an inverse query for retrieving the
- domain name that corresponds to Internet address 10.2.0.52 is
- shown below:
-
- +-----------------------------------------+
- Header | OPCODE=IQUERY, ID=997 |
- +-----------------------------------------+
- Question | <empty> |
- +-----------------------------------------+
- Answer | <anyname> A IN 10.2.0.52 |
- +-----------------------------------------+
- Authority | <empty> |
- +-----------------------------------------+
- Additional | <empty> |
- +-----------------------------------------+
-
- This query asks for a question whose answer is the Internet style
- address 10.2.0.52. Since the owner name is not known, any domain
- name can be used as a placeholder (and is ignored). The response
- to this query might be:
-
- +-----------------------------------------+
- Header | OPCODE=RESPONSE, ID=997 |
- +-----------------------------------------+
- Question | QTYPE=A, QCLASS=IN, QNAME=F.ISI.ARPA |
- +-----------------------------------------+
- Answer | F.ISI.ARPA A IN 10.2.0.52 |
- +-----------------------------------------+
- Authority | <empty> |
- +-----------------------------------------+
- Additional | <empty> |
- +-----------------------------------------+
-
- Note that the QTYPE in a response to an inverse query is the same
- as the TYPE field in the answer section of the inverse query.
- Responses to inverse queries may contain multiple questions when
- the inverse is not unique.
-
-
-
-
- Mockapetris [Page 18]
-
-
- RFC 883 November 1983
- Domain Names - Implementation and Specification
-
-
- Completion queries and responses
-
- Completion queries ask a name server to complete a partial domain
- name and return a set of RRs whose domain names meet a specified
- set of criteria for "closeness" to the partial input. This type
- of query can provide a local shorthand for domain names or command
- completion similar to that in TOPS-20.
-
- Implementation of completion query processing is optional in a
- name server. However, a name server must return a "Not
- Implemented" (NI) error response if it does not support
- completion.
-
- The arguments in a completion query specify:
-
- 1. A type in QTYPE that specifies the type of the desired name.
- The type is used to restrict the type of RRs which will match
- the partial input so that completion queries can be used for
- mailbox names, host names, or any other type of RR in the
- domain system without concern for matches to the wrong type of
- resource.
-
- 2. A class in QCLASS which specifies the desired class of the RR.
-
- 3. A partial domain name that gives the input to be completed.
- All returned RRs will begin with the partial string. The
- search process first looks for names which qualify under the
- assumption that the partial string ends with a full label
- ("whole label match"); if this search fails, the search
- continues under the assumption that the last label in the
- partial sting may be an incomplete label ("partial label
- match"). For example, if the partial string "Smith" was used
- in a mailbox completion, it would match Smith@ISI.ARPA in
- preference to Smithsonian@ISI.ARPA.
-
- The partial name is supplied by the user through the user
- program that is using domain services. For example, if the
- user program is a mail handler, the string might be "Mockap"
- which the user intends as a shorthand for the mailbox
- Mockapetris@ISI.ARPA; if the user program is TELNET, the user
- might specify "F" for F.ISI.ARPA.
-
- In order to make parsing of messages consistent, the partial
- name is supplied in domain name format (i.e. a sequence of
- labels terminated with a zero length octet). However, the
- trailing root label is ignored during matching.
-
- 4. A target domain name which specifies the domain which is to be
- examined for matches. This name is specified in the additional
-
-
- Mockapetris [Page 19]
-
-
- RFC 883 November 1983
- Domain Names - Implementation and Specification
-
-
- section using a NULL RR. All returned names will end with the
- target name.
-
- The user program which constructs the query uses the target
- name to restrict the search. For example, user programs
- running at ISI might restrict completion to names that end in
- ISI.ARPA; user programs running at MIT might restrict
- completion to the domain MIT.ARPA.
-
- The target domain name is also used by the resolver to
- determine the name server which should be used to process the
- query. In general, queries should be directed to a name server
- that is authoritative for the target domain name. User
- programs which wish to provide completion for a more than one
- target can issue multiple completion queries, each directed at
- a different target. Selection of the target name and the
- number of searches will depend on the goals of the user
- program.
-
- 5. An opcode for the query. The two types of completion queries
- are "Completion Query - Multiple", or CQUERYM, which asks for
- all RRs which could complete the specified input, and
- "Completion Query - Unique", or CQUERYU, which asks for the
- "best" completion.
-
- CQUERYM is used by user programs which want to know if
- ambiguities exist or wants to do its own determinations as to
- the best choice of the available candidates.
-
- CQUERYU is used by user programs which either do not wish to
- deal with multiple choices or are willing to use the closeness
- criteria used by CQUERYU to select the best match.
-
- When a name server receives either completion query, it first
- looks for RRs that begin (on the left) with the same labels as are
- found in QNAME (with the root deleted), and which match the QTYPE
- and QCLASS. This search is called "whole label" matching. If one
- or more hits are found the name server either returns all of the
- hits (CQUERYM) or uses the closeness criteria described below to
- eliminate all but one of the matches (CQUERYU).
-
- If the whole label match fails to find any candidates, then the
- name server assumes that the rightmost label of QNAME (after root
- deletion) is not a complete label, and looks for candidates that
- would match if characters were added (on the right) to the
- rightmost label of QNAME. If one or more hits are found the name
- server either returns all of the hits (CQUERYM) or uses the
- closeness criteria described below to eliminate all but one of the
- matches (CQUERYU).
-
-
- Mockapetris [Page 20]
-
-
- RFC 883 November 1983
- Domain Names - Implementation and Specification
-
-
- If a CQUERYU query encounters multiple hits, it uses the following
- sequence of rules to discard multiple hits:
-
- 1. Discard candidates that have more labels than others. Since
- all candidates start with the partial name and end with the
- target name, this means that we select those entries that
- require the fewest number of added labels. For example, a host
- search with a target of "ISI.ARPA" and a partial name of "A"
- will select A.ISI.ARPA in preference to A.IBM-PCS.ISI.ARPA.
-
- 2. If partial label matching was used, discard those labels which
- required more characters to be added. For example, a mailbox
- search for partial "X" and target "ISI.ARPA" would prefer
- XX@ISI.ARPA to XYZZY@ISI.ARPA.
-
- If multiple hits are still present, return all hits.
-
- Completion query mappings are not guaranteed to be unique or
- complete because the domain system does not have any internal
- mechanism for determining authority from a partial domain name
- that parallels the capability for determining authority as a
- function of a complete domain name. In general, resolvers will be
- configured to direct completion queries to a name server which is
- known to have the desired information.
-
- When a name server processes a completion query, it either
- returns:
-
- 1. An answer giving zero, one, or more possible completions.
-
- 2. an error response with Not Implemented (NI) set.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Mockapetris [Page 21]
-
-
- RFC 883 November 1983
- Domain Names - Implementation and Specification
-
-
- Completion query and response example
-
- Suppose that the completion service was used by a TELNET program
- to allow a user to specify a partial domain name for the desired
- host. Thus a user might ask to be connected to "B". Assuming
- that the query originated from an ISI machine, the query might
- look like:
-
- +-----------------------------------------+
- Header | OPCODE=CQUERYU, ID=409 |
- +-----------------------------------------+
- Question | QTYPE=A, QCLASS=IN, QNAME=B |
- +-----------------------------------------+
- Answer | <empty> |
- +-----------------------------------------+
- Authority | <empty> |
- +-----------------------------------------+
- Additional | ISI.ARPA NULL IN |
- +-----------------------------------------+
-
- The partial name in the query is "B", the mappings of interest are
- ARPA Internet address records, and the target domain is ISI.ARPA.
- Note that NULL is a special type of NULL resource record that is
- used as a placeholder and has no significance; NULL RRs obey the
- standard format but have no other function.
-
- The response to this completion query might be:
-
- +-----------------------------------------+
- Header | OPCODE=RESPONSE, ID=409 |
- +-----------------------------------------+
- Question | QTYPE=A, QCLASS=IN, QNAME=B |
- +-----------------------------------------+
- Answer | B.ISI.ARPA A IN 10.3.0.52 |
- +-----------------------------------------+
- Authority | <empty> |
- +-----------------------------------------+
- Additional | ISI.ARPA NULL IN |
- +-----------------------------------------+
-
- This response has completed B to mean B.ISI.ARPA.
-
-
-
-
-
-
-
-
-
-
- Mockapetris [Page 22]
-
-
- RFC 883 November 1983
- Domain Names - Implementation and Specification
-
-
- Another query might be:
-
- +-----------------------------------------+
- Header | OPCODE=CQUERYM, ID=410 |
- +-----------------------------------------+
- Question | QTYPE=A, QCLASS=IN, QNAME=B |
- +-----------------------------------------+
- Answer | <empty> |
- +-----------------------------------------+
- Authority | <empty> |
- +-----------------------------------------+
- Additional | ARPA NULL IN |
- +-----------------------------------------+
-
- This query is similar to the previous one, but specifies a target
- of ARPA rather than ISI.ARPA. It also allows multiple matches.
- In this case the same name server might return:
-
- +-----------------------------------------+
- Header | OPCODE=RESPONSE, ID=410 |
- +-----------------------------------------+
- Question | QTYPE=A, QCLASS=IN, QNAME=B |
- +-----------------------------------------+
- Answer | B.ISI.ARPA A IN 10.3.0.52 |
- | - |
- | B.BBN.ARPA A IN 10.0.0.49 |
- | - |
- | B.BBNCC.ARPA A IN 8.1.0.2 |
- +-----------------------------------------+
- Authority | <empty> |
- +-----------------------------------------+
- Additional | ARPA NULL IN |
- +-----------------------------------------+
-
- This response contains three answers, B.ISI.ARPA, B.BBN.ARPA, and
- B.BBNCC.ARPA.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Mockapetris [Page 23]
-
-
- RFC 883 November 1983
- Domain Names - Implementation and Specification
-
-
- Recursive Name Service
-
- Recursive service is an optional feature of name servers.
-
- When a name server receives a query regarding a part of the name
- space which is not in one of the name server's zones, the standard
- response is a message that refers the requestor to another name
- server. By iterating on these referrals, the requestor eventually
- is directed to a name server that has the required information.
-
- Name servers may also implement recursive service. In this type
- of service, a name server either answers immediately based on
- local zone information, or pursues the query for the requestor and
- returns the eventual result back to the original requestor.
-
- A name server that supports recursive service sets the Recursion
- Available (RA) bit in all responses it generates. A requestor
- asks for recursive service by setting the Recursion Desired (RD)
- bit in queries. In some situations where recursive service is the
- only path to the desired information (see below), the name server
- may go recursive even if RD is zero.
-
- If a query requests recursion (RD set), but the name server does
- not support recursion, and the query needs recursive service for
- an answer, the name server returns a "Not Implemented" (NI) error
- code. If the query can be answered without recursion since the
- name server is authoritative for the query, it ignores the RD bit.
-
- Because of the difficulty in selecting appropriate timeouts and
- error handling, recursive service is best suited to virtual
- circuits, although it is allowed for datagrams.
-
- Recursive service is valuable in several special situations:
-
- In a system of small personal computers clustered around one or
- more large hosts supporting name servers, the recursive
- approach minimizes the amount of code in the resolvers in the
- personal computers. Such a design moves complexity out of the
- resolver into the name server, and may be appropriate for such
- systems.
-
- Name servers on the boundaries of different networks may wish
- to offer recursive service to create connectivity between
- different networks. Such name servers may wish to provide
- recursive service regardless of the setting of RD.
-
- Name servers that translate between domain name service and
- some other name service may wish to adopt the recursive style.
- Implicit recursion may be valuable here as well.
-
-
- Mockapetris [Page 24]
-
-
- RFC 883 November 1983
- Domain Names - Implementation and Specification
-
-
- These concepts are still under development.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Mockapetris [Page 25]
-
-
- RFC 883 November 1983
- Domain Names - Implementation and Specification
-
-
- Header section format
-
- +-----------------------------------------------+
- | |
- | ***** WARNING ***** |
- | |
- | The following format is preliminary and is |
- | included for purposes of explanation only. In |
- | particular, the size and position of the |
- | OPCODE, RCODE fields and the number and |
- | meaning of the single bit fields are subject |
- | to change. |
- | |
- +-----------------------------------------------+
-
- The header contains the following fields:
-
- 1 1 1 1 1 1
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
- +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
- | ID |
- +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
- |QR| Opcode |AA|TC|RD|RA| | RCODE |
- +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
- | QDCOUNT |
- +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
- | ANCOUNT |
- +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
- | NSCOUNT |
- +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
- | ARCOUNT |
- +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
-
- where:
-
- ID - A 16 bit identifier assigned by the program that
- generates any kind of query. This identifier is copied
- into all replies and can be used by the requestor to
- relate replies to outstanding questions.
-
- QR - A one bit field that specifies whether this message is a
- query (0), or a response (1).
-
- OPCODE - A four bit field that specifies kind of query in this
- message. This value is set by the originator of a query
- and copied into the response. The values are:
-
- 0 a standard query (QUERY)
-
-
-
- Mockapetris [Page 26]
-
-
- RFC 883 November 1983
- Domain Names - Implementation and Specification
-
-
- 1 an inverse query (IQUERY)
-
- 2 an completion query allowing multiple
- answers (CQUERYM)
-
- 2 an completion query requesting a single
- answer (CQUERYU)
-
- 4-15 reserved for future use
-
- AA - Authoritative Answer - this bit is valid in responses,
- and specifies that the responding name server
- is an authority for the domain name in the
- corresponding query.
-
- TC - TrunCation - specifies that this message was truncated
- due to length greater than 512 characters.
- This bit is valid in datagram messages but not
- in messages sent over virtual circuits.
-
- RD - Recursion Desired - this bit may be set in a query and
- is copied into the response. If RD is set, it
- directs the name server to pursue the query
- recursively. Recursive query support is
- optional.
-
- RA - Recursion Available - this be is set or cleared in a
- response, and denotes whether recursive query
- support is available in the name server.
-
- RCODE - Response code - this 4 bit field is set as part of
- responses. The values have the following
- interpretation:
-
- 0 No error condition
-
- 1 Format error - The name server was unable
- to interpret the query.
-
- 2 Server failure - The name server was unable
- to process this query due to a problem with
- the name server.
-
- 3 Name Error - Meaningful only for responses
- from an authoritative name server, this
- code signifies that the domain name
- referenced in the query does not exist.
-
-
-
-
- Mockapetris [Page 27]
-
-
- RFC 883 November 1983
- Domain Names - Implementation and Specification
-
-
- 4 Not Implemented - The name server does not
- support the requested kind of query.
-
- 5 Refused - The name server refuses to
- perform the specified operation for policy
- reasons. For example, a name server may
- not wish to provide the information to the
- particular requestor, or a name server may
- not wish to perform a particular operation
- (e.g. zone transfer) for particular data.
-
- 6-15 Reserved for future use.
-
- QDCOUNT - an unsigned 16 bit integer specifying the number of
- entries in the question section.
-
- ANCOUNT - an unsigned 16 bit integer specifying the number of
- resource records in the answer section.
-
- NSCOUNT - an unsigned 16 bit integer specifying the number of name
- server resource records in the authority records
- section.
-
- ARCOUNT - an unsigned 16 bit integer specifying the number of
- resource records in the additional records section.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Mockapetris [Page 28]
-
-
- RFC 883 November 1983
- Domain Names - Implementation and Specification
-
-
- Question section format
-
- The question section is used in all kinds of queries other than
- inverse queries. In responses to inverse queries, this section
- may contain multiple entries; for all other responses it contains
- a single entry. Each entry has the following format:
-
- 1 1 1 1 1 1
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
- +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
- | |
- / QNAME /
- / /
- +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
- | QTYPE |
- +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
- | QCLASS |
- +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
-
- where:
-
- QNAME - a variable number of octets that specify a domain name.
- This field uses the compressed domain name format
- described in the next section of this memo. This field
- can be used to derive a text string for the domain name.
- Note that this field may be an odd number of octets; no
- padding is used.
-
- QTYPE - a two octet code which specifies the type of the query.
- The values for this field include all codes valid for a
- TYPE field, together with some more general codes which
- can match more than one type of RR. For example, QTYPE
- might be A and only match type A RRs, or might be MAILA,
- which matches MF and MD type RRs. The values for this
- field are listed in Appendix 2.
-
- QCLASS - a two octet code that specifies the class of the query.
- For example, the QCLASS field is IN for the ARPA
- Internet, CS for the CSNET, etc. The numerical values
- are defined in Appendix 2.
-
-
-
-
-
-
-
-
-
-
-
- Mockapetris [Page 29]
-
-
- RFC 883 November 1983
- Domain Names - Implementation and Specification
-
-
- Resource record format
-
- The answer, authority, and additional sections all share the same
- format: a variable number of resource records, where the number of
- records is specified in the corresponding count field in the
- header. Each resource record has the following format:
-
- 1 1 1 1 1 1
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
- +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
- | |
- / /
- / NAME /
- | |
- +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
- | TYPE |
- +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
- | CLASS |
- +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
- | TTL |
- +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
- | RDLENGTH |
- +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--|
- / RDATA /
- / /
- +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
-
- where:
-
- NAME - a compressed domain name to which this resource record
- pertains.
-
- TYPE - two octets containing one of the RR type codes defined
- in Appendix 2. This field specifies the meaning of the
- data in the RDATA field.
-
- CLASS - two octets which specify the class of the data in the
- RDATA field.
-
- TTL - a 16 bit unsigned integer that specifies the time
- interval (in seconds) that the resource record may be
- cached before it should be discarded. Zero values are
- interpreted to mean that the RR can only be used for the
- transaction in progress, and should not be cached. For
- example, SOA records are always distributed with a zero
- TTL to prohibit caching. Zero values can also be used
- for extremely volatile data.
-
-
-
-
- Mockapetris [Page 30]
-
-
- RFC 883 November 1983
- Domain Names - Implementation and Specification
-
-
- RDLENGTH- an unsigned 16 bit integer that specifies the length in
- octets of the RDATA field.
-
- RDATA - a variable length string of octets that describes the
- resource. The format of this information varies
- according to the TYPE and CLASS of the resource record.
- For example, the if the TYPE is A and the CLASS is IN,
- the RDATA field is a 4 octet ARPA Internet address.
-
- Formats for particular resource records are shown in Appendicies 2
- and 3.
-
- Domain name representation and compression
-
- Domain names messages are expressed in terms of a sequence of
- labels. Each label is represented as a one octet length field
- followed by that number of octets. Since every domain name ends
- with the null label of the root, a compressed domain name is
- terminated by a length byte of zero. The high order two bits of
- the length field must be zero, and the remaining six bits of the
- length field limit the label to 63 octets or less.
-
- To simplify implementations, the total length of label octets and
- label length octets that make up a domain name is restricted to
- 255 octets or less. Since the trailing root label and its dot are
- not printed, printed domain names are 254 octets or less.
-
- Although labels can contain any 8 bit values in octets that make
- up a label, it is strongly recommended that labels follow the
- syntax described in Appendix 1 of this memo, which is compatible
- with existing host naming conventions. Name servers and resolvers
- must compare labels in a case-insensitive manner, i.e. A=a, and
- hence all character strings must be ASCII with zero parity.
- Non-alphabetic codes must match exactly.
-
- Whenever possible, name servers and resolvers must preserve all 8
- bits of domain names they process. When a name server is given
- data for the same name under two different case usages, this
- preservation is not always possible. For example, if a name
- server is given data for ISI.ARPA and isi.arpa, it should create a
- single node, not two, and hence will preserve a single casing of
- the label. Systems with case sensitivity should take special
- precautions to insure that the domain data for the system is
- created with consistent case.
-
- In order to reduce the amount of space used by repetitive domain
- names, the sequence of octets that defines a domain name may be
- terminated by a pointer to the length octet of a previously
- specified label string. The label string that the pointer
-
-
- Mockapetris [Page 31]
-
-
- RFC 883 November 1983
- Domain Names - Implementation and Specification
-
-
- specifies is appended to the already specified label string.
- Exact duplication of a previous label string can be done with a
- single pointer. Multiple levels are allowed.
-
- Pointers can only be used in positions in the message where the
- format is not class specific. If this were not the case, a name
- server that was handling a RR for another class could make
- erroneous copies of RRs. As yet, there are no such cases, but
- they may occur in future RDATA formats.
-
- If a domain name is contained in a part of the message subject to
- a length field (such as the RDATA section of an RR), and
- compression is used, the length of the compressed name is used in
- the length calculation, rather than the length of the expanded
- name.
-
- Pointers are represented as a two octet field in which the high
- order 2 bits are ones, and the low order 14 bits specify an offset
- from the start of the message. The 01 and 10 values of the high
- order bits are reserved for future use and should not be used.
-
- Programs are free to avoid using pointers in datagrams they
- generate, although this will reduce datagram capacity. However
- all programs are required to understand arriving messages that
- contain pointers.
-
- For example, a datagram might need to use the domain names
- F.ISI.ARPA, FOO.F.ISI.ARPA, ARPA, and the root. Ignoring the
- other fields of the message, these domain names might be
- represented as:
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Mockapetris [Page 32]
-
-
- RFC 883 November 1983
- Domain Names - Implementation and Specification
-
-
- +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
- 20 | 1 | F |
- +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
- 22 | 3 | I |
- +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
- 24 | S | I |
- +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
- 26 | 4 | A |
- +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
- 28 | R | P |
- +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
- 30 | A | 0 |
- +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
-
- +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
- 40 | 3 | F |
- +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
- 42 | O | O |
- +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
- 44 | 1 1| 20 |
- +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
-
- +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
- 64 | 1 1| 26 |
- +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
-
- +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
- 92 | 0 | |
- +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
-
- The domain name for F.ISI.ARPA is shown at offset 20. The domain
- name FOO.F.ISI.ARPA is shown at offset 40; this definition uses a
- pointer to concatenate a label for FOO to the previously defined
- F.ISI.ARPA. The domain name ARPA is defined at offset 64 using a
- pointer to the ARPA component of the name F.ISI.ARPA at 20; note
- that this reference relies on ARPA being the last label in the
- string at 20. The root domain name is defined by a single octet
- of zeros at 92; the root domain name has no labels.
-
- Organization of the Shared database
-
- While name server implementations are free to use any internal
- data structures they choose, the suggested structure consists of
- several separate trees. Each tree has structure corresponding to
- the domain name space, with RRs attached to nodes and leaves.
- Each zone of authoritative data has a separate tree, and one tree
- holds all non-authoritative data. All of the trees corresponding
- to zones are managed identically, but the non-authoritative or
- cache tree has different management procedures.
-
-
- Mockapetris [Page 33]
-
-
- RFC 883 November 1983
- Domain Names - Implementation and Specification
-
-
- Data stored in the database can be kept in whatever form is
- convenient for the name server, so long as it can be transformed
- back into the format needed for messages. In particular, the
- database will probably use structure in place of expanded domain
- names, and will also convert many of the time intervals used in
- the domain systems to absolute local times.
-
- Each tree corresponding to a zone has complete information for a
- "pruned" subtree of the domain space. The top node of a zone has
- a SOA record that marks the start of the zone. The bottom edge of
- the zone is delimited by nodes containing NS records signifying
- delegation of authority to other zones, or by leaves of the domain
- tree. When a name server contains abutting zones, one tree will
- have a bottom node containing a NS record, and the other tree will
- begin with a tree location containing a SOA record.
-
- Note that there is one special case that requires consideration
- when a name server is implemented. A node that contains a SOA RR
- denoting a start of zone will also have NS records that identify
- the name servers that are expected to have a copy of the zone.
- Thus a name server will usually find itself (and possibly other
- redundant name servers) referred to in NS records occupying the
- same position in the tree as SOA records. The solution to this
- problem is to never interpret a NS record as delimiting a zone
- started by a SOA at the same point in the tree. (The sample
- programs in this memo deal with this problem by processing SOA
- records only after NS records have been processed.)
-
- Zones may also overlap a particular part of the name space when
- they are of different classes.
-
- Other than the abutting and separate class cases, trees are always
- expected to be disjoint. Overlapping zones are regarded as a
- non-fatal error. The scheme described in this memo avoids the
- overlap issue by maintaining separate trees; other designs must
- take the appropriate measures to defend against possible overlap.
-
- Non-authoritative data is maintained in a separate tree. This
- tree is unlike the zone trees in that it may have "holes". Each
- RR in the cache tree has its own TTL that is separately managed.
- The data in this tree is never used if authoritative data is
- available from a zone tree; this avoids potential problems due to
- cached data that conflicts with authoritative data.
-
- The shared database will also contain data structures to support
- the processing of inverse queries and completion queries if the
- local system supports these optional features. Although many
- schemes are possible, this memo describes a scheme that is based
- on tables of pointers that invert the database according to key.
-
-
- Mockapetris [Page 34]
-
-
- RFC 883 November 1983
- Domain Names - Implementation and Specification
-
-
- Each kind of retrieval has a separate set of tables, with one
- table per zone. When a zone is updated, these tables must also be
- updated. The contents of these tables are discussed in the
- "Inverse query processing" and "Completion query processing"
- sections of this memo.
-
- The database implementation described here includes two locks that
- are used to control concurrent access and modification of the
- database by name server query processing, name server maintenance
- operations, and resolver access:
-
- The first lock ("main lock") controls access to all of the
- trees. Multiple concurrent reads are allowed, but write access
- can only be acquired by a single process. Read and write
- access are mutually exclusive. Resolvers and name server
- processes that answer queries acquire this lock in read mode,
- and unlock upon completion of the current message. This lock
- is acquired in write mode by a name server maintenance process
- when it is about to change data in the shared database. The
- actual update procedures are described under "NAME SERVER
- MAINTENANCE" but are designed to be brief.
-
- The second lock ("cache queue lock") controls access to the
- cache queue. This queue is used by a resolver that wishes to
- add information to the cache tree. The resolver acquires this
- lock, then places the RRs to be cached into the queue. The
- name server maintenance procedure periodically acquires this
- lock and adds the queue information to the cache. The
- rationale for this procedure is that it allows the resolver to
- operate with read-only access to the shared database, and
- allows the update process to batch cache additions and the
- associated costs for inversion calculations. The name server
- maintenance procedure must take appropriate precautions to
- avoid problems with data already in the cache, inversions, etc.
-
- This organization solves several difficulties:
-
- When searching the domain space for the answer to a query, a
- name server can restrict its search for authoritative data to
- that tree that matches the most labels on the right side of the
- domain name of interest.
-
- Since updates to a zone must be atomic with respect to
- searches, maintenance operations can simply acquire the main
- lock, insert a new copy of a particular zone without disturbing
- other zones, and then release the storage used by the old copy.
- Assuming a central table pointing to valid zone trees, this
- operation can be a simple pointer swap.
-
-
-
- Mockapetris [Page 35]
-
-
- RFC 883 November 1983
- Domain Names - Implementation and Specification
-
-
- TTL management of zones can be performed using the SOA record
- for the zone. This avoids potential difficulties if individual
- RRs in a zone could be timed out separately. This issue is
- discussed further in the maintenance section.
-
- Query processing
-
- The following algorithm outlines processing that takes place at a
- name server when a query arrives:
-
- 1. Search the list of zones to find zones which have the same
- class as the QCLASS field in the query and have a top domain
- name that matches the right end of the QNAME field. If there
- are none, go to step 2. If there are more than one, pick the
- zone that has the longest match and go to step 3.
-
- 2. Since the zone search failed, the only possible RRs are
- contained in the non-authoritative tree. Search the cache tree
- for the NS record that has the same class as the QCLASS field
- and the largest right end match for domain name. Add the NS
- record or records to the authority section of the response. If
- the cache tree has RRs that are pertinent to the question
- (domain names match, classes agree, not timed-out, and the type
- field is relevant to the QTYPE), copy these RRs into the answer
- section of the response. The name server may also search the
- cache queue. Go to step 4.
-
- 3. Since this zone is the best match, the zone in which QNAME
- resides is either this zone or a zone to which this zone will
- directly or indirectly delegate authority. Search down the
- tree looking for a NS RR or the node specified by QNAME.
-
- If the node exists and has no NS record, copy the relevant
- RRs to the answer section of the response and go to step 4.
-
- If a NS RR is found, either matching a part or all of QNAME,
- then QNAME is in a delegated zone outside of this zone. If
- so, copy the NS record or records into the authority section
- of the response, and search the remainder of the zone for an
- A type record corresponding to the NS reference. If the A
- record is found, add it to the additional section. Go to
- step 2.
-
- If the node is not found and a NS is not found, there is no
- such name; set the Name error bit in the response and exit.
-
- 4. When this step is reached, the answer and authority sections
- are complete. What remains is to complete the additional
- section. This procedure is only possible if the name server
-
-
- Mockapetris [Page 36]
-
-
- RFC 883 November 1983
- Domain Names - Implementation and Specification
-
-
- knows the data formats implied by the class of records in the
- answer and authority sections. Hence this procedure is class
- dependent. Appendix 3 discusses this procedure for Internet
- class data.
-
- While this algorithm deals with typical queries and databases,
- several additions are required that will depend on the database
- supported by the name server:
-
- QCLASS=*
-
- Special procedures are required when the QCLASS of the query is
- "*". If the database contains several classes of data, the
- query processing steps above are performed separately for each
- CLASS, and the results are merged into a single response. The
- name error condition is not meaningful for a QCLASS=* query.
- If the requestor wants this information, it must test each
- class independently.
-
- If the database is limited to data of a particular class, this
- operation can be performed by simply reseting the authoritative
- bit in the response, and performing the query as if QCLASS was
- the class used in the database.
-
- * labels in database RRs
-
- Some zones will contain default RRs that use * to match in
- cases where the search fails for a particular domain name. If
- the database contains these records then a failure must be
- retried using * in place of one or more labels of the search
- key. The procedure is to replace labels from the left with
- "*"s looking for a match until either all labels have been
- replaced, or a match is found. Note that these records can
- never be the result of caching, so a name server can omit this
- processing for zones that don't contain RRs with * in labels,
- or can omit this processing entirely if * never appears in
- local authoritative data.
-
- Inverse query processing
-
- Name servers that support inverse queries can support these
- operations through exhaustive searches of their databases, but
- this becomes impractical as the size of the database increases.
- An alternative approach is to invert the database according to the
- search key.
-
- For name servers that support multiple zones and a large amount of
- data, the recommended approach is separate inversions for each
-
-
-
- Mockapetris [Page 37]
-
-
- RFC 883 November 1983
- Domain Names - Implementation and Specification
-
-
- zone. When a particular zone is changed during a refresh, only
- its inversions need to be redone.
-
- Support for transfer of this type of inversion may be included in
- future versions of the domain system, but is not supported in this
- version.
-
- Completion query processing
-
- Completion query processing shares many of the same problems in
- data structure design as are found in inverse queries, but is
- different due to the expected high rate of use of top level labels
- (ie., ARPA, CSNET). A name server that wishes to be efficient in
- its use of memory may well choose to invert only occurrences of
- ARPA, etc. that are below the top level, and use a search for the
- rare case that top level labels are used to constrain a
- completion.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Mockapetris [Page 38]
-
-
- RFC 883 November 1983
- Domain Names - Implementation and Specification
-
-
- NAME SERVER MAINTENANCE
-
- Introduction
-
- Name servers perform maintenance operations on their databases to
- insure that the data they distribute is accurate and timely. The
- amount and complexity of the maintenance operations that a name
- server must perform are related to the size, change rate, and
- complexity of the database that the name server manages.
-
- Maintenance operations are fundamentally different for
- authoritative and non-authoritative data. A name server actively
- attempts to insure the accuracy and timeliness of authoritative
- data by refreshing the data from master copies. Non-authoritative
- data is merely purged when its time-to-live expires; the name
- server does not attempt to refresh it.
-
- Although the refreshing scheme is fairly simple to implement, it
- is somewhat less powerful than schemes used in other distributed
- database systems. In particular, an update to the master does not
- immediately update copies, and should be viewed as gradually
- percolating though the distributed database. This is adequate for
- the vast majority of applications. In situations where timliness
- is critical, the master name server can prohibit caching of copies
- or assign short timeouts to copies.
-
- Conceptual model of maintenance operations
-
- The vast majority of information in the domain system is derived
- from master files scattered among hosts that implement name
- servers; some name servers will have no master files, other name
- servers will have one or more master files. Each master file
- contains the master data for a single zone of authority rather
- than data for the whole domain name space. The administrator of a
- particular zone controls that zone by updating its master file.
-
- Master files and zone copies from remote servers may include RRs
- that are outside of the zone of authority when a NS record
- delegates authority to a domain name that is a descendant of the
- domain name at which authority is delegated. These forward
- references are a problem because there is no reasonable method to
- guarantee that the A type records for the delegatee are available
- unless they can somehow be attached to the NS records.
-
- For example, suppose the ARPA zone delegates authority at
- MIT.ARPA, and states that the name server is on AI.MIT.ARPA. If a
- resolver gets the NS record but not the A type record for
- AI.MIT.ARPA, it might try to ask the MIT name server for the
- address of AI.MIT.ARPA.
-
-
- Mockapetris [Page 39]
-
-
- RFC 883 November 1983
- Domain Names - Implementation and Specification
-
-
- The solution is to allow type A records that are outside of the
- zone of authority to be copied with the zone. While these records
- won't be found in a search for the A type record itself, they can
- be protected by the zone refreshing system, and will be passed
- back whenever the name server passes back a referral to the
- corresponding NS record. If a query is received for the A record,
- the name server will pass back a referral to the name server with
- the A record in the additional section, rather than answer
- section.
-
- The only exception to the use of master files is a small amount of
- data stored in boot files. Boot file data is used by name servers
- to provide enough resource records to allow zones to be imported
- from foreign servers (e.g. the address of the server), and to
- establish the name and address of root servers. Boot file records
- establish the initial contents of the cache tree, and hence can be
- overridden by later loads of authoritative data.
-
- The data in a master file first becomes available to users of the
- domain name system when it is loaded by the corresponding name
- server. By definition, data from a master file is authoritative.
-
- Other name servers which wish to be authoritative for a particular
- zone do so by transferring a copy of the zone from the name server
- which holds the master copy using a virtual circuit. These copies
- include parameters which specify the conditions under which the
- data in the copy is authoritative. In the most common case, the
- conditions specify a refresh interval and policies to be followed
- when the refresh operation cannot be performed.
-
- A name server may acquire multiple zones from different name
- servers and master files, but the name server must maintain each
- zone separately from others and from non-authoritative data.
-
- When the refresh interval for a particular zone copy expires, the
- name server holding the copy must consult the name server that
- holds the master copy. If the data in the zone has not changed,
- the master name server instructs the copy name server to reset the
- refresh interval. If the data has changed, the master passes a
- new copy of the zone and its associated conditions to the copy
- name server. Following either of these transactions, the copy
- name server begins a new refresh interval.
-
- Copy name servers must also deal with error conditions under which
- they are unable to communicate with the name server that holds the
- master copy of a particular zone. The policies that a copy name
- server uses are determined by other parameters in the conditions
- distributed with every copy. The conditions include a retry
- interval and a maximum holding time. When a copy name server is
-
-
- Mockapetris [Page 40]
-
-
- RFC 883 November 1983
- Domain Names - Implementation and Specification
-
-
- unable to establish communications with a master or is unable to
- complete the refresh transaction, it must retry the refresh
- operation at the rate specified by the retry interval. This retry
- interval will usually be substantially shorter than the refresh
- interval. Retries continue until the maximum holding time is
- reached. At that time the copy name server must assume that its
- copy of the data for the zone in question is no longer
- authoritative.
-
- Queries must be processed while maintenance operations are in
- progress because a zone transfer can take a long time. However,
- to avoid problems caused by access to partial databases, the
- maintenance operations create new copies of data rather than
- directly modifying the old copies. When the new copy is complete,
- the maintenance process locks out queries for a short time using
- the main lock, and switches pointers to replace the old data with
- the new. After the pointers are swapped, the maintenance process
- unlocks the main lock and reclaims the storage used by the old
- copy.
-
- Name server data structures and top level logic
-
- The name server must multiplex its attention between multiple
- activities. For example, a name server should be able to answer
- queries while it is also performing refresh activities for a
- particular zone. While it is possible to design a name server
- that devotes a separate process to each query and refresh activity
- in progress, the model described in this memo is based on the
- assumption that there is a single process performing all
- maintenance operations, and one or more processes devoted to
- handling queries. The model also assumes the existence of shared
- memory for several control structures, the domain database, locks,
- etc.
-
- The model name server uses the following files and shared data
- structures:
-
- 1. A configuration file that describes the master and boot
- files which the name server should load and the zones that
- the name server should attempt to load from foreign name
- servers. This file establishes the initial contents of the
- status table.
-
- 2. Domain data files that contain master and boot data to be
- loaded.
-
- 3. A status table that is derived from the configuration file.
- Each entry in this table describes a source of data. Each
- entry has a zone number. The zone number is zero for
-
-
- Mockapetris [Page 41]
-
-
- RFC 883 November 1983
- Domain Names - Implementation and Specification
-
-
- non-authoritative sources; authoritative sources are
- assigned separate non-zero numbers.
-
- 4. The shared database that holds the domain data. This
- database is assumed to be organized in some sort of tree
- structure paralleling the domain name space, with a list of
- resource records attached to each node and leaf in the tree.
- The elements of the resource record list need not contain
- the exact data present in the corresponding output format,
- but must contain data sufficient to create the output
- format; for example, these records need not contain the
- domain name that is associated with the resource because
- that name can be derived from the tree structure. Each
- resource record also internal data that the name server uses
- to organize its data.
-
- 5. Inversion data structures that allow the name server to
- process inverse queries and completion queries. Although
- many structures could be used, the implementation described
- in this memo supposes that there is one array for every
- inversion that the name server can handle. Each array
- contains a list of pointers to resource records such that
- the order of the inverted quantities is sorted.
-
- 6. The main and cache queue locks
-
- 7. The cache queue
-
- The maintenance process begins by loading the status table from
- the configuration file. It then periodically checks each entry,
- to see if its refresh interval has elapsed. If not, it goes on to
- the next entry. If so, it performs different operations depending
- on the entry:
-
- If the entry is for zone 0, or the cache tree, the maintenance
- process checks to see if additions or deletions are required.
- Additions are acquired from the cache queue using the cache
- queue lock. Deletions are detected using TTL checks. If any
- changes are required, the maintenance process recalculates
- inversion data structures and then alters the cache tree under
- the protection of the main lock. Whenever the maintenance
- process modifies the cache tree, it resets the refresh interval
- to the minimum of the contained TTLs and the desired time
- interval for cache additions.
-
- If the entry is not zone 0, and the entry refers to a local
- file, the maintenance process checks to see if the file has
- been modified since its last load. If so the file is reloaded
- using the procedures specified under "Name server file
-
-
- Mockapetris [Page 42]
-
-
- RFC 883 November 1983
- Domain Names - Implementation and Specification
-
-
- loading". The refresh interval is reset to that specified in
- the SOA record if the file is a master file.
-
- If the entry is for a remote master file, the maintenance
- process checks for a new version using the procedure described
- in "Names server remote zone transfer".
-
- Name server file loading
-
- Master files are kept in text form for ease of editing by system
- maintainers. These files are not exchanged by name servers; name
- servers use the standard message format when transferring zones.
-
- Organizations that want to have a domain, but do not want to run a
- name server, can use these files to supply a domain definition to
- another organization that will run a name server for them. For
- example, if organization X wants a domain but not a name server,
- it can find another organization, Y, that has a name server and is
- willing to provide service for X. Organization X defines domain X
- via the master file format and ships a copy of the master file to
- organization Y via mail, FTP, or some other method. A system
- administrator at Y configures Y's name server to read in X's file
- and hence support the X domain. X can maintain the master file
- using a text editor and send new versions to Y for installation.
-
- These files have a simple line-oriented format, with one RR per
- line. Fields are separated by any combination of blanks and tab
- characters. Tabs are treated the same as spaces; in the following
- discussion the term "blank" means either a tab or a blank. A line
- can be either blank (and ignored), a RR, or a $INCLUDE line.
-
- If a RR line starts with a domain name, that domain name is used
- to specify the location in the domain space for the record, i.e.
- the owner. If a RR line starts with a blank, it is loaded into
- the location specified by the most recent location specifier.
-
- The location specifiers are assumed to be relative to some origin
- that is provided by the user of a file unless the location
- specifier contains the root label. This provides a convenient
- shorthand notation, and can also be used to prevent errors in
- master files from propagating into other zones. This feature is
- particularly useful for master files imported from other sites.
-
- An include line begins with $INCLUDE, starting at the first line
- position, and is followed by a local file name and an optional
- offset modifier. The filename follows the appropriate local
- conventions. The offset is one or more labels that are added to
- the offset in use for the file that contained the $INCLUDE. If
- the offset is omitted, the included file is loaded using the
-
-
- Mockapetris [Page 43]
-
-
- RFC 883 November 1983
- Domain Names - Implementation and Specification
-
-
- offset of the file that contained the $INCLUDE command. For
- example, a file being loaded at offset ARPA might contain the
- following lines:
-
- $INCLUDE <subsys>isi.data ISI
- $INCLUDE <subsys>addresses.data
-
- The first line would be interpreted to direct loading of the file
- <subsys>isi.data at offset ISI.ARPA. The second line would be
- interpreted as a request to load data at offset ARPA.
-
- Note that $INCLUDE commands do not cause data to be loaded into a
- different zone or tree; they are simply ways to allow data for a
- given zone to be organized in separate files. For example,
- mailbox data might be kept separately from host data using this
- mechanism.
-
- Resource records are entered as a sequence of fields corresponding
- to the owner name, TTL, CLASS, TYPE and RDATA components. (Note
- that this order is different from the order used in examples and
- the order used in the actual RRs; the given order allows easier
- parsing and defaulting.)
-
- The owner name is derived from the location specifier.
-
- The TTL field is optional, and is expressed as a decimal
- number. If omitted TTL defaults to zero.
-
- The CLASS field is also optional; if omitted the CLASS defaults
- to the most recent value of the CLASS field in a previous RR.
-
- The RDATA fields depend on the CLASS and TYPE of the RR. In
- general, the fields that make up RDATA are expressed as decimal
- numbers or as domain names. Some exceptions exist, and are
- documented in the RDATA definitions in Appendicies 2 and 3 of
- this memo.
-
- Because CLASS and TYPE fields don't contain any common
- identifiers, and because CLASS and TYPE fields are never decimal
- numbers, the parse is always unique.
-
- Because these files are text files several special encodings are
- necessary to allow arbitrary data to be loaded. In particular:
-
- . A free standing dot is used to refer to the current domain
- name.
-
- @ A free standing @ is used to denote the current origin.
-
-
-
- Mockapetris [Page 44]
-
-
- RFC 883 November 1983
- Domain Names - Implementation and Specification
-
-
- .. Two free standing dots represent the null domain name of
- the root.
-
- \X where X is any character other than a digit (0-9), is used
- to quote that character so that its special meaning does
- not apply. For example, "\." can be used to place a dot
- character in a label.
-
- \DDD where each D is a digit is the octet corresponding to the
- decimal number described by DDD. The resulting octet is
- assumed to be text and is not checked for special meaning.
-
- ( ) Parentheses are used to group data that crosses a line
- boundary. In effect, line terminations are not recognized
- within parentheses.
-
- ; Semicolon is used to start a comment; the remainder of the
- line is ignored.
-
- Name server file loading example
-
- A name server for F.ISI.ARPA , serving as an authority for the
- ARPA and ISI.ARPA domains, might use a boot file and two master
- files. The boot file initializes some non-authoritative data, and
- would be loaded without an origin:
-
- .. 9999999 IN NS B.ISI.ARPA
- 9999999 CS NS UDEL.CSNET
- B.ISI.ARPA 9999999 IN A 10.3.0.52
- UDEL.CSNET 9999999 CS A 302-555-0000
-
- This file loads non-authoritative data which provides the
- identities and addresses of root name servers. The first line
- contains a NS RR which is loaded at the root; the second line
- starts with a blank, and is loaded at the most recent location
- specifier, in this case the root; the third and fourth lines load
- RRs at B.ISI.ARPA and UDEL.CSNET, respectively. The timeouts are
- set to high values (9999999) to prevent this data from being
- discarded due to timeout.
-
- The first master file loads authoritative data for the ARPA
- domain. This file is designed to be loaded with an origin of
- ARPA, which allows the location specifiers to omit the trailing
- .ARPA labels.
-
-
-
-
-
-
-
- Mockapetris [Page 45]
-
-
- RFC 883 November 1983
- Domain Names - Implementation and Specification
-
-
- @ IN SOA F.ISI.ARPA Action.E.ISI.ARPA (
- 20 ; SERIAL
- 3600 ; REFRESH
- 600 ; RETRY
- 3600000; EXPIRE
- 60) ; MINIMUM
- NS F.ISI.ARPA ; F.ISI.ARPA is a name server for ARPA
- NS A.ISI.ARPA ; A.ISI.ARPA is a name server for ARPA
- MIT NS AI.MIT.ARPA; delegation to MIT name server
- ISI NS F.ISI.ARPA ; delegation to ISI name server
-
- UDEL MD UDEL.ARPA
- A 10.0.0.96
- NBS MD NBS.ARPA
- A 10.0.0.19
- DTI MD DTI.ARPA
- A 10.0.0.12
-
- AI.MIT A 10.2.0.6
- F.ISI A 10.2.0.52
-
- The first group of lines contains the SOA record and its
- parameters, and identifies name servers for this zone and for
- delegated zones. The Action.E.ISI.ARPA field is a mailbox
- specification for the responsible person for the zone, and is the
- domain name encoding of the mail destination Action@E.ISI.ARPA.
- The second group specifies data for domain names within this zone.
- The last group has forward references for name server address
- resolution for AI.MIT.ARPA and F.ISI.ARPA. This data is not
- technically within the zone, and will only be used for additional
- record resolution for NS records used in referrals. However, this
- data is protected by the zone timeouts in the SOA, so it will
- persist as long as the NS references persist.
-
- The second master file defines the ISI.ARPA environment, and is
- loaded with an origin of ISI.ARPA:
-
- @ IN SOA F.ISI.ARPA Action\.ISI.E.ISI.ARPA (
- 20 ; SERIAL
- 7200 ; REFRESH
- 600 ; RETRY
- 3600000; EXPIRE
- 60) ; MINIMUM
- NS F.ISI.ARPA ; F.ISI.ARPA is a name server
- A A 10.1.0.32
- MD A.ISI.ARPA
- MF F.ISI.ARPA
- B A 10.3.0.52
- MD B.ISI.ARPA
-
-
- Mockapetris [Page 46]
-
-
- RFC 883 November 1983
- Domain Names - Implementation and Specification
-
-
- MF F.ISI.ARPA
- F A 10.2.0.52
- MD F.ISI.ARPA
- MF A.ISI.ARPA
- $INCLUDE <SUBSYS>ISI-MAILBOXES.TXT
-
- Where the file <SUBSYS>ISI-MAILBOXES.TXT is:
-
- MOE MB F.ISI.ARPA
- LARRY MB A.ISI.ARPA
- CURLEY MB B.ISI.ARPA
- STOOGES MB B.ISI.ARPA
- MG MOE.ISI.ARPA
- MG LARRY.ISI.ARPA
- MG CURLEY.ISI.ARPA
-
- Note the use of the \ character in the SOA RR to specify the
- responsible person mailbox "Action.ISI@E.ISI.ARPA".
-
- Name server remote zone transfer
-
- When a name server needs to make an initial copy of a zone or test
- to see if a existing zone copy should be refreshed, it begins by
- attempting to open a virtual circuit to the foreign name server.
-
- If this open attempt fails, and this was an initial load attempt,
- it schedules a retry and exits. If this was a refresh operation,
- the name server tests the status table to see if the maximum
- holding time derived from the SOA EXPIRE field has elapsed. If
- not, the name server schedules a retry. If the maximum holding
- time has expired, the name server invalidates the zone in the
- status table, and scans all resource records tagged with this zone
- number. For each record it decrements TTL fields by the length of
- time since the data was last refreshed. If the new TTL value is
- negative, the record is deleted. If the TTL value is still
- positive, it moves the RR to the cache tree and schedules a retry.
-
- If the open attempt succeeds, the name server sends a query to the
- foreign name server in which QTYPE=SOA, QCLASS is set according to
- the status table information from the configuration file, and
- QNAME is set to the domain name of the zone of interest.
-
- The foreign name server will return either a SOA record indicating
- that it has the zone or an error. If an error is detected, the
- virtual circuit is closed, and the failure is treated in the same
- way as if the open attempt failed.
-
- If the SOA record is returned and this was a refresh, rather than
- an initial load of the zone, the name server compares the SERIAL
-
-
- Mockapetris [Page 47]
-
-
- RFC 883 November 1983
- Domain Names - Implementation and Specification
-
-
- field in the new SOA record with the SERIAL field in the SOA
- record of the existing zone copy. If these values match, the zone
- has not been updated since the last copy and hence there is no
- reason to recopy the zone. In this case the name server resets
- the times in the existing SOA record and closes the virtual
- circuit to complete the operation.
-
- If this is initial load, or the SERIAL fields were different, the
- name server requests a copy of the zone by sending the foreign
- name server an AXFR query which specifies the zone by its QCLASS
- and QNAME fields.
-
- When the foreign name server receives the AXFR request, it sends
- each node from the zone to the requestor in a separate message.
- It begins with the node that contains the SOA record, walks the
- tree in breadth-first order, and completes the transfer by
- resending the node containing the SOA record.
-
- Several error conditions are possible:
-
- If the AXFR request cannot be matched to a SOA, the foreign
- name server will return a single message in response that does
- not contain the AXFR request. (The normal SOA query preceding
- the AXFR is designed to avoid this condition, but it is still
- possible.)
-
- The foreign name server can detect an internal error or detect
- some other condition (e.g. system going down, out of resources,
- etc.) that forces the transfer to be aborted. If so, it sends
- a message with the "Server failure" condition set. If the AXFR
- can be immediately retried with some chance of success, it
- leaves the virtual open; otherwise it initiates a close.
-
- If the foreign name server doesn't wish to perform the
- operation for policy reasons (i.e. the system administrator
- wishes to forbid zone copies), the foreign server returns a
- "Refused" condition.
-
- The requestor receives these records and builds a new tree. This
- tree is not yet in the status table, so its data are not used to
- process queries. The old copy of the zone, if any, may be used to
- satisfy request while the transfer is in progress.
-
- When the requestor receives the second copy of the SOA node, it
- compares the SERIAL field in the first copy of the SOA against the
- SERIAL field in the last copy of the SOA record. If these don't
- match, the foreign server updated its zone while the transfer was
- in progress. In this case the requestor repeats the AXFR request
- to acquire the newer version.
-
-
- Mockapetris [Page 48]
-
-
- RFC 883 November 1983
- Domain Names - Implementation and Specification
-
-
- If the AXFR transfer eventually succeeds, the name server closes
- the virtual circuit and and creates new versions of inversion data
- structures for this zone. When this operation is complete, the
- name server acquires the main lock in write mode and then replaces
- any old copy of the zone and inversion data structures with new
- ones. The name server then releases the main lock, and can
- reclaim the storage used by the old copy.
-
- If an error occurs during the AXFR transfer, the name server can
- copy any partial information into its cache tree if it wishes,
- although it will not normally do so if the zone transfer was a
- refresh rather than an initial load.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Mockapetris [Page 49]
-
-
- RFC 883 November 1983
- Domain Names - Implementation and Specification
-
-
- RESOLVER ALGORITHMS
-
- Operations
-
- Resolvers have a great deal of latitude in the semantics they
- allow in user calls. For example, a resolver might support
- different user calls that specify whether the returned information
- must be from and authoritative name server or not. Resolvers are
- also responsible for enforcement of any local restrictions on
- access, etc.
-
- In any case, the resolver will transform the user query into a
- number of shared database accesses and queries to remote name
- servers. When a user requests a resource associated with a
- particular domain name, the resolver will execute the following
- steps:
-
- 1. The resolver first checks the local shared database, if any,
- for the desired information. If found, it checks the
- applicable timeout. If the timeout check succeeds, the
- information is used to satisfy the user request. If not, the
- resolver goes to step 2.
-
- 2. In this step, the resolver consults the shared database for the
- name server that most closely matches the domain name in the
- user query. Multiple redundant name servers may be found. The
- resolver goes to step 3.
-
- 3. In this step the resolver chooses one of the available name
- servers and sends off a query. If the query fails, it tries
- another name server. If all fail, an error indication is
- returned to the user. If a reply is received the resolver adds
- the returned RRs to its database and goes to step 4.
-
- 4. In this step, the resolver interprets the reply. If the reply
- contains the desired information, the resolver returns the
- information to the user. The the reply indicates that the
- domain name in the user query doesn't exist, then the resolver
- returns an error to the user. If the reply contains a
- transient name server failure, the resolver can either wait and
- retry the query or go back to step 3 and try a different name
- server. If the reply doesn't contain the desired information,
- but does contain a pointer to a closer name server, the
- resolver returns to step 2, where the closer name servers will
- be queried.
-
- Several modifications to this algorithm are possible. A resolver
- may not support a local cache and instead only cache information
- during the course of a single user request, discarding it upon
-
-
- Mockapetris [Page 50]
-
-
- RFC 883 November 1983
- Domain Names - Implementation and Specification
-
-
- completion. The resolver may also find that a datagram reply was
- truncated, and open a virtual circuit so that the complete reply
- can be recovered.
-
- Inverse and completion queries must be treated in an
- environment-sensitive manner, because the domain system doesn't
- provide a method for guaranteeing that it can locate the correct
- information. The typical choice will be to configure a resolver
- to use a particular set of known name servers for inverse queries.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Mockapetris [Page 51]
-
-
- RFC 883 November 1983
- Domain Names - Implementation and Specification
-
-
- DOMAIN SUPPORT FOR MAIL
-
- Introduction
-
- Mail service is a particularly sensitive issue for users of the
- domain system because of the lack of a consistent system for
- naming mailboxes and even hosts, and the need to support continued
- operation of existing services. This section discusses an
- evolutionary approach for adding consistent domain name support
- for mail.
-
- The crucial issue is deciding on the types of binding to be
- supported. Most mail systems specify a mail destination with a
- two part construct such as X@Y. The left hand side, X, is an
- string, often a user or account, and Y is a string, often a host.
- This section refers to the part on the left, i.e. X, as the local
- part, and refers to the part on the right, i.e. Y, as the global
- part.
-
- Most existing mail systems route mail based on the global part; a
- mailer with mail to deliver to X@Y will decide on the host to be
- contacted using only Y. We refer to this type of binding as
- "agent binding".
-
- For example, mail addressed to Mockapetris@ISIF is delivered to
- host USC-ISIF (USC-ISIF is the official name for the host
- specified by nickname ISIF).
-
- More sophisticated mail systems use both the local and global
- parts, i.e. both X and Y to determine which host should receive
- the mail. These more sophisticated systems usually separate the
- binding of the destination to the host from the actual delivery.
- This allows the global part to be a generic name rather than
- constraining it to a single host. We refer to this type of
- binding as "mailbox binding".
-
- For example, mail addressed to Mockapetris@ISI might be bound
- to host F.ISI.ARPA, and subsequently delivered to that host,
- while mail for Cohen@ISI might be bound to host B.ISI.ARPA.
-
- The domain support for mail consists of two levels of support,
- corresponding to these two binding models.
-
- The first level, agent binding, is compatible with existing
- ARPA Internet mail procedures and uses maps a global part onto
- one or more hosts that will accept the mail. This type of
- binding uses the MAILA QTYPE.
-
- The second level, mailbox binding, offers extended services
-
-
- Mockapetris [Page 52]
-
-
- RFC 883 November 1983
- Domain Names - Implementation and Specification
-
-
- that map a local part and a global part onto one or more sets
- of data via the MAILB QTYPE. The sets of data include hosts
- that will accept the mail, mailing list members (mail groups),
- and mailboxes for reporting errors or requests to change a mail
- group.
-
- The domain system encodes the global part of a mail destination as
- a domain name and uses dots in the global part to separate labels
- in the encoded domain name. The domain system encodes the local
- part of a mail destination as a single label, and any dots in this
- part are simply copied into the label. The domain system forms a
- complete mail destination as the local label concatenated to the
- domain string for the global part. We call this a mailbox.
-
- For example, the mailbox Mockapetris@F.ISI.ARPA has a global
- domain name of three labels, F.ISI.ARPA. The domain name
- encoding for the whole mailbox is Mockapetris.F.ISI.ARPA. The
- mailbox Mockapetris.cad@F.ISI.ARPA has the same domain name for
- the global part and a 4 label domain name for the mailbox of
- Mockapetris\.cad.F.ISI.ARPA (the \ is not stored in the label,
- its merely used to denote the "quoted" dot).
-
- It is anticipated that the Internet system will adopt agent
- binding as part of the initial implementation of the domain
- system, and that mailbox binding will eventually become the
- preferred style as organizations convert their mail systems to the
- new style. To facilitate this approach, the domain information
- for these two binding styles is organized to allow a requestor to
- determine which types of support are available, and the
- information is kept in two disjoint classes.
-
- Agent binding
-
- In agent binding, a mail system uses the global part of the mail
- destination as a domain name, with dots denoting structure. The
- domain name is resolved using a MAILA query which return MF and MD
- RRs to specify the domain name of the appropriate host to receive
- the mail. MD (Mail delivery) RRs specify hosts that are expected
- to have the mailbox in question; MF (Mail forwarding) RRs specify
- hosts that are expected to be intermediaries willing to accept the
- mail for eventual forwarding. The hosts are hints, rather than
- definite answers, since the query is made without the full mail
- destination specification.
-
- For example, mail for MOCKAPETRIS@F.ISI.ARPA would result in a
- query with QTYPE=MAILA and QNAME=F.ISI.ARPA, which might return
- two RRs:
-
-
-
-
- Mockapetris [Page 53]
-
-
- RFC 883 November 1983
- Domain Names - Implementation and Specification
-
-
- F.ISI.ARPA MD IN F.ISI.ARPA
- F.ISI.ARPA MF IN A.ISI.ARPA
-
- The mailer would interpret these to mean that the mail agent on
- F.ISI.ARPA should be able to deliver the mail directly, but that
- A.ISI.ARPA is willing to accept the mail for probable forwarding.
-
- Using this system, an organization could implement a system that
- uses organization names for global parts, rather than the usual
- host names, but all mail for the organization would be routed the
- same, regardless of its local part. Hence and organization with
- many hosts would expect to see many forwarding operations.
-
- Mailbox binding
-
- In mailbox binding, the mailer uses the entire mail destination
- specification to construct a domain name. The encoded domain name
- for the mailbox is used as the QNAME field in a QTYPE=MAILB query.
-
- Several outcomes are possible for this query:
-
- 1. The query can return a name error indicating that the mailbox
- does not exist as a domain name.
-
- In the long term this would indicate that the specified mailbox
- doesn't exist. However, until the use of mailbox binding is
- universal, this error condition should be interpreted to mean
- that the organization identified by the global part does not
- support mailbox binding. The appropriate procedure is to
- revert to agent binding at this point.
-
- 2. The query can return a Mail Rename (MR) RR.
-
- The MR RR carries new mailbox specification in its RDATA field.
- The mailer should replace the old mailbox with the new one and
- retry the operation.
-
- 3. The query can return a MB RR.
-
- The MB RR carries a domain name for a host in its RDATA field.
- The mailer should deliver the message to that host via whatever
- protocol is applicable, e.g. SMTP.
-
- 4. The query can return one or more Mail Group (MG) RRs.
-
- This condition means that the mailbox was actually a mailing
- list or mail group, rather than a single mailbox. Each MG RR
- has a RDATA field that identifies a mailbox that is a member of
-
-
-
- Mockapetris [Page 54]
-
-
- RFC 883 November 1983
- Domain Names - Implementation and Specification
-
-
- the group. The mailer should deliver a copy of the message to
- each member.
-
- 5. The query can return a MB RR as well as one or more MG RRs.
-
- This condition means the the mailbox was actually a mailing
- list. The mailer can either deliver the message to the host
- specified by the MB RR, which will in turn do the delivery to
- all members, or the mailer can use the MG RRs to do the
- expansion itself.
-
- In any of these cases, the response may include a Mail Information
- (MINFO) RR. This RR is usually associated with a mail group, but
- is legal with a MB. The MINFO RR identifies two mailboxes. One
- of these identifies a responsible person for the original mailbox
- name. This mailbox should be used for requests to be added to a
- mail group, etc. The second mailbox name in the MINFO RR
- identifies a mailbox that should receive error messages for mail
- failures. This is particularly appropriate for mailing lists when
- errors in member names should be reported to a person other than
- the one who sends a message to the list. New fields may be added
- to this RR in the future.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Mockapetris [Page 55]
-
-
- RFC 883 November 1983
- Domain Names - Implementation and Specification
-
-
- Appendix 1 - Domain Name Syntax Specification
-
- The preferred syntax of domain names is given by the following BNF
- rules. Adherence to this syntax will result in fewer problems with
- many applications that use domain names (e.g., mail, TELNET). Note
- that some applications use domain names containing binary information
- and hence do not follow this syntax.
-
- <domain> ::= <subdomain> | " "
-
- <subdomain> ::= <label> | <subdomain> "." <label>
-
- <label> ::= <letter> [ [ <ldh-str> ] <let-dig> ]
-
- <ldh-str> ::= <let-dig-hyp> | <let-dig-hyp> <ldh-str>
-
- <let-dig-hyp> ::= <let-dig> | "-"
-
- <let-dig> ::= <letter> | <digit>
-
- <letter> ::= any one of the 52 alphabetic characters A through Z
- in upper case and a through z in lower case
-
- <digit> ::= any one of the ten digits 0 through 9
-
- Note that while upper and lower case letters are allowed in domain
- names no significance is attached to the case. That is, two names
- with the same spelling but different case are to be treated as if
- identical.
-
- The labels must follow the rules for ARPANET host names. They must
- start with a letter, end with a letter or digit, and have as interior
- characters only letters, digits, and hyphen. There are also some
- restrictions on the length. Labels must be 63 characters or less.
-
- For example, the following strings identify hosts in the ARPA
- Internet:
-
- F.ISI.ARPA LINKABIT-DCN5.ARPA UCL-TAC.ARPA
-
-
-
-
-
-
-
-
-
-
-
-
- Mockapetris [Page 56]
-
-
- RFC 883 November 1983
- Domain Names - Implementation and Specification
-
-
- Appendix 2 - Field formats and encodings
-
- +-----------------------------------------------+
- | |
- | ***** WARNING ***** |
- | |
- | The following formats are preliminary and |
- | are included for purposes of explanation only.|
- | In particular, new RR types will be added, |
- | and the size, position, and encoding of |
- | fields are subject to change. |
- | |
- +-----------------------------------------------+
-
- TYPE values
-
- TYPE fields are used in resource records. Note that these types
- are not the same as the QTYPE fields used in queries, although the
- functions are often similar.
-
- TYPE value meaning
-
- A 1 a host address
-
- NS 2 an authoritative name server
-
- MD 3 a mail destination
-
- MF 4 a mail forwarder
-
- CNAME 5 the canonical name for an alias
-
- SOA 6 marks the start of a zone of authority
-
- MB 7 a mailbox domain name
-
- MG 8 a mail group member
-
- MR 9 a mail rename domain name
-
- NULL 10 a null RR
-
- WKS 11 a well known service description
-
- PTR 12 a domain name pointer
-
- HINFO 13 host information
-
- MINFO 14 mailbox or mail list information
-
-
- Mockapetris [Page 57]
-
-
- RFC 883 November 1983
- Domain Names - Implementation and Specification
-
-
- QTYPE values
-
- QTYPE fields appear in the question part of a query. They include
- the values of TYPE with the following additions:
-
- AXFR 252 A request for a transfer of an entire zone of authority
-
- MAILB 253 A request for mailbox-related records (MB, MG or MR)
-
- MAILA 254 A request for mail agent RRs (MD and MF)
-
- * 255 A request for all records
-
- CLASS values
-
- CLASS fields appear in resource records
-
- CLASS value meaning
-
- IN 1 the ARPA Internet
-
- CS 2 the computer science network (CSNET)
-
- QCLASS values
-
- QCLASS fields appear in the question section of a query. They
- include the values of CLASS with the following additions:
-
- * 255 any class
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Mockapetris [Page 58]
-
-
- RFC 883 November 1983
- Domain Names - Implementation and Specification
-
-
- Standard resource record formats
-
- All RRs have the same top level format shown below:
-
- 1 1 1 1 1 1
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
- +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
- | |
- / /
- / NAME /
- | |
- +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
- | TYPE |
- +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
- | CLASS |
- +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
- | TTL |
- +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
- | RDLENGTH |
- +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--|
- / RDATA /
- / /
- +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
-
- where:
-
- NAME - a compressed domain name to which this resource
- record pertains.
-
- TYPE - two octets containing one of the RR type codes
- defined in Appendix 2. This field specifies the
- meaning of the data in the RDATA field.
-
- CLASS - two octets which specifies the class of the data in
- the RDATA field.
-
- TTL - a 16 bit signed integer that specifies the time
- interval that the resource record may be cached
- before the source of the information should again be
- consulted. Zero values are interpreted to mean that
- the RR can only be used for the transaction in
- progress, and should not be cached. For example, SOA
- records are always distributed with a zero TTL to
- prohibit caching. Zero values can also be used for
- extremely volatile data.
-
- RDLENGTH- an unsigned 16 bit integer that specifies the length
- in octets of the RDATA field.
-
-
-
- Mockapetris [Page 59]
-
-
- RFC 883 November 1983
- Domain Names - Implementation and Specification
-
-
- RDATA - a variable length string of octets that describes the
- resource. The format of this information varies
- according to the TYPE and CLASS of the resource
- record.
-
- The format of the RDATA field is standard for all classes for the
- RR types NS, MD, MF, CNAME, SOA, MB, MG, MR, PTR, HINFO, MINFO and
- NULL. These formats are shown below together with the appropriate
- additional section RR processing.
-
- CNAME RDATA format
-
- +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
- / CNAME /
- / /
- +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
-
- where:
-
- CNAME - A compressed domain name which specifies that the
- domain name of the RR is an alias for a canonical
- name specified by CNAME.
-
- CNAME records cause no additional section processing. The
- RDATA section of a CNAME line in a master file is a standard
- printed domain name.
-
- HINFO RDATA format
-
- +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
- / CPU /
- +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
- / OS /
- +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
-
- where:
-
- CPU - A character string which specifies the CPU type. The
- character string is represented as a single octet
- length followed by that number of characters. The
- following standard strings are defined:.
-
- PDP-11/70 C/30 C/70 VAX-11/780
- H-316 H-516 DEC-2060 DEC-1090T
- ALTO IBM-PC IBM-PC/XT PERQ
- IBM-360/67 IBM-370/145
-
- OS - A character string which specifies the operating system
- type. The character string is represented as a single octet
-
-
- Mockapetris [Page 60]
-
-
- RFC 883 November 1983
- Domain Names - Implementation and Specification
-
-
- length followed by that number of characters. The following
- standard types are defined:.
-
- ASP AUGUST BKY CCP
- DOS/360 ELF EPOS EXEC-8
- GCOS GPOS ITS INTERCOM
- KRONOS MCP MOS MPX-RT
- MULTICS MVT NOS NOS/BE
- OS/MVS OS/MVT RIG RSX11
- RSX11M RT11 SCOPE SIGNAL
- SINTRAN TENEX TOPS10 TOPS20
- TSS UNIX VM/370 VM/CMS
- VMS WAITS
-
- HINFO records cause no additional section processing.
-
- HINFO records are used to acquire general information about a
- host. The main use is for protocols such as FTP that can use
- special procedures when talking between machines or operating
- systems of the same type.
-
- MB RDATA format
-
- +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
- / MADNAME /
- / /
- +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
-
- where:
-
- MADNAME - A compressed domain name which specifies a host which
- has the specified mailbox.
-
- MB records cause additional section processing which looks up
- an A type record corresponding to MADNAME. The RDATA section
- of a MB line in a master file is a standard printed domain
- name.
-
- MD RDATA format
-
- +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
- / MADNAME /
- / /
- +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
-
- where:
-
- MADNAME - A compressed domain name which specifies a host which
-
-
-
- Mockapetris [Page 61]
-
-
- RFC 883 November 1983
- Domain Names - Implementation and Specification
-
-
- has a mail agent for the domain which should be able
- to deliver mail for the domain.
-
- MD records cause additional section processing which looks up
- an A type record corresponding to MADNAME. The RDATA section
- of a MD line in a master file is a standard printed domain
- name.
-
- MF RDATA format
-
- +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
- / MADNAME /
- / /
- +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
-
- where:
-
- MADNAME - A compressed domain name which specifies a host which
- has a mail agent for the domain which will accept
- mail for forwarding to the domain.
-
- MF records cause additional section processing which looks up
- an A type record corresponding to MADNAME. The RDATA section
- of a MF line in a master file is a standard printed domain
- name.
-
- MG RDATA format
-
- +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
- / MGMNAME /
- / /
- +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
-
- where:
-
- MGMNAME - A compressed domain name which specifies a mailbox
- which is a member of the mail group specified by the
- domain name.
-
- MF records cause no additional section processing. The RDATA
- section of a MF line in a master file is a standard printed
- domain name.
-
-
-
-
-
-
-
-
-
- Mockapetris [Page 62]
-
-
- RFC 883 November 1983
- Domain Names - Implementation and Specification
-
-
- MINFO RDATA format
-
- +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
- / RMAILBX /
- +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
- / EMAILBX /
- +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
-
- where:
-
- RMAILBX - A compressed domain name which specifies a mailbox
- which is responsible for the mailing list or mailbox.
- If this domain name names the root, the owner of the
- MINFO RR is responsible for itself. Note that many
- existing mailing lists use a mailbox X-request for
- the RMAILBX field of mailing list X, e.g.
- Msgroup-request for Msgroup. This field provides a
- more general mechanism.
-
- EMAILBX - A compressed domain name which specifies a mailbox
- which is to receive error messages related to the
- mailing list or mailbox specified by the owner of the
- MINFO RR (similar to the ERRORS-TO: field which has
- been proposed). If this domain name names the root,
- errors should be returned to the sender of the
- message.
-
- MINFO records cause no additional section processing. Although
- these records can be associated with a simple mailbox, they are
- usually used with a mailing list. The MINFO section of a MF
- line in a master file is a standard printed domain name.
-
- MR RDATA format
-
- +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
- / NEWNAME /
- / /
- +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
-
- where:
-
- NEWNAME - A compressed domain name which specifies a mailbox
- which is the proper rename of the specified mailbox.
-
- MR records cause no additional section processing. The RDATA
- section of a MR line in a master file is a standard printed
- domain name.
-
-
-
-
- Mockapetris [Page 63]
-
-
- RFC 883 November 1983
- Domain Names - Implementation and Specification
-
-
- NULL RDATA format
-
- +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
- / <anything> /
- / /
- +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
-
- Anything at all may be in the RDATA field so long as it is
- 65535 octets or less.
-
- NULL records cause no additional section processing. NULL RRs
- are not allowed in master files.
-
- NS RDATA format
-
- +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
- / NSDNAME /
- / /
- +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
-
- where:
-
- NSDNAME - A compressed domain name which specifies a host which
- has a name server for the domain.
-
- NS records cause both the usual additional section processing
- to locate a type A record, and a special search of the zone in
- which they reside. The RDATA section of a NS line in a master
- file is a standard printed domain name.
-
- PTR RDATA format
-
- +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
- / PTRDNAME /
- +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
-
- where:
-
- PTRDNAME - A compressed domain name which points to some
- location in the domain name space.
-
- PTR records cause no additional section processing. These RRs
- are used in special domains to point to some other location in
- the domain space. These records are simple data, and don't
- imply any special processing similar to that performed by
- CNAME, which identifies aliases. Appendix 3 discusses the use
- of these records in the ARPA Internet address domain.
-
-
-
-
- Mockapetris [Page 64]
-
-
- RFC 883 November 1983
- Domain Names - Implementation and Specification
-
-
- SOA RDATA format
-
- +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
- / MNAME /
- / /
- +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
- / RNAME /
- +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
- | SERIAL |
- +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
- | REFRESH |
- | |
- +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
- | RETRY |
- | |
- +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
- | EXPIRE |
- | |
- +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
- | MINIMUM |
- +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
-
- where:
-
- MNAME - The domain name of the name server that was the
- original source of data for this zone.
-
- RNAME - A domain name which specifies the mailbox of the
- person responsible for this zone.
-
- SERIAL - The unsigned 16 bit version number of the of the
- original copy of the zone. This value wraps and
- should be compared using sequence space arithmetic.
-
- REFRESH - The unsigned 32 bit time interval before the zone
- should be refreshed.
-
- RETRY - The unsigned 32 bit time interval that should elapse
- before a failed refresh should be retried.
-
- EXPIRE - A 32 bit time value that specifies the upper limit on
- the time interval that can elapse before the zone is
- no longer authoritative.
-
- MINIMUM - The unsigned 16 bit minimum TTL field that should be
- exported with any RR from this zone (other than the
- SOA itself).
-
- SOA records cause no additional section processing. The RDATA
-
-
- Mockapetris [Page 65]
-
-
- RFC 883 November 1983
- Domain Names - Implementation and Specification
-
-
- section of a SOA line in a master file is a standard printed
- domain name for MNAME, a standard X@Y mailbox specification for
- RNAME, and decimal numbers for the remaining parameters.
-
- All times are in units of seconds.
-
- Most of these fields are pertinent only for name server
- maintenance operations. However, MINIMUM is used in all query
- operations that retrieve RRs from a zone. Whenever a RR is
- sent in a response to a query, the TTL field is set to the
- maximum of the TTL field from the RR and the MINIMUM field in
- the appropriate SOA. Thus MINIMUM is a lower bound on the TTL
- field for all RRs in a zone. RRs in a zone are never discarded
- due to timeout unless the whole zone is deleted. This prevents
- partial copies of zones.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Mockapetris [Page 66]
-
-
- RFC 883 November 1983
- Domain Names - Implementation and Specification
-
-
- Appendix 3 - Internet specific field formats and operations
-
- Message transport
-
- The Internet supports name server access using TCP [10] on server
- port 53 (decimal) as well as datagram access using UDP [11] on UDP
- port 53 (decimal). Messages sent over TCP virtual circuits are
- preceded by an unsigned 16 bit length field which describes the
- length of the message, excluding the length field itself.
-
- +-----------------------------------------------+
- | |
- | ***** WARNING ***** |
- | |
- | The following formats are preliminary and |
- | are included for purposes of explanation only.|
- | In particular, new RR types will be added, |
- | and the size, position, and encoding of |
- | fields are subject to change. |
- | |
- +-----------------------------------------------+
-
- A RDATA format
-
- +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
- | ADDRESS |
- +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
-
- where:
-
- ADDRESS - A 32 bit ARPA internet address
-
- Hosts that have multiple ARPA Internet addresses will have
- multiple A records.
-
- A records cause no additional section processing. The RDATA
- section of an A line in a master file is an Internet address
- expressed as four decimal numbers separated by dots without any
- imbedded spaces (e.g., "10.2.0.52" or "192.0.5.6").
-
-
-
-
-
-
-
-
-
-
-
-
- Mockapetris [Page 67]
-
-
- RFC 883 November 1983
- Domain Names - Implementation and Specification
-
-
- WKS RDATA format
-
- +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
- | ADDRESS |
- +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
- | PROTOCOL | |
- +--+--+--+--+--+--+--+--+ |
- | |
- / <BIT MAP> /
- / /
- +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
-
- where:
-
- ADDRESS - An 32 bit ARPA Internet address
-
- PROTOCOL - An 8 bit IP protocol number
-
- <BIT MAP> - A variable length bit map. The bit map must be a
- multiple of 8 bits long.
-
- The WKS record is used to describe the well known services
- supported by a particular protocol on a particular internet
- address. The PROTOCOL field specifies an IP protocol number, and
- the bit map has one bit per port of the specified protocol. The
- first bit corresponds to port 0, the second to port 1, etc. If
- less than 256 bits are present, the remainder are assumed to be
- zero. The appropriate values for ports and protocols are
- specified in [13].
-
- For example, if PROTOCOL=TCP (6), the 26th bit corresponds to TCP
- port 25 (SMTP). If this bit is set, a SMTP server should be
- listening on TCP port 25; if zero, SMTP service is not supported
- on the specified address.
-
- The anticipated use of WKS RRs is to provide availability
- information for servers for TCP and UDP. If a server supports
- both TCP and UDP, or has multiple Internet addresses, then
- multiple WKS RRs are used.
-
- WKS RRs cause no additional section processing. The RDATA section
- of a WKS record consists of a decimal protocol number followed by
- mnemonic identifiers which specify bits to be set to 1.
-
- IN-ADDR special domain
-
- The ARPA internet uses a special domain to support gateway
- location and ARPA Internet address to host mapping. The intent of
- this domain is to allow queries to locate all gateways on a
-
-
- Mockapetris [Page 68]
-
-
- RFC 883 November 1983
- Domain Names - Implementation and Specification
-
-
- particular network in the ARPA Internet, and also to provide a
- guaranteed method to perform host address to host name mapping.
-
- Note that both of these services are similar to functions that
- could be performed by inverse queries; the difference is that this
- part of the domain name space is structured according to address,
- and hence can guarantee that the appropriate data can be located
- without an exhaustive search of the domain space. It is
- anticipated that the special tree will be used by ARPA Internet
- resolvers for all gateway location services, but that address to
- name resolution will be performed by first trying the inverse
- query on the local name server database followed by a query in the
- special space if the inverse query fails.
-
- The domain is a top level domain called IN-ADDR whose substructure
- follows the ARPA Internet addressing structure.
-
- Domain names in the IN-ADDR domain are defined to have up to four
- labels in addition to the IN-ADDR label. Each label is a
- character string which expresses a decimal value in the range
- 0-255 (with leading zeros omitted except in the case of a zero
- octet which is represented by a single zero). These labels
- correspond to the 4 octets of an ARPA Internet address.
-
- Host addresses are represented by domain names that have all four
- labels specified. Thus data for ARPA Internet address 10.2.0.52
- is located at domain name 52.0.2.10.IN-ADDR. The reversal, though
- awkward to read, allows zones to follow the natural grouping of
- hosts within networks. For example, 10.IN-ADDR can be a zone
- containing data for the ARPANET, while 26.IN-ADDR can be a
- separate zone for MILNET. Address nodes are used to hold pointers
- to primary host names in the normal domain space.
-
- Network addresses correspond to some of the non-terminal nodes in
- the IN-ADDR tree, since ARPA Internet network numbers are either
- 1, 2, or 3 octets. Network nodes are used to hold pointers to
- primary host names (which happen to be gateways) in the normal
- domain space. Since a gateway is, by definition, on more than one
- network, it will typically have two or more network nodes that
- point at the gateway. Gateways will also have host level pointers
- at their fully qualified addresses.
-
- Both the gateway pointers at network nodes and the normal host
- pointers at full address nodes use the PTR RR to point back to the
- primary domain names of the corresponding hosts.
-
- For example, part of the IN-ADDR domain will contain information
- about the ISI to MILNET and MIT gateways, and hosts F.ISI.ARPA and
- MULTICS.MIT.ARPA. Assuming that ISI gateway has addresses
-
-
- Mockapetris [Page 69]
-
-
- RFC 883 November 1983
- Domain Names - Implementation and Specification
-
-
- 10.2.0.22 and 26.0.0.103, and a name MILNET-GW.ISI.ARPA, and the
- MIT gateway has addresses 10.0.0.77 and 18.10.0.4 and a name
- GW.MIT.ARPA, the domain database would contain:
-
- 10.IN-ADDR PTR IN MILNET-GW.ISI.ARPA
- 10.IN-ADDR PTR IN GW.MIT.ARPA
- 18.IN-ADDR PTR IN GW.MIT.ARPA
- 26.IN-ADDR PTR IN MILNET-GW.ISI.ARPA
- 22.0.2.10.IN-ADDR PTR IN MILNET-GW.ISI.ARPA
- 103.0.0.26.IN-ADDR PTR IN MILNET-GW.ISI.ARPA
- 77.0.0.10.IN-ADDR PTR IN GW.MIT.ARPA
- 4.0.10.18.IN-ADDR PTR IN GW.MIT.ARPA
- 52.0.2.10.IN-ADDR PTR IN F.ISI.ARPA
- 6.0.0.10.IN-ADDR PTR IN MULTICS.MIT.ARPA
-
- Thus a program which wanted to locate gateways on net 10 would
- originate a query of the form QTYPE=PTR, QCLASS=IN,
- QNAME=10.IN-ADDR. It would receive two RRs in response:
-
- 10.IN-ADDR PTR IN MILNET-GW.ISI.ARPA
- 10.IN-ADDR PTR IN GW.MIT.ARPA
-
- The program could then originate QTYPE=A, QCLASS=IN queries for
- MILNET-GW.ISI.ARPA and GW.MIT.ARPA to discover the ARPA Internet
- addresses of these gateways.
-
- A resolver which wanted to find the host name corresponding to
- ARPA Internet host address 10.0.0.6 might first try an inverse
- query on the local name server, but find that this information
- wasn't available. It could then try a query of the form
- QTYPE=PTR, QCLASS=IN, QNAME=6.0.0.10.IN-ADDR, and would receive:
-
- 6.0.0.10.IN-ADDR PTR IN MULTICS.MIT.ARPA
-
- Several cautions apply to the use of these services:
-
- Since the IN-ADDR special domain and the normal domain for a
- particular host or gateway will be in different zones, the
- possibility exists that that the data may be inconsistent.
-
- Gateways will often have two names in separate domains, only
- one of which can be primary.
-
- Systems that use the domain database to initialize their
- routing tables must start with enough gateway information to
- guarantee that they can access the appropriate name server.
-
- The gateway data only reflects the existence of a gateway in a
-
-
-
- Mockapetris [Page 70]
-
-
- RFC 883 November 1983
- Domain Names - Implementation and Specification
-
-
- manner equivalent to the current HOSTS.TXT file. It doesn't
- replace the dynamic availability information from GGP or EGP.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Mockapetris [Page 71]
-
-
- RFC 883 November 1983
- Domain Names - Implementation and Specification
-
-
- REFERENCES and BIBLIOGRAPHY
-
- [1] E. Feinler, K. Harrenstien, Z. Su, and V. White, "DOD Internet
- Host Table Specification", RFC 810, Network Information Center,
- SRI International, March 1982.
-
- [2] J. Postel, "Computer Mail Meeting Notes", RFC 805,
- USC/Information Sciences Institute, February 1982.
-
- [3] Z. Su, and J. Postel, "The Domain Naming Convention for Internet
- User Applications", RFC 819, Network Information Center, SRI
- International, August 1982.
-
- [4] Z. Su, "A Distributed System for Internet Name Service",
- RFC 830, Network Information Center, SRI International,
- October 1982.
-
- [5] K. Harrenstien, and V. White, "NICNAME/WHOIS", RFC 812, Network
- Information Center, SRI International, March 1982.
-
- [6] M. Solomon, L. Landweber, and D. Neuhengen, "The CSNET Name
- Server", Computer Networks, vol 6, nr 3, July 1982.
-
- [7] K. Harrenstien, "NAME/FINGER", RFC 742, Network Information
- Center, SRI International, December 1977.
-
- [8] J. Postel, "Internet Name Server", IEN 116, USC/Information
- Sciences Institute, August 1979.
-
- [9] K. Harrenstien, V. White, and E. Feinler, "Hostnames Server",
- RFC 811, Network Information Center, SRI International,
- March 1982.
-
- [10] J. Postel, "Transmission Control Protocol", RFC 793,
- USC/Information Sciences Institute, September 1981.
-
- [11] J. Postel, "User Datagram Protocol", RFC 768, USC/Information
- Sciences Institute, August 1980.
-
- [12] J. Postel, "Simple Mail Transfer Protocol", RFC 821,
- USC/Information Sciences Institute, August 1980.
-
- [13] J. Reynolds, and J. Postel, "Assigned Numbers", RFC 870,
- USC/Information Sciences Institute, October 1983.
-
- [14] P. Mockapetris, "Domain names - Concepts and Facilities,"
- RFC 882, USC/Information Sciences Institute, November 1983.
-
-
-
-
- Mockapetris [Page 72]
-
-
- RFC 883 November 1983
- Domain Names - Implementation and Specification
-
-
- INDEX
-
- * usage........................................................37, 57
-
- A RDATA format.....................................................67
-
- byte order..........................................................6
-
- cache queue....................................................35, 42
- character case..................................................7, 31
- CLASS...........................................................9, 58
- completion.........................................................19
- compression........................................................31
- CNAME RR...........................................................60
-
- header format......................................................26
- HINFO RR...........................................................60
-
- include files......................................................43
- inverse queries....................................................17
-
- mailbox names......................................................53
- master files.......................................................43
- MB RR..............................................................61
- MD RR..............................................................61
- message format.....................................................13
- MF RR..............................................................62
- MG RR..............................................................62
- MINFO RR...........................................................63
- MR RR..............................................................63
-
- NULL RR............................................................64
- NS RR..............................................................64
-
- PTR RR.........................................................64, 69
-
- QCLASS.............................................................58
- QTYPE..............................................................57
- queries (standard).................................................15
-
- recursive service..................................................24
- RR format..........................................................59
-
- SOA RR.............................................................65
- Special domains....................................................68
-
- TYPE...............................................................57
-
- WKS type RR........................................................68
-
-
- Mockapetris [Page 73]
-