home *** CD-ROM | disk | FTP | other *** search
/ Unix System Administration Handbook 1997 October / usah_oct97.iso / rfc / 800s / rfc883.txt < prev    next >
Text File  |  1992-09-22  |  175KB  |  4,350 lines

  1.  
  2. Network Working Group                                     P. Mockapetris
  3. Request for Comments:  883                                           ISI
  4.                                                            November 1983
  5.  
  6.             DOMAIN NAMES - IMPLEMENTATION and SPECIFICATION
  7.  
  8.         +-----------------------------------------------------+
  9.         |                                                     |
  10.         | This memo discusses the implementation of domain    |
  11.         | name servers and resolvers, specifies the format of |
  12.         | transactions, and discusses the use of domain names |
  13.         | in the context of existing mail systems and other   |
  14.         | network software.                                   |
  15.         |                                                     |
  16.         | This memo assumes that the reader is familiar with  |
  17.         | RFC 882, "Domain Names - Concepts and Facilities"   |
  18.         | which discusses the basic principles of domain      |
  19.         | names and their use.                                |
  20.         |                                                     |
  21.         | The algorithms and internal data structures used in |
  22.         | this memo are offered as suggestions rather than    |
  23.         | requirements; implementers are free to design their |
  24.         | own structures so long as the same external         |
  25.         | behavior is achieved.                               |
  26.         |                                                     |
  27.         +-----------------------------------------------------+
  28.  
  29.    
  30.    
  31.  
  32.            +-----------------------------------------------+
  33.            |                                               |
  34.            |             *****  WARNING  *****             |
  35.            |                                               |
  36.            | This RFC contains format specifications which |
  37.            | are preliminary and are included for purposes |
  38.            | of explanation only.  Do not attempt to use   |
  39.            | this information for actual implementations.  |
  40.            |                                               |
  41.            +-----------------------------------------------+
  42.  
  43.  
  44.  
  45.  
  46.  
  47.  
  48.  
  49.  
  50.  
  51.  
  52.  
  53.  
  54.  
  55.  
  56.  
  57. Mockapetris                                                     [Page i]
  58.  
  59.  
  60. RFC 883                                                    November 1983
  61.                          Domain Names - Implementation and Specification
  62.  
  63.  
  64. TABLE OF CONTENTS
  65.    INTRODUCTION........................................................3
  66.       Overview.........................................................3
  67.       Implementation components........................................2
  68.       Conventions......................................................6
  69.       Design philosophy................................................8
  70.    NAME SERVER TRANSACTIONS...........................................11
  71.       Introduction....................................................11
  72.       Query and response transport....................................11
  73.       Overall message format..........................................13
  74.       The contents of standard queries and responses..................15
  75.       Standard query and response example.............................15
  76.       The contents of inverse queries and responses...................17
  77.       Inverse query and response example..............................18
  78.       Completion queries and responses................................19
  79.       Completion query and response example...........................22
  80.       Recursive Name Service..........................................24
  81.       Header section format...........................................26
  82.       Question section format.........................................29
  83.       Resource record format..........................................30
  84.       Domain name representation and compression......................31
  85.       Organization of the Shared database.............................33
  86.       Query processing................................................36
  87.       Inverse query processing........................................37
  88.       Completion query processing.....................................38
  89.    NAME SERVER MAINTENANCE............................................39
  90.       Introduction....................................................39
  91.       Conceptual model of maintenance operations......................39
  92.       Name server data structures and top level logic.................41
  93.       Name server file loading........................................43
  94.       Name server file loading example................................45
  95.       Name server remote zone transfer................................47
  96.    RESOLVER ALGORITHMS................................................50
  97.       Operations......................................................50
  98.    DOMAIN SUPPORT FOR MAIL............................................52
  99.       Introduction....................................................52
  100.       Agent binding...................................................53
  101.       Mailbox binding.................................................54
  102.    Appendix 1 - Domain Name Syntax Specification......................56
  103.    Appendix 2 - Field formats and encodings...........................57
  104.       TYPE values.....................................................57
  105.       QTYPE values....................................................57
  106.       CLASS values....................................................58
  107.       QCLASS values...................................................58
  108.       Standard resource record formats................................59
  109.    Appendix 3 - Internet specific field formats and operations........67
  110.    REFERENCES and BIBLIOGRAPHY........................................72
  111.    INDEX..............................................................73
  112.    
  113.  
  114.  
  115. Mockapetris                                                    [Page ii]
  116.  
  117.  
  118. RFC 883                                                    November 1983
  119.                          Domain Names - Implementation and Specification
  120.  
  121.  
  122. INTRODUCTION
  123.  
  124.    Overview
  125.  
  126.       The goal of domain names is to provide a mechanism for naming
  127.       resources in such a way that the names are usable in different
  128.       hosts, networks, protocol families, internets, and administrative
  129.       organizations.
  130.  
  131.       From the user's point of view, domain names are useful as
  132.       arguments to a local agent, called a resolver, which retrieves
  133.       information associated with the domain name.  Thus a user might
  134.       ask for the host address or mail information associated with a
  135.       particular domain name.  To enable the user to request a
  136.       particular type of information, an appropriate query type is
  137.       passed to the resolver with the domain name.  To the user, the
  138.       domain tree is a single information space.
  139.  
  140.       From the resolver's point of view, the database that makes up the
  141.       domain space is distributed among various name servers.  Different
  142.       parts of the domain space are stored in different name servers,
  143.       although a particular data item will usually be stored redundantly
  144.       in two or more name servers.  The resolver starts with knowledge
  145.       of at least one name server.  When the resolver processes a user
  146.       query it asks a known name server for the information; in return,
  147.       the resolver either receives the desired information or a referral
  148.       to another name server.  Using these referrals, resolvers learn
  149.       the identities and contents of other name servers.  Resolvers are
  150.       responsible for dealing with the distribution of the domain space
  151.       and dealing with the effects of name server failure by consulting
  152.       redundant databases in other servers.
  153.  
  154.       Name servers manage two kinds of data.  The first kind of data
  155.       held in sets called zones; each zone is the complete database for
  156.       a particular subtree of the domain space.  This data is called
  157.       authoritative.  A name server periodically checks to make sure
  158.       that its zones are up to date, and if not obtains a new copy of
  159.       updated zones from master files stored locally or in another name
  160.       server.  The second kind of data is cached data which was acquired
  161.       by a local resolver.  This data may be incomplete but improves the
  162.       performance of the retrieval process when non-local data is
  163.       repeatedly accessed.  Cached data is eventually discarded by a
  164.       timeout mechanism.
  165.  
  166.       This functional structure isolates the problems of user interface,
  167.       failure recovery, and distribution in the resolvers and isolates
  168.       the database update and refresh problems in the name servers.
  169.  
  170.  
  171.  
  172.  
  173. Mockapetris                                                     [Page 1]
  174.  
  175.  
  176. RFC 883                                                    November 1983
  177.                          Domain Names - Implementation and Specification
  178.  
  179.  
  180.    Implementation components
  181.  
  182.       A host can participate in the domain name system in a number of
  183.       ways, depending on whether the host runs programs that retrieve
  184.       information from the domain system, name servers that answer
  185.       queries from other hosts, or various combinations of both
  186.       functions.  The simplest, and perhaps most typical, configuration
  187.       is shown below:
  188.  
  189.                    Local Host                        |  Foreign   
  190.                                                      |            
  191.       +---------+               +----------+         |  +--------+
  192.       |         | user queries  |          |queries  |  |        |
  193.       |  User   |-------------->|          |---------|->|Foreign |
  194.       | Program |               | Resolver |         |  |  Name  |
  195.       |         |<--------------|          |<--------|--| Server |
  196.       |         | user responses|          |responses|  |        |
  197.       +---------+               +----------+         |  +--------+
  198.                                   |     A            |            
  199.                   cache additions |     | references |            
  200.                                   V     |            |            
  201.                                 +----------+         |            
  202.                                 | database |         |            
  203.                                 +----------+         |            
  204.  
  205.       User programs interact with the domain name space through
  206.       resolvers; the format of user queries and user responses is
  207.       specific to the host and its operating system.  User queries will
  208.       typically be operating system calls, and the resolver and its
  209.       database will be part of the host operating system.  Less capable
  210.       hosts may choose to implement the resolver as a subroutine to be
  211.       linked in with every program that needs its services.
  212.  
  213.       Resolvers answer user queries with information they acquire via
  214.       queries to foreign name servers, and may also cache or reference
  215.       domain information in the local database.
  216.  
  217.       Note that the resolver may have to make several queries to several
  218.       different foreign name servers to answer a particular user query,
  219.       and hence the resolution of a user query may involve several
  220.       network accesses and an arbitrary amount of time.  The queries to
  221.       foreign name servers and the corresponding responses have a
  222.       standard format described in this memo, and may be datagrams.
  223.  
  224.  
  225.  
  226.  
  227.  
  228.  
  229.  
  230.  
  231. Mockapetris                                                     [Page 2]
  232.  
  233.  
  234. RFC 883                                                    November 1983
  235.                          Domain Names - Implementation and Specification
  236.  
  237.  
  238.       Depending on its capabilities, a name server could be a stand
  239.       alone program on a dedicated machine or a process or processes on
  240.       a large timeshared host.  A simple configuration might be:
  241.  
  242.                    Local Host                        |  Foreign   
  243.                                                      |            
  244.         +---------+                                  |            
  245.        /         /|                                  |            
  246.       +---------+ |             +----------+         |  +--------+
  247.       |         | |             |          |responses|  |        |
  248.       |         | |             |   Name   |---------|->|Foreign |
  249.       |  Master |-------------->|  Server  |         |  |Resolver|
  250.       |  files  | |             |          |<--------|--|        |
  251.       |         |/              |          | queries |  +--------+
  252.       +---------+               +----------+         |            
  253.  
  254.       Here the name server acquires information about one or more zones
  255.       by reading master files from its local file system, and answers
  256.       queries about those zones that arrive from foreign resolvers.
  257.  
  258.       A more sophisticated name server might acquire zones from foreign
  259.       name servers as well as local master files.  This configuration is
  260.       shown below:
  261.  
  262.                    Local Host                        |  Foreign   
  263.                                                      |            
  264.         +---------+                                  |            
  265.        /         /|                                  |            
  266.       +---------+ |             +----------+         |  +--------+
  267.       |         | |             |          |responses|  |        |
  268.       |         | |             |   Name   |---------|->|Foreign |
  269.       |  Master |-------------->|  Server  |         |  |Resolver|
  270.       |  files  | |             |          |<--------|--|        |
  271.       |         |/              |          | queries |  +--------+
  272.       +---------+               +----------+         |            
  273.                                   A     |maintenance |  +--------+
  274.                                   |     \------------|->|        |
  275.                                   |      queries     |  |Foreign |
  276.                                   |                  |  |  Name  |
  277.                                   \------------------|--| Server |
  278.                                maintenance responses |  +--------+
  279.  
  280.       In this configuration, the name server periodically establishes a
  281.       virtual circuit to a foreign name server to acquire a copy of a
  282.       zone or to check that an existing copy has not changed.  The
  283.       messages sent for these maintenance activities follow the same
  284.       form as queries and responses, but the message sequences are
  285.       somewhat different.
  286.  
  287.  
  288.  
  289. Mockapetris                                                     [Page 3]
  290.  
  291.  
  292. RFC 883                                                    November 1983
  293.                          Domain Names - Implementation and Specification
  294.  
  295.  
  296.       The information flow in a host that supports all aspects of the
  297.       domain name system is shown below:
  298.  
  299.                    Local Host                        |  Foreign   
  300.                                                      |            
  301.       +---------+               +----------+         |  +--------+
  302.       |         | user queries  |          |queries  |  |        |
  303.       |  User   |-------------->|          |---------|->|Foreign |
  304.       | Program |               | Resolver |         |  |  Name  |
  305.       |         |<--------------|          |<--------|--| Server |
  306.       |         | user responses|          |responses|  |        |
  307.       +---------+               +----------+         |  +--------+
  308.                                   |     A            |            
  309.                   cache additions |     | references |            
  310.                                   V     |            |            
  311.                                 +----------+         |            
  312.                                 |  Shared  |         |            
  313.                                 | database |         |            
  314.                                 +----------+         |            
  315.                                   A     |            |            
  316.         +---------+     refreshes |     | references |            
  317.        /         /|               |     V            |            
  318.       +---------+ |             +----------+         |  +--------+
  319.       |         | |             |          |responses|  |        |
  320.       |         | |             |   Name   |---------|->|Foreign |
  321.       |  Master |-------------->|  Server  |         |  |Resolver|
  322.       |  files  | |             |          |<--------|--|        |
  323.       |         |/              |          | queries |  +--------+
  324.       +---------+               +----------+         |            
  325.                                   A     |maintenance |  +--------+
  326.                                   |     \------------|->|        |
  327.                                   |      queries     |  |Foreign |
  328.                                   |                  |  |  Name  |
  329.                                   \------------------|--| Server |
  330.                                maintenance responses |  +--------+
  331.  
  332.       The shared database holds domain space data for the local name
  333.       server and resolver.  The contents of the shared database will
  334.       typically be a mixture of authoritative data maintained by the
  335.       periodic refresh operations of the name server and cached data
  336.       from previous resolver requests.  The structure of the domain data
  337.       and the necessity for synchronization between name servers and
  338.       resolvers imply the general characteristics of this database, but
  339.       the actual format is up to the local implementer.  This memo
  340.       suggests a multiple tree format.
  341.  
  342.  
  343.  
  344.  
  345.  
  346.  
  347. Mockapetris                                                     [Page 4]
  348.  
  349.  
  350. RFC 883                                                    November 1983
  351.                          Domain Names - Implementation and Specification
  352.  
  353.  
  354.       This memo divides the implementation discussion into sections:
  355.  
  356.          NAME SERVER TRANSACTIONS, which discusses the formats for name
  357.          servers queries and the corresponding responses.
  358.  
  359.          NAME SERVER MAINTENANCE, which discusses strategies,
  360.          algorithms, and formats for maintaining the data residing in
  361.          name servers.  These services periodically refresh the local
  362.          copies of zones that originate in other hosts.
  363.  
  364.          RESOLVER ALGORITHMS, which discusses the internal structure of
  365.          resolvers.  This section also discusses data base sharing
  366.          between a name server and a resolver on the same host.
  367.  
  368.          DOMAIN SUPPORT FOR MAIL, which discusses the use of the domain
  369.          system to support mail transfer.
  370.  
  371.  
  372.  
  373.  
  374.  
  375.  
  376.  
  377.  
  378.  
  379.  
  380.  
  381.  
  382.  
  383.  
  384.  
  385.  
  386.  
  387.  
  388.  
  389.  
  390.  
  391.  
  392.  
  393.  
  394.  
  395.  
  396.  
  397.  
  398.  
  399.  
  400.  
  401.  
  402.  
  403.  
  404.  
  405. Mockapetris                                                     [Page 5]
  406.  
  407.  
  408. RFC 883                                                    November 1983
  409.                          Domain Names - Implementation and Specification
  410.  
  411.  
  412.    Conventions
  413.  
  414.       The domain system has several conventions dealing with low-level,
  415.       but fundamental, issues.  While the implementer is free to violate
  416.       these conventions WITHIN HIS OWN SYSTEM, he must observe these
  417.       conventions in ALL behavior observed from other hosts.
  418.  
  419.              ********** Data Transmission Order **********
  420.  
  421.       The order of transmission of the header and data described in this
  422.       document is resolved to the octet level.  Whenever a diagram shows
  423.       a group of octets, the order of transmission of those octets is
  424.       the normal order in which they are read in English.  For example,
  425.       in the following diagram the octets are transmitted in the order
  426.       they are numbered.
  427.  
  428.                                     
  429.                     0                   1           
  430.                     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 
  431.                    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  432.                    |       1       |       2       |
  433.                    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  434.                    |       3       |       4       |
  435.                    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  436.                    |       5       |       6       |
  437.                    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  438.  
  439.                       Transmission Order of Bytes
  440.  
  441.       Whenever an octet represents a numeric quantity the left most bit
  442.       in the diagram is the high order or most significant bit.  That
  443.       is, the bit labeled 0 is the most significant bit.  For example,
  444.       the following diagram represents the value 170 (decimal).
  445.  
  446.                                     
  447.                             0 1 2 3 4 5 6 7 
  448.                            +-+-+-+-+-+-+-+-+
  449.                            |1 0 1 0 1 0 1 0|
  450.                            +-+-+-+-+-+-+-+-+
  451.  
  452.                           Significance of Bits
  453.  
  454.       Similarly, whenever a multi-octet field represents a numeric
  455.       quantity the left most bit of the whole field is the most
  456.       significant bit.  When a multi-octet quantity is transmitted the
  457.       most significant octet is transmitted first.
  458.  
  459.  
  460.  
  461.  
  462.  
  463. Mockapetris                                                     [Page 6]
  464.  
  465.  
  466. RFC 883                                                    November 1983
  467.                          Domain Names - Implementation and Specification
  468.  
  469.  
  470.                   ********** Character Case **********
  471.  
  472.       All comparisons between character strings (e.g. labels, domain
  473.       names, etc.) are done in a case-insensitive manner.
  474.  
  475.       When data enters the domain system, its original case should be
  476.       preserved whenever possible.  In certain circumstances this cannot
  477.       be done.  For example, if two domain names x.y and X.Y are entered
  478.       into the domain database, they are interpreted as the same name,
  479.       and hence may have a single representation.  The basic rule is
  480.       that case can be discarded only when data is used to define
  481.       structure in a database, and two names are identical when compared
  482.       in a case insensitive manner.
  483.  
  484.       Loss of case sensitive data must be minimized.  Thus while data
  485.       for x.y and X.Y may both be stored under x.y, data for a.x and B.X
  486.       can be stored as a.x and B.x, but not A.x, A.X, b.x, or b.X.  In
  487.       general, this prevents the first component of a domain name from
  488.       loss of case information.
  489.  
  490.       Systems administrators who enter data into the domain database
  491.       should take care to represent the data they supply to the domain
  492.       system in a case-consistent manner if their system is
  493.       case-sensitive.  The data distribution system in the domain system
  494.       will ensure that consistent representations are preserved.
  495.  
  496.  
  497.  
  498.  
  499.  
  500.  
  501.  
  502.  
  503.  
  504.  
  505.  
  506.  
  507.  
  508.  
  509.  
  510.  
  511.  
  512.  
  513.  
  514.  
  515.  
  516.  
  517.  
  518.  
  519.  
  520.  
  521. Mockapetris                                                     [Page 7]
  522.  
  523.  
  524. RFC 883                                                    November 1983
  525.                          Domain Names - Implementation and Specification
  526.  
  527.  
  528.    Design philosophy
  529.  
  530.       The design presented in this memo attempts to provide a base which
  531.       will be suitable for several existing networks.  An equally
  532.       important goal is to provide these services within a framework
  533.       that is capable of adjustment to fit the evolution of services in
  534.       early clients as well as to accommodate new networks.
  535.  
  536.       Since it is impossible to predict the course of these
  537.       developments, the domain system attempts to provide for evolution
  538.       in the form of an extensible framework.  This section describes
  539.       the areas in which we expect to see immediate evolution.
  540.  
  541.       DEFINING THE DATABASE
  542.  
  543.       This memo defines methods for partitioning the database and data
  544.       for host names, host addresses, gateway information, and mail
  545.       support.  Experience with this system will provide guidance for
  546.       future additions.
  547.  
  548.       While the present system allows for many new RR types, classes,
  549.       etc., we feel that it is more important to get the basic services
  550.       in operation than to cover an exhaustive set of information.
  551.       Hence we have limited the data types to those we felt were
  552.       essential, and would caution designers to avoid implementations
  553.       which are based on the number of existing types and classes.
  554.       Extensibility in this area is very important.
  555.  
  556.       While the domain system provides techniques for partitioning the
  557.       database, policies for administrating the orderly connection of
  558.       separate domains and guidelines for constructing the data that
  559.       makes up a particular domain will be equally important to the
  560.       success of the system.   Unfortunately, we feel that experience
  561.       with prototype systems will be necessary before this question can
  562.       be properly addressed.  Thus while this memo has minimal
  563.       discussion of these issues, it is a critical area for development.
  564.  
  565.       TYING TOGETHER INTERNETS
  566.  
  567.       Although it is very difficult to characterize the types of
  568.       networks, protocols, and applications that will be clients of the
  569.       domain system, it is very obvious that some of these applications
  570.       will cross the boundaries of network and protocol.  At the very
  571.       least, mail is such a service.
  572.  
  573.       Attempts to unify two such systems must deal with two major
  574.       problems:
  575.  
  576.       1. Differing formats for environment sensitive data.  For example,
  577.  
  578.  
  579. Mockapetris                                                     [Page 8]
  580.  
  581.  
  582. RFC 883                                                    November 1983
  583.                          Domain Names - Implementation and Specification
  584.  
  585.  
  586.          network addresses vary in format, and it is unreasonable to
  587.          expect to enforce consistent conventions.
  588.  
  589.       2. Connectivity may require intermediaries.  For example, it is a
  590.          frequent occurence that mail is sent between hosts that share
  591.          no common protocol.
  592.  
  593.       The domain system acknowledges that these are very difficult
  594.       problems, and attempts to deal with both problems through its
  595.       CLASS mechanism:
  596.  
  597.       1. The CLASS field in RRs allows data to be tagged so that all
  598.          programs in the domain system can identify the format in use.
  599.  
  600.       2. The CLASS field allows the requestor to identify the format of
  601.          data which can be understood by the requestor.
  602.  
  603.       3. The CLASS field guides the search for the requested data.
  604.  
  605.       The last point is central to our approach.  When a query crosses
  606.       protocol boundaries, it must be guided though agents capable of
  607.       performing whatever translation is required.  For example, when a
  608.       mailer wants to identify the location of a mailbox in a portion of
  609.       the domain system that doesn't have a compatible protocol, the
  610.       query must be guided to a name server that can cross the boundary
  611.       itself or form one link in a chain that can span the differences.
  612.  
  613.       If query and response transport were the only problem, then this
  614.       sort of problem could be dealt with in the name servers
  615.       themselves.  However, the applications that will use domain
  616.       service have similar problems.  For example, mail may need to be
  617.       directed through mail gateways, and the characteristics of one of
  618.       the environments may not permit frequent connectivity between name
  619.       servers in all environments.
  620.  
  621.       These problems suggest that connectivity will be achieved through
  622.       a variety of measures:
  623.  
  624.          Translation name servers that act as relays between different
  625.          protocols.
  626.  
  627.          Translation application servers that translate application
  628.          level transactions.
  629.  
  630.          Default database entries that route traffic through application
  631.          level forwarders in ways that depend on the class of the
  632.          requestor.
  633.  
  634.       While this approach seems best given our current understanding of
  635.  
  636.  
  637. Mockapetris                                                     [Page 9]
  638.  
  639.  
  640. RFC 883                                                    November 1983
  641.                          Domain Names - Implementation and Specification
  642.  
  643.  
  644.       the problem, we realize that the approach of using resource data
  645.       that transcends class may be appropriate in future designs or
  646.       applications.  By not defining class to be directly related to
  647.       protocol, network, etc., we feel that such services could be added
  648.       by defining a new "universal" class, while the present use of
  649.       class will provide immediate service.
  650.  
  651.       This problem requires more thought and experience before solutions
  652.       can be discovered.  The concepts of CLASS, recursive servers and
  653.       other mechanisms are intended as tools for acquiring experience
  654.       and not as final solutions.
  655.  
  656.  
  657.  
  658.  
  659.  
  660.  
  661.  
  662.  
  663.  
  664.  
  665.  
  666.  
  667.  
  668.  
  669.  
  670.  
  671.  
  672.  
  673.  
  674.  
  675.  
  676.  
  677.  
  678.  
  679.  
  680.  
  681.  
  682.  
  683.  
  684.  
  685.  
  686.  
  687.  
  688.  
  689.  
  690.  
  691.  
  692.  
  693.  
  694.  
  695. Mockapetris                                                    [Page 10]
  696.  
  697.  
  698. RFC 883                                                    November 1983
  699.                          Domain Names - Implementation and Specification
  700.  
  701.  
  702. NAME SERVER TRANSACTIONS
  703.  
  704.    Introduction
  705.  
  706.       The primary purpose of name servers is to receive queries from
  707.       resolvers and return responses.  The overall model of this service
  708.       is that a program (typically a resolver) asks the name server
  709.       questions (queries) and gets responses that either answer the
  710.       question or refer the questioner to another name server.  Other
  711.       functions related to name server database maintenance use similar
  712.       procedures and formats and are discussed in a section later in
  713.       this memo.
  714.  
  715.       There are three kinds of queries presently defined:
  716.  
  717.          1. Standard queries that ask for a specified resource attached
  718.             to a given domain name.
  719.  
  720.          2. Inverse queries that specify a resource and ask for a domain
  721.             name that possesses that resource.
  722.  
  723.          3. Completion queries that specify a partial domain name and a
  724.             target domain and ask that the partial domain name be
  725.             completed with a domain name close to the target domain.
  726.  
  727.       This memo uses an unqualified reference to queries to refer to
  728.       either all queries or standard queries when the context is clear.
  729.  
  730.    Query and response transport
  731.  
  732.       Name servers and resolvers use a single message format for all
  733.       communications.  The message format consists of a variable-length
  734.       octet string which includes binary values.
  735.  
  736.       The messages used in the domain system are designed so that they
  737.       can be carried using either datagrams or virtual circuits.  To
  738.       accommodate the datagram style, all responses carry the query as
  739.       part of the response.
  740.  
  741.       While the specification allows datagrams to be used in any
  742.       context, some activities are ill suited to datagram use.  For
  743.       example, maintenance transactions and recursive queries typically
  744.       require the error control of virtual circuits.  Thus datagram use
  745.       should be restricted to simple queries.
  746.  
  747.       The domain system assumes that a datagram service provides:
  748.  
  749.          1. A non-reliable (i.e. best effort) method of transporting a
  750.             message of up to 512 octets.
  751.  
  752.  
  753. Mockapetris                                                    [Page 11]
  754.  
  755.  
  756. RFC 883                                                    November 1983
  757.                          Domain Names - Implementation and Specification
  758.  
  759.  
  760.             Hence datagram messages are limited to 512 octets.  If a
  761.             datagram message would exceed 512 octets, it is truncated
  762.             and a truncation flag is set in its header.
  763.  
  764.          2. A message size that gives the number of octets in the
  765.             datagram.
  766.  
  767.       The main implications for programs accessing name servers via
  768.       datagrams are:
  769.  
  770.          1. Datagrams should not be used for maintenance transactions
  771.             and recursive queries.
  772.  
  773.          2. Since datagrams may be lost, the originator of a query must
  774.             perform error recovery (such as retransmissions) as
  775.             appropriate.
  776.  
  777.          3. Since network or host delay may cause retransmission when a
  778.             datagram has not been lost, the originator of a query must
  779.             be ready to deal with duplicate responses.
  780.  
  781.       The domain system assumes that a virtual circuit service provides:
  782.  
  783.          1. A reliable method of transmitting a message of up to 65535
  784.             octets.
  785.  
  786.          2. A message size that gives the number of octets in the
  787.             message.
  788.  
  789.             If the virtual circuit service does not provide for message
  790.             boundary detection or limits transmission size to less than
  791.             65535 octets, then messages are prefaced with an unsigned 16
  792.             bit length field and broken up into separate transmissions
  793.             as required.  The length field is only prefaced on the first
  794.             message.  This technique is used for TCP virtual circuits.
  795.  
  796.          3. Multiple messages may be sent over a virtual circuit.
  797.  
  798.          4. A method for closing a virtual circuit.
  799.  
  800.          5. A method for detecting that the other party has requested
  801.             that the virtual circuit be closed.
  802.  
  803.       The main implications for programs accessing name servers via
  804.       virtual circuits are:
  805.  
  806.          1. Either end of a virtual circuit may initiate a close when
  807.             there is no activity in progress.  The other end should
  808.             comply.
  809.  
  810.  
  811. Mockapetris                                                    [Page 12]
  812.  
  813.  
  814. RFC 883                                                    November 1983
  815.                          Domain Names - Implementation and Specification
  816.  
  817.  
  818.             The decision to initiate a close is a matter of individual
  819.             site policy; some name servers may leave a virtual circuit
  820.             open for an indeterminate period following a query to allow
  821.             for subsequent queries; other name servers may choose to
  822.             initiate a close following the completion of the first query
  823.             on a virtual circuit.  Of course, name servers should not
  824.             close the virtual circuit in the midst of a multiple message
  825.             stream used for zone transfer.
  826.  
  827.          2. Since network delay may cause one end to erroneously believe
  828.             that no activity is in progress, a program which receives a
  829.             virtual circuit close while a query is in progress should
  830.             close the virtual circuit and resubmit the query on a new
  831.             virtual circuit.
  832.  
  833.       All messages may use a compression scheme to reduce the space
  834.       consumed by repetitive domain names.  The use of the compression
  835.       scheme is optional for the sender of a message, but all receivers
  836.       must be capable of decoding compressed domain names.
  837.  
  838.    Overall message format
  839.  
  840.       All messages sent by the domain system are divided into 5 sections
  841.       (some of which are empty in certain cases) shown below:
  842.  
  843.        +---------------------+                                   
  844.        |        Header       |                                   
  845.        +---------------------+                                   
  846.        |       Question      | the question for the name server  
  847.        +---------------------+                                   
  848.        |        Answer       | answering resource records (RRs)  
  849.        +---------------------+                                   
  850.        |      Authority      | RRs pointing toward an authority  
  851.        +---------------------+                                   
  852.        |      Additional     | RRs holding pertinent information 
  853.        +---------------------+                                   
  854.  
  855.       The header section is always present.  The header includes fields
  856.       that specify which of the remaining sections are present, and also
  857.       specify whether the message is a query, inverse query, completion
  858.       query, or response.
  859.  
  860.       The question section contains fields that describe a question to a
  861.       name server.  These fields are a query type (QTYPE), a query class
  862.       (QCLASS), and a query domain name (QNAME).
  863.  
  864.       The last three sections have the same format: a possibly empty
  865.       list of concatenated resource records (RRs).  The answer section
  866.       contains RRs that answer the question; the authority section
  867.  
  868.  
  869. Mockapetris                                                    [Page 13]
  870.  
  871.  
  872. RFC 883                                                    November 1983
  873.                          Domain Names - Implementation and Specification
  874.  
  875.  
  876.       contains RRs that point toward an authoritative name server; the
  877.       additional records section contains RRs which relate to the query,
  878.       but are not strictly answers for the question.
  879.  
  880.       The next two sections of this memo illustrate the use of these
  881.       message sections through examples; a detailed discussion of data
  882.       formats follows the examples.
  883.  
  884.  
  885.  
  886.  
  887.  
  888.  
  889.  
  890.  
  891.  
  892.  
  893.  
  894.  
  895.  
  896.  
  897.  
  898.  
  899.  
  900.  
  901.  
  902.  
  903.  
  904.  
  905.  
  906.  
  907.  
  908.  
  909.  
  910.  
  911.  
  912.  
  913.  
  914.  
  915.  
  916.  
  917.  
  918.  
  919.  
  920.  
  921.  
  922.  
  923.  
  924.  
  925.  
  926.  
  927. Mockapetris                                                    [Page 14]
  928.  
  929.  
  930. RFC 883                                                    November 1983
  931.                          Domain Names - Implementation and Specification
  932.  
  933.  
  934.    The contents of standard queries and responses
  935.  
  936.       When a name server processes a standard query, it first determines
  937.       whether it is an authority for the domain name specified in the
  938.       query.
  939.  
  940.       If the name server is an authority, it returns either:
  941.  
  942.          1. the specified resource information
  943.  
  944.          2. an indication that the specified name does not exist
  945.  
  946.          3. an indication that the requested resource information does
  947.             not exist
  948.  
  949.       If the name server is not an authority for the specified name, it
  950.       returns whatever relevant resource information it has along with
  951.       resource records that the requesting resolver can use to locate an
  952.       authoritative name server.
  953.  
  954.    Standard query and response example
  955.  
  956.       The overall structure of a query for retrieving information for
  957.       Internet mail for domain F.ISI.ARPA is shown below:
  958.  
  959.                           +-----------------------------------------+
  960.             Header        |          OPCODE=QUERY, ID=2304          |
  961.                           +-----------------------------------------+
  962.            Question       |QTYPE=MAILA, QCLASS=IN, QNAME=F.ISI.ARPA |
  963.                           +-----------------------------------------+
  964.             Answer        |                 <empty>                 |
  965.                           +-----------------------------------------+
  966.            Authority      |                 <empty>                 |
  967.                           +-----------------------------------------+
  968.           Additional      |                 <empty>                 |
  969.                           +-----------------------------------------+
  970.  
  971.       The header includes an opcode field that specifies that this
  972.       datagram is a query, and an ID field that will be used to
  973.       associate replies with the original query.  (Some additional
  974.       header fields have been omitted for clarity.)  The question
  975.       section specifies that the type of the query is for mail agent
  976.       information, that only ARPA Internet information is to be
  977.       considered, and that the domain name of interest is F.ISI.ARPA.
  978.       The remaining sections are empty, and would not use any octets in
  979.       a real query.
  980.  
  981.  
  982.  
  983.  
  984.  
  985. Mockapetris                                                    [Page 15]
  986.  
  987.  
  988. RFC 883                                                    November 1983
  989.                          Domain Names - Implementation and Specification
  990.  
  991.  
  992.       One possible response to this query might be:
  993.  
  994.                           +-----------------------------------------+
  995.             Header        |        OPCODE=RESPONSE, ID=2304         |
  996.                           +-----------------------------------------+
  997.            Question       |QTYPE=MAILA, QCLASS=IN, QNAME=F.ISI.ARPA |
  998.                           +-----------------------------------------+
  999.             Answer        |                 <empty>                 |
  1000.                           +-----------------------------------------+
  1001.            Authority      |          ARPA NS IN A.ISI.ARPA          |
  1002.                           |                 -------                 |
  1003.                           |          ARPA NS IN F.ISI.ARPA          |
  1004.                           +-----------------------------------------+
  1005.            Additional     |        F.ISI.ARPA A IN 10.2.0.52        |
  1006.                           |                 -------                 |
  1007.                           |        A.ISI.ARPA A IN 10.1.0.22        |
  1008.                           +-----------------------------------------+
  1009.  
  1010.       This type of response would be returned by a name server that was
  1011.       not an authority for the domain name F.ISI.ARPA.  The header field
  1012.       specifies that the datagram is a response to a query with an ID of
  1013.       2304.  The question section is copied from the question section in
  1014.       the query datagram.
  1015.  
  1016.       The answer section is empty because the name server did not have
  1017.       any information that would answer the query.  (Name servers may
  1018.       happen to have cached information even if they are not
  1019.       authoritative for the query.)
  1020.  
  1021.       The best that this name server could do was to pass back
  1022.       information for the domain ARPA.  The authority section specifies
  1023.       two name servers for the domain ARPA using the Internet family:
  1024.       A.ISI.ARPA and F.ISI.ARPA.  Note that it is merely a coincidence
  1025.       that F.ISI.ARPA is a name server for ARPA as well as the subject
  1026.       of the query.
  1027.  
  1028.       In this case, the name server included in the additional records
  1029.       section the Internet addresses for the two hosts specified in the
  1030.       authority section.  Such additional data is almost always
  1031.       available.
  1032.  
  1033.       Given this response, the process that originally sent the query
  1034.       might resend the query to the name server on A.ISI.ARPA, with a
  1035.       new ID of 2305.
  1036.  
  1037.  
  1038.  
  1039.  
  1040.  
  1041.  
  1042.  
  1043. Mockapetris                                                    [Page 16]
  1044.  
  1045.  
  1046. RFC 883                                                    November 1983
  1047.                          Domain Names - Implementation and Specification
  1048.  
  1049.  
  1050.       The name server on A.ISI.ARPA might return a response:
  1051.  
  1052.                           +-----------------------------------------+
  1053.             Header        |        OPCODE=RESPONSE, ID=2305         |
  1054.                           +-----------------------------------------+
  1055.            Question       |QTYPE=MAILA, QCLASS=IN, QNAME=F.ISI.ARPA |
  1056.                           +-----------------------------------------+
  1057.             Answer        |       F.ISI.ARPA MD IN F.ISI.ARPA       |
  1058.                           |                 -------                 |
  1059.                           |       F.ISI.ARPA MF IN A.ISI.ARPA       |
  1060.                           +-----------------------------------------+
  1061.            Authority      |                 <empty>                 |
  1062.                           +-----------------------------------------+
  1063.           Additional      |        F.ISI.ARPA A IN 10.2.0.52        |
  1064.                           |                 -------                 |
  1065.                           |        A.ISI.ARPA A IN 10.1.0.22        |
  1066.                           +-----------------------------------------+
  1067.  
  1068.       This query was directed to an authoritative name server, and hence
  1069.       the response includes an answer but no authority records.  In this
  1070.       case, the answer section specifies that mail for F.ISI.ARPA can
  1071.       either be delivered to F.ISI.ARPA or forwarded to A.ISI.ARPA.  The
  1072.       additional records section specifies the Internet addresses of
  1073.       these hosts.
  1074.  
  1075.    The contents of inverse queries and responses
  1076.  
  1077.       Inverse queries reverse the mappings performed by standard query
  1078.       operations; while a standard query maps a domain name to a
  1079.       resource, an inverse query maps a resource to a domain name.  For
  1080.       example, a standard query might bind a domain name to a host
  1081.       address; the corresponding inverse query binds the host address to
  1082.       a domain name.
  1083.  
  1084.       Inverse query mappings are not guaranteed to be unique or complete
  1085.       because the domain system does not have any internal mechanism for
  1086.       determining authority from resource records that parallels the
  1087.       capability for determining authority as a function of domain name.
  1088.       In general, resolvers will be configured to direct inverse queries
  1089.       to a name server which is known to have the desired information.
  1090.  
  1091.       Name servers are not required to support any form of inverse
  1092.       queries; it is anticipated that most name servers will support
  1093.       address to domain name conversions, but no other inverse mappings.
  1094.       If a name server receives an inverse query that it does not
  1095.       support, it returns an error response with the "Not Implemented"
  1096.       error set in the header.  While inverse query support is optional,
  1097.       all name servers must be at least able to return the error
  1098.       response.
  1099.  
  1100.  
  1101. Mockapetris                                                    [Page 17]
  1102.  
  1103.  
  1104. RFC 883                                                    November 1983
  1105.                          Domain Names - Implementation and Specification
  1106.  
  1107.  
  1108.       When a name server processes an inverse query, it either returns:
  1109.  
  1110.          1. zero, one, or multiple domain names for the specified
  1111.          resource
  1112.  
  1113.          2. an error code indicating that the name server doesn't
  1114.             support inverse mapping of the specified resource type.
  1115.  
  1116.    Inverse query and response example
  1117.  
  1118.       The overall structure of an inverse query for retrieving the
  1119.       domain name that corresponds to Internet address 10.2.0.52 is
  1120.       shown below:
  1121.  
  1122.                           +-----------------------------------------+
  1123.             Header        |          OPCODE=IQUERY, ID=997          |
  1124.                           +-----------------------------------------+
  1125.            Question       |                 <empty>                 |
  1126.                           +-----------------------------------------+
  1127.             Answer        |        <anyname> A IN 10.2.0.52         |
  1128.                           +-----------------------------------------+
  1129.            Authority      |                 <empty>                 |
  1130.                           +-----------------------------------------+
  1131.           Additional      |                 <empty>                 |
  1132.                           +-----------------------------------------+
  1133.  
  1134.       This query asks for a question whose answer is the Internet style
  1135.       address 10.2.0.52.  Since the owner name is not known, any domain
  1136.       name can be used as a placeholder (and is ignored).  The response
  1137.       to this query might be:
  1138.  
  1139.                           +-----------------------------------------+
  1140.             Header        |         OPCODE=RESPONSE, ID=997         |
  1141.                           +-----------------------------------------+
  1142.            Question       |   QTYPE=A, QCLASS=IN, QNAME=F.ISI.ARPA  |
  1143.                           +-----------------------------------------+
  1144.             Answer        |       F.ISI.ARPA A IN 10.2.0.52         |
  1145.                           +-----------------------------------------+
  1146.            Authority      |                 <empty>                 |
  1147.                           +-----------------------------------------+
  1148.           Additional      |                 <empty>                 |
  1149.                           +-----------------------------------------+
  1150.  
  1151.       Note that the QTYPE in a response to an inverse query is the same
  1152.       as the TYPE field in the answer section of the inverse query.
  1153.       Responses to inverse queries may contain multiple questions when
  1154.       the inverse is not unique.
  1155.  
  1156.  
  1157.  
  1158.  
  1159. Mockapetris                                                    [Page 18]
  1160.  
  1161.  
  1162. RFC 883                                                    November 1983
  1163.                          Domain Names - Implementation and Specification
  1164.  
  1165.  
  1166.    Completion queries and responses
  1167.  
  1168.       Completion queries ask a name server to complete a partial domain
  1169.       name and return a set of RRs whose domain names meet a specified
  1170.       set of criteria for "closeness" to the partial input.  This type
  1171.       of query can provide a local shorthand for domain names or command
  1172.       completion similar to that in TOPS-20.
  1173.  
  1174.       Implementation of completion query processing is optional in a
  1175.       name server.  However, a name server must return a "Not
  1176.       Implemented" (NI) error response if it does not support
  1177.       completion.
  1178.  
  1179.       The arguments in a completion query specify:
  1180.  
  1181.       1. A type in QTYPE that specifies the type of the desired name.
  1182.          The type is used to restrict the type of RRs which will match
  1183.          the partial input so that completion queries can be used for
  1184.          mailbox names, host names, or any other type of RR in the
  1185.          domain system without concern for matches to the wrong type of
  1186.          resource.
  1187.  
  1188.       2. A class in QCLASS which specifies the desired class of the RR.
  1189.  
  1190.       3. A partial domain name that gives the input to be completed.
  1191.          All returned RRs will begin with the partial string.  The
  1192.          search process first looks for names which qualify under the
  1193.          assumption that the partial string ends with a full label
  1194.          ("whole label match"); if this search fails, the search
  1195.          continues under the assumption that the last label in the
  1196.          partial sting may be an incomplete label ("partial label
  1197.          match").  For example, if the partial string "Smith" was used
  1198.          in a mailbox completion, it would match Smith@ISI.ARPA in
  1199.          preference to Smithsonian@ISI.ARPA.
  1200.  
  1201.          The partial name is supplied by the user through the user
  1202.          program that is using domain services.  For example, if the
  1203.          user program is a mail handler, the string might be "Mockap"
  1204.          which the user intends as a shorthand for the mailbox
  1205.          Mockapetris@ISI.ARPA; if the user program is TELNET, the user
  1206.          might specify "F" for F.ISI.ARPA.
  1207.  
  1208.          In order to make parsing of messages consistent, the partial
  1209.          name is supplied in domain name format (i.e. a sequence of
  1210.          labels terminated with a zero length octet).  However, the
  1211.          trailing root label is ignored during matching.
  1212.  
  1213.       4. A target domain name which specifies the domain which is to be
  1214.          examined for matches.  This name is specified in the additional
  1215.  
  1216.  
  1217. Mockapetris                                                    [Page 19]
  1218.  
  1219.  
  1220. RFC 883                                                    November 1983
  1221.                          Domain Names - Implementation and Specification
  1222.  
  1223.  
  1224.          section using a NULL RR.  All returned names will end with the
  1225.          target name.
  1226.  
  1227.          The user program which constructs the query uses the target
  1228.          name to restrict the search.  For example, user programs
  1229.          running at ISI might restrict completion to names that end in
  1230.          ISI.ARPA; user programs running at MIT might restrict
  1231.          completion to the domain MIT.ARPA.
  1232.  
  1233.          The target domain name is also used by the resolver to
  1234.          determine the name server which should be used to process the
  1235.          query.  In general, queries should be directed to a name server
  1236.          that is authoritative for the target domain name.  User
  1237.          programs which wish to provide completion for a more than one
  1238.          target can issue multiple completion queries, each directed at
  1239.          a different target.  Selection of the target name and the
  1240.          number of searches will depend on the goals of the user
  1241.          program.
  1242.  
  1243.       5. An opcode for the query.  The two types of completion queries
  1244.          are "Completion Query - Multiple", or CQUERYM, which asks for
  1245.          all RRs which could complete the specified input, and
  1246.          "Completion Query - Unique", or CQUERYU, which asks for the
  1247.          "best" completion.
  1248.  
  1249.          CQUERYM is used by user programs which want to know if
  1250.          ambiguities exist or wants to do its own determinations as to
  1251.          the best choice of the available candidates.
  1252.  
  1253.          CQUERYU is used by user programs which either do not wish to
  1254.          deal with multiple choices or are willing to use the closeness
  1255.          criteria used by CQUERYU to select the best match.
  1256.  
  1257.       When a name server receives either completion query, it first
  1258.       looks for RRs that begin (on the left) with the same labels as are
  1259.       found in QNAME (with the root deleted), and which match the QTYPE
  1260.       and QCLASS.  This search is called "whole label" matching.  If one
  1261.       or more hits are found the name server either returns all of the
  1262.       hits (CQUERYM) or uses the closeness criteria described below to
  1263.       eliminate all but one of the matches (CQUERYU).
  1264.  
  1265.       If the whole label match fails to find any candidates, then the
  1266.       name server assumes that the rightmost label of QNAME (after root
  1267.       deletion) is not a complete label, and looks for candidates that
  1268.       would match if characters were added (on the right) to the
  1269.       rightmost label of QNAME.  If one or more hits are found the name
  1270.       server either returns all of the hits (CQUERYM) or uses the
  1271.       closeness criteria described below to eliminate all but one of the
  1272.       matches (CQUERYU).
  1273.  
  1274.  
  1275. Mockapetris                                                    [Page 20]
  1276.  
  1277.  
  1278. RFC 883                                                    November 1983
  1279.                          Domain Names - Implementation and Specification
  1280.  
  1281.  
  1282.       If a CQUERYU query encounters multiple hits, it uses the following
  1283.       sequence of rules to discard multiple hits:
  1284.  
  1285.       1. Discard candidates that have more labels than others.  Since
  1286.          all candidates start with the partial name and end with the
  1287.          target name, this means that we select those entries that
  1288.          require the fewest number of added labels.  For example, a host
  1289.          search with a target of "ISI.ARPA" and a partial name of "A"
  1290.          will select A.ISI.ARPA in preference to A.IBM-PCS.ISI.ARPA.
  1291.  
  1292.       2. If partial label matching was used, discard those labels which
  1293.          required more characters to be added.  For example, a mailbox
  1294.          search for partial "X" and target "ISI.ARPA" would prefer
  1295.          XX@ISI.ARPA to XYZZY@ISI.ARPA.
  1296.  
  1297.       If multiple hits are still present, return all hits.
  1298.  
  1299.       Completion query mappings are not guaranteed to be unique or
  1300.       complete because the domain system does not have any internal
  1301.       mechanism for determining authority from a partial domain name
  1302.       that parallels the capability for determining authority as a
  1303.       function of a complete domain name.  In general, resolvers will be
  1304.       configured to direct completion queries to a name server which is
  1305.       known to have the desired information.
  1306.  
  1307.       When a name server processes a completion query, it either
  1308.       returns:
  1309.  
  1310.          1. An answer giving zero, one, or more possible completions.
  1311.  
  1312.          2. an error response with Not Implemented (NI) set.
  1313.  
  1314.  
  1315.  
  1316.  
  1317.  
  1318.  
  1319.  
  1320.  
  1321.  
  1322.  
  1323.  
  1324.  
  1325.  
  1326.  
  1327.  
  1328.  
  1329.  
  1330.  
  1331.  
  1332.  
  1333. Mockapetris                                                    [Page 21]
  1334.  
  1335.  
  1336. RFC 883                                                    November 1983
  1337.                          Domain Names - Implementation and Specification
  1338.  
  1339.  
  1340.    Completion query and response example
  1341.  
  1342.       Suppose that the completion service was used by a TELNET program
  1343.       to allow a user to specify a partial domain name for the desired
  1344.       host.  Thus a user might ask to be connected to "B".  Assuming
  1345.       that the query originated from an ISI machine, the query might
  1346.       look like:
  1347.  
  1348.                           +-----------------------------------------+
  1349.             Header        |         OPCODE=CQUERYU, ID=409          |
  1350.                           +-----------------------------------------+
  1351.            Question       |       QTYPE=A, QCLASS=IN, QNAME=B       |
  1352.                           +-----------------------------------------+
  1353.             Answer        |                 <empty>                 |
  1354.                           +-----------------------------------------+
  1355.            Authority      |                 <empty>                 |
  1356.                           +-----------------------------------------+
  1357.           Additional      |             ISI.ARPA NULL IN            |
  1358.                           +-----------------------------------------+
  1359.  
  1360.       The partial name in the query is "B", the mappings of interest are
  1361.       ARPA Internet address records, and the target domain is ISI.ARPA.
  1362.       Note that NULL is a special type of NULL resource record that is
  1363.       used as a placeholder and has no significance; NULL RRs obey the
  1364.       standard format but have no other function.
  1365.  
  1366.       The response to this completion query might be:
  1367.  
  1368.                           +-----------------------------------------+
  1369.             Header        |         OPCODE=RESPONSE, ID=409         |
  1370.                           +-----------------------------------------+
  1371.            Question       |       QTYPE=A, QCLASS=IN, QNAME=B       |
  1372.                           +-----------------------------------------+
  1373.             Answer        |        B.ISI.ARPA A IN 10.3.0.52        |
  1374.                           +-----------------------------------------+
  1375.            Authority      |                 <empty>                 |
  1376.                           +-----------------------------------------+
  1377.           Additional      |             ISI.ARPA NULL IN            |
  1378.                           +-----------------------------------------+
  1379.  
  1380.       This response has completed B to mean B.ISI.ARPA.
  1381.  
  1382.  
  1383.  
  1384.  
  1385.  
  1386.  
  1387.  
  1388.  
  1389.  
  1390.  
  1391. Mockapetris                                                    [Page 22]
  1392.  
  1393.  
  1394. RFC 883                                                    November 1983
  1395.                          Domain Names - Implementation and Specification
  1396.  
  1397.  
  1398.       Another query might be:
  1399.  
  1400.                           +-----------------------------------------+
  1401.             Header        |         OPCODE=CQUERYM, ID=410          |
  1402.                           +-----------------------------------------+
  1403.            Question       |       QTYPE=A, QCLASS=IN, QNAME=B       |
  1404.                           +-----------------------------------------+
  1405.             Answer        |                 <empty>                 |
  1406.                           +-----------------------------------------+
  1407.            Authority      |                 <empty>                 |
  1408.                           +-----------------------------------------+
  1409.           Additional      |               ARPA NULL IN              |
  1410.                           +-----------------------------------------+
  1411.  
  1412.       This query is similar to the previous one, but specifies a target
  1413.       of ARPA rather than ISI.ARPA.  It also allows multiple matches.
  1414.       In this case the same name server might return:
  1415.  
  1416.                           +-----------------------------------------+
  1417.             Header        |         OPCODE=RESPONSE, ID=410         |
  1418.                           +-----------------------------------------+
  1419.            Question       |       QTYPE=A, QCLASS=IN, QNAME=B       |
  1420.                           +-----------------------------------------+
  1421.             Answer        |        B.ISI.ARPA A IN 10.3.0.52        |
  1422.                           |                    -                    |
  1423.                           |        B.BBN.ARPA A IN 10.0.0.49        |
  1424.                           |                    -                    |
  1425.                           |        B.BBNCC.ARPA A IN 8.1.0.2        |
  1426.                           +-----------------------------------------+
  1427.            Authority      |                 <empty>                 |
  1428.                           +-----------------------------------------+
  1429.           Additional      |               ARPA NULL IN              |
  1430.                           +-----------------------------------------+
  1431.  
  1432.       This response contains three answers, B.ISI.ARPA, B.BBN.ARPA, and
  1433.       B.BBNCC.ARPA.
  1434.  
  1435.  
  1436.  
  1437.  
  1438.  
  1439.  
  1440.  
  1441.  
  1442.  
  1443.  
  1444.  
  1445.  
  1446.  
  1447.  
  1448.  
  1449. Mockapetris                                                    [Page 23]
  1450.  
  1451.  
  1452. RFC 883                                                    November 1983
  1453.                          Domain Names - Implementation and Specification
  1454.  
  1455.  
  1456.    Recursive Name Service
  1457.  
  1458.       Recursive service is an optional feature of name servers.
  1459.  
  1460.       When a name server receives a query regarding a part of the name
  1461.       space which is not in one of the name server's zones, the standard
  1462.       response is a message that refers the requestor to another name
  1463.       server.  By iterating on these referrals, the requestor eventually
  1464.       is directed to a name server that has the required information.
  1465.  
  1466.       Name servers may also implement recursive service.  In this type
  1467.       of service, a name server either answers immediately based on
  1468.       local zone information, or pursues the query for the requestor and
  1469.       returns the eventual result back to the original requestor.
  1470.  
  1471.       A name server that supports recursive service sets the Recursion
  1472.       Available (RA) bit in all responses it generates.  A requestor
  1473.       asks for recursive service by setting the Recursion Desired (RD)
  1474.       bit in queries.  In some situations where recursive service is the
  1475.       only path to the desired information (see below), the name server
  1476.       may go recursive even if RD is zero.
  1477.  
  1478.       If a query requests recursion (RD set), but the name server does
  1479.       not support recursion, and the query needs recursive service for
  1480.       an answer, the name server returns a "Not Implemented" (NI) error
  1481.       code.  If the query can be answered without recursion since the
  1482.       name server is authoritative for the query, it ignores the RD bit.
  1483.  
  1484.       Because of the difficulty in selecting appropriate timeouts and
  1485.       error handling, recursive service is best suited to virtual
  1486.       circuits, although it is allowed for datagrams.
  1487.  
  1488.       Recursive service is valuable in several special situations:
  1489.  
  1490.          In a system of small personal computers clustered around one or
  1491.          more large hosts supporting name servers, the recursive
  1492.          approach minimizes the amount of code in the resolvers in the
  1493.          personal computers.  Such a design moves complexity out of the
  1494.          resolver into the name server, and may be appropriate for such
  1495.          systems.
  1496.  
  1497.          Name servers on the boundaries of different networks may wish
  1498.          to offer recursive service to create connectivity between
  1499.          different networks.  Such name servers may wish to provide
  1500.          recursive service regardless of the setting of RD.
  1501.  
  1502.          Name servers that translate between domain name service and
  1503.          some other name service may wish to adopt the recursive style.
  1504.          Implicit recursion may be valuable here as well.
  1505.  
  1506.  
  1507. Mockapetris                                                    [Page 24]
  1508.  
  1509.  
  1510. RFC 883                                                    November 1983
  1511.                          Domain Names - Implementation and Specification
  1512.  
  1513.  
  1514.       These concepts are still under development.
  1515.  
  1516.  
  1517.  
  1518.  
  1519.  
  1520.  
  1521.  
  1522.  
  1523.  
  1524.  
  1525.  
  1526.  
  1527.  
  1528.  
  1529.  
  1530.  
  1531.  
  1532.  
  1533.  
  1534.  
  1535.  
  1536.  
  1537.  
  1538.  
  1539.  
  1540.  
  1541.  
  1542.  
  1543.  
  1544.  
  1545.  
  1546.  
  1547.  
  1548.  
  1549.  
  1550.  
  1551.  
  1552.  
  1553.  
  1554.  
  1555.  
  1556.  
  1557.  
  1558.  
  1559.  
  1560.  
  1561.  
  1562.  
  1563.  
  1564.  
  1565. Mockapetris                                                    [Page 25]
  1566.  
  1567.  
  1568. RFC 883                                                    November 1983
  1569.                          Domain Names - Implementation and Specification
  1570.  
  1571.  
  1572.    Header section format
  1573.  
  1574.            +-----------------------------------------------+
  1575.            |                                               |
  1576.            |             *****  WARNING  *****             |
  1577.            |                                               |
  1578.            |  The following format is preliminary and is   |
  1579.            | included for purposes of explanation only. In |
  1580.            | particular, the size and position of the      |
  1581.            | OPCODE, RCODE fields and the number and       |
  1582.            | meaning of the single bit fields are subject  |
  1583.            | to change.                                    |
  1584.            |                                               |
  1585.            +-----------------------------------------------+
  1586.  
  1587.       The header contains the following fields:
  1588.  
  1589.                                            1  1  1  1  1  1 
  1590.              0  1  2  3  4  5  6  7  8  9  0  1  2  3  4  5 
  1591.            +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  1592.            |                      ID                       |
  1593.            +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  1594.            |QR|   Opcode  |AA|TC|RD|RA|        |   RCODE   |
  1595.            +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  1596.            |                    QDCOUNT                    |
  1597.            +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  1598.            |                    ANCOUNT                    |
  1599.            +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  1600.            |                    NSCOUNT                    |
  1601.            +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  1602.            |                    ARCOUNT                    |
  1603.            +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  1604.  
  1605.       where:
  1606.  
  1607.       ID      - A 16 bit identifier assigned by the program that
  1608.                 generates any kind of query.  This identifier is copied
  1609.                 into all replies and can be used by the requestor to
  1610.                 relate replies to outstanding questions.
  1611.  
  1612.       QR      - A one bit field that specifies whether this message is a
  1613.                 query (0), or a response (1).
  1614.  
  1615.       OPCODE  - A four bit field that specifies kind of query in this
  1616.                 message.  This value is set by the originator of a query
  1617.                 and copied into the response.  The values are:
  1618.  
  1619.                         0   a standard query (QUERY)
  1620.  
  1621.  
  1622.  
  1623. Mockapetris                                                    [Page 26]
  1624.  
  1625.  
  1626. RFC 883                                                    November 1983
  1627.                          Domain Names - Implementation and Specification
  1628.  
  1629.  
  1630.                         1   an inverse query (IQUERY)
  1631.  
  1632.                         2   an completion query allowing multiple
  1633.                             answers (CQUERYM)
  1634.  
  1635.                         2   an completion query requesting a single
  1636.                             answer (CQUERYU)
  1637.  
  1638.                         4-15 reserved for future use
  1639.  
  1640.       AA      - Authoritative Answer - this bit is valid in responses,
  1641.                          and specifies that the responding name server
  1642.                          is an authority for the domain name in the
  1643.                          corresponding query.
  1644.  
  1645.       TC      - TrunCation - specifies that this message was truncated
  1646.                          due to length greater than 512 characters.
  1647.                          This bit is valid in datagram messages but not
  1648.                          in messages sent over virtual circuits.
  1649.  
  1650.       RD      - Recursion Desired - this bit may be set in a query and
  1651.                          is copied into the response.  If RD is set, it
  1652.                          directs the name server to pursue the query
  1653.                          recursively.  Recursive query support is
  1654.                          optional.
  1655.  
  1656.       RA      - Recursion Available - this be is set or cleared in a
  1657.                          response, and denotes whether recursive query
  1658.                          support is available in the name server.
  1659.  
  1660.       RCODE   - Response code - this 4 bit field is set as part of
  1661.                          responses.  The values have the following
  1662.                          interpretation:
  1663.  
  1664.                         0    No error condition
  1665.  
  1666.                         1    Format error - The name server was unable
  1667.                              to interpret the query.
  1668.  
  1669.                         2    Server failure - The name server was unable
  1670.                              to process this query due to a problem with
  1671.                              the name server.
  1672.  
  1673.                         3    Name Error - Meaningful only for responses
  1674.                              from an authoritative name server, this
  1675.                              code signifies that the domain name
  1676.                              referenced in the query does not exist.
  1677.  
  1678.  
  1679.  
  1680.  
  1681. Mockapetris                                                    [Page 27]
  1682.  
  1683.  
  1684. RFC 883                                                    November 1983
  1685.                          Domain Names - Implementation and Specification
  1686.  
  1687.  
  1688.                         4    Not Implemented - The name server does not
  1689.                              support the requested kind of query.
  1690.  
  1691.                         5    Refused - The name server refuses to
  1692.                              perform the specified operation for policy
  1693.                              reasons.  For example, a name server may
  1694.                              not wish to provide the information to the
  1695.                              particular requestor, or a name server may
  1696.                              not wish to perform a particular operation
  1697.                              (e.g. zone transfer) for particular data.
  1698.  
  1699.                         6-15 Reserved for future use.
  1700.  
  1701.       QDCOUNT - an unsigned 16 bit integer specifying the number of
  1702.                 entries in the question section.
  1703.  
  1704.       ANCOUNT - an unsigned 16 bit integer specifying the number of
  1705.                 resource records in the answer section.
  1706.  
  1707.       NSCOUNT - an unsigned 16 bit integer specifying the number of name
  1708.                 server resource records in the authority records
  1709.                 section.
  1710.  
  1711.       ARCOUNT - an unsigned 16 bit integer specifying the number of
  1712.                 resource records in the additional records section.
  1713.  
  1714.  
  1715.  
  1716.  
  1717.  
  1718.  
  1719.  
  1720.  
  1721.  
  1722.  
  1723.  
  1724.  
  1725.  
  1726.  
  1727.  
  1728.  
  1729.  
  1730.  
  1731.  
  1732.  
  1733.  
  1734.  
  1735.  
  1736.  
  1737.  
  1738.  
  1739. Mockapetris                                                    [Page 28]
  1740.  
  1741.  
  1742. RFC 883                                                    November 1983
  1743.                          Domain Names - Implementation and Specification
  1744.  
  1745.  
  1746.    Question section format
  1747.  
  1748.       The question section is used in all kinds of queries other than
  1749.       inverse queries.  In responses to inverse queries, this section
  1750.       may contain multiple entries; for all other responses it contains
  1751.       a single entry.  Each entry has the following format:
  1752.  
  1753.                                            1  1  1  1  1  1 
  1754.              0  1  2  3  4  5  6  7  8  9  0  1  2  3  4  5 
  1755.            +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  1756.            |                                               |
  1757.            /                     QNAME                     /
  1758.            /                                               /
  1759.            +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  1760.            |                     QTYPE                     |
  1761.            +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  1762.            |                     QCLASS                    |
  1763.            +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  1764.  
  1765.       where:
  1766.  
  1767.       QNAME -   a variable number of octets that specify a domain name.
  1768.                 This field uses the compressed domain name format
  1769.                 described in the next section of this memo.  This field
  1770.                 can be used to derive a text string for the domain name.
  1771.                 Note that this field may be an odd number of octets; no
  1772.                 padding is used.
  1773.  
  1774.       QTYPE -   a two octet code which specifies the type of the query.
  1775.                 The values for this field include all codes valid for a
  1776.                 TYPE field, together with some more general codes which
  1777.                 can match more than one type of RR.  For example, QTYPE
  1778.                 might be A and only match type A RRs, or might be MAILA,
  1779.                 which matches MF and MD type RRs.  The values for this
  1780.                 field are listed in Appendix 2.
  1781.  
  1782.       QCLASS -  a two octet code that specifies the class of the query.
  1783.                 For example, the QCLASS field is IN for the ARPA
  1784.                 Internet, CS for the CSNET, etc.  The numerical values
  1785.                 are defined in Appendix 2.
  1786.  
  1787.  
  1788.  
  1789.  
  1790.  
  1791.  
  1792.  
  1793.  
  1794.  
  1795.  
  1796.  
  1797. Mockapetris                                                    [Page 29]
  1798.  
  1799.  
  1800. RFC 883                                                    November 1983
  1801.                          Domain Names - Implementation and Specification
  1802.  
  1803.  
  1804.    Resource record format
  1805.  
  1806.       The answer, authority, and additional sections all share the same
  1807.       format: a variable number of resource records, where the number of
  1808.       records is specified in the corresponding count field in the
  1809.       header.  Each resource record has the following format:
  1810.  
  1811.                                            1  1  1  1  1  1 
  1812.              0  1  2  3  4  5  6  7  8  9  0  1  2  3  4  5 
  1813.            +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  1814.            |                                               |
  1815.            /                                               /
  1816.            /                      NAME                     /
  1817.            |                                               |
  1818.            +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  1819.            |                      TYPE                     |
  1820.            +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  1821.            |                     CLASS                     |
  1822.            +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  1823.            |                      TTL                      |
  1824.            +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  1825.            |                   RDLENGTH                    |
  1826.            +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--|
  1827.            /                     RDATA                     /
  1828.            /                                               /
  1829.            +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  1830.  
  1831.       where:
  1832.  
  1833.       NAME    - a compressed domain name to which this resource record
  1834.                 pertains.
  1835.  
  1836.       TYPE    - two octets containing one of the RR type codes defined
  1837.                 in Appendix 2.  This field specifies the meaning of the
  1838.                 data in the RDATA field.
  1839.  
  1840.       CLASS   - two octets which specify the class of the data in the
  1841.                 RDATA field.
  1842.  
  1843.       TTL     - a 16 bit unsigned integer that specifies the time
  1844.                 interval (in seconds) that the resource record may be
  1845.                 cached before it should be discarded.  Zero values are
  1846.                 interpreted to mean that the RR can only be used for the
  1847.                 transaction in progress, and should not be cached.  For
  1848.                 example, SOA records are always distributed with a zero
  1849.                 TTL to prohibit caching.  Zero values can also be used
  1850.                 for extremely volatile data.
  1851.  
  1852.  
  1853.  
  1854.  
  1855. Mockapetris                                                    [Page 30]
  1856.  
  1857.  
  1858. RFC 883                                                    November 1983
  1859.                          Domain Names - Implementation and Specification
  1860.  
  1861.  
  1862.       RDLENGTH- an unsigned 16 bit integer that specifies the length in
  1863.                 octets of the RDATA field.
  1864.  
  1865.       RDATA   - a variable length string of octets that describes the
  1866.                 resource.  The format of this information varies
  1867.                 according to the TYPE and CLASS of the resource record.
  1868.                 For example, the if the TYPE is A and the CLASS is IN,
  1869.                 the RDATA field is a 4 octet ARPA Internet address.
  1870.  
  1871.       Formats for particular resource records are shown in Appendicies 2
  1872.       and 3.
  1873.  
  1874.    Domain name representation and compression
  1875.  
  1876.       Domain names messages are expressed in terms of a sequence of
  1877.       labels.  Each label is represented as a one octet length field
  1878.       followed by that number of octets.  Since every domain name ends
  1879.       with the null label of the root, a compressed  domain name is
  1880.       terminated by a length byte of zero.  The high order two bits of
  1881.       the length field must be zero, and the remaining six bits of the
  1882.       length field limit the label to 63 octets or less.
  1883.  
  1884.       To simplify implementations, the total length of label octets and
  1885.       label length octets that make up a domain name is restricted to
  1886.       255 octets or less.  Since the trailing root label and its dot are
  1887.       not printed, printed domain names are 254 octets or less.
  1888.  
  1889.       Although labels can contain any 8 bit values in octets that make
  1890.       up a label, it is strongly recommended that labels follow the
  1891.       syntax described in Appendix 1 of this memo, which is compatible
  1892.       with existing host naming conventions.  Name servers and resolvers
  1893.       must compare labels in a case-insensitive manner, i.e. A=a, and
  1894.       hence all character strings must be ASCII with zero parity.
  1895.       Non-alphabetic codes must match exactly.
  1896.  
  1897.       Whenever possible, name servers and resolvers must preserve all 8
  1898.       bits of domain names they process.  When a name server is given
  1899.       data for the same name under two different case usages, this
  1900.       preservation is not always possible.  For example, if a name
  1901.       server is given data for ISI.ARPA and isi.arpa, it should create a
  1902.       single node, not two, and hence will preserve a single casing of
  1903.       the label.  Systems with case sensitivity should take special
  1904.       precautions to insure that the domain data for the system is
  1905.       created with consistent case.
  1906.  
  1907.       In order to reduce the amount of space used by repetitive domain
  1908.       names, the sequence of octets that defines a domain name may be
  1909.       terminated by a pointer to the length octet of a previously
  1910.       specified label string.  The label string that the pointer
  1911.  
  1912.  
  1913. Mockapetris                                                    [Page 31]
  1914.  
  1915.  
  1916. RFC 883                                                    November 1983
  1917.                          Domain Names - Implementation and Specification
  1918.  
  1919.  
  1920.       specifies is appended to the already specified label string.
  1921.       Exact duplication of a previous label string can be done with a
  1922.       single pointer.  Multiple levels are allowed.
  1923.  
  1924.       Pointers can only be used in positions in the message where the
  1925.       format is not class specific.  If this were not the case, a name
  1926.       server that was handling a RR for another class could make
  1927.       erroneous copies of RRs.  As yet, there are no such cases, but
  1928.       they may occur in future RDATA formats.
  1929.  
  1930.       If a domain name is contained in a part of the message subject to
  1931.       a length field (such as the RDATA section of an RR), and
  1932.       compression is used, the length of the compressed name is used in
  1933.       the length calculation, rather than the length of the expanded
  1934.       name.
  1935.  
  1936.       Pointers are represented as a two octet field in which the high
  1937.       order 2 bits are ones, and the low order 14 bits specify an offset
  1938.       from the start of the message.  The 01 and 10 values of the high
  1939.       order bits are reserved for future use and should not be used.
  1940.  
  1941.       Programs are free to avoid using pointers in datagrams they
  1942.       generate, although this will reduce datagram capacity.  However
  1943.       all programs are required to understand arriving messages that
  1944.       contain pointers.
  1945.  
  1946.       For example, a datagram might need to use the domain names
  1947.       F.ISI.ARPA, FOO.F.ISI.ARPA, ARPA, and the root.  Ignoring the
  1948.       other fields of the message, these domain names might be
  1949.       represented as:
  1950.  
  1951.  
  1952.  
  1953.  
  1954.  
  1955.  
  1956.  
  1957.  
  1958.  
  1959.  
  1960.  
  1961.  
  1962.  
  1963.  
  1964.  
  1965.  
  1966.  
  1967.  
  1968.  
  1969.  
  1970.  
  1971. Mockapetris                                                    [Page 32]
  1972.  
  1973.  
  1974. RFC 883                                                    November 1983
  1975.                          Domain Names - Implementation and Specification
  1976.  
  1977.  
  1978.              +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  1979.           20 |           1           |           F           |
  1980.              +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  1981.           22 |           3           |           I           |
  1982.              +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  1983.           24 |           S           |           I           |
  1984.              +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  1985.           26 |           4           |           A           |
  1986.              +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  1987.           28 |           R           |           P           |
  1988.              +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  1989.           30 |           A           |           0           |
  1990.              +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  1991.  
  1992.              +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  1993.           40 |           3           |           F           |
  1994.              +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  1995.           42 |           O           |           O           |
  1996.              +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  1997.           44 | 1  1|                20                       |
  1998.              +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  1999.  
  2000.              +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  2001.           64 | 1  1|                26                       |
  2002.              +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  2003.  
  2004.              +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  2005.           92 |           0           |                       |
  2006.              +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  2007.  
  2008.       The domain name for F.ISI.ARPA is shown at offset 20.  The domain
  2009.       name FOO.F.ISI.ARPA is shown at offset 40; this definition uses a
  2010.       pointer to concatenate a label for FOO to the previously defined
  2011.       F.ISI.ARPA.  The domain name ARPA is defined at offset 64 using a
  2012.       pointer to the ARPA component of the name F.ISI.ARPA at 20; note
  2013.       that this reference relies on ARPA being the last label in the
  2014.       string at 20.  The root domain name is defined by a single octet
  2015.       of zeros at 92; the root domain name has no labels.
  2016.  
  2017.    Organization of the Shared database
  2018.  
  2019.       While name server implementations are free to use any internal
  2020.       data structures they choose, the suggested structure consists of
  2021.       several separate trees.  Each tree has structure corresponding to
  2022.       the domain name space, with RRs attached to nodes and leaves.
  2023.       Each zone of authoritative data has a separate tree, and one tree
  2024.       holds all non-authoritative data.  All of the trees corresponding
  2025.       to zones are managed identically, but the non-authoritative or
  2026.       cache tree has different management procedures.
  2027.  
  2028.  
  2029. Mockapetris                                                    [Page 33]
  2030.  
  2031.  
  2032. RFC 883                                                    November 1983
  2033.                          Domain Names - Implementation and Specification
  2034.  
  2035.  
  2036.       Data stored in the database can be kept in whatever form is
  2037.       convenient for the name server, so long as it can be transformed
  2038.       back into the format needed for messages.  In particular, the
  2039.       database will probably use structure in place of expanded domain
  2040.       names, and will also convert many of the time intervals used in
  2041.       the domain systems to absolute local times.
  2042.  
  2043.       Each tree corresponding to a zone has complete information for a
  2044.       "pruned" subtree of the domain space.  The top node of a zone has
  2045.       a SOA record that marks the start of the zone.  The bottom edge of
  2046.       the zone is delimited by nodes containing NS records signifying
  2047.       delegation of authority to other zones, or by leaves of the domain
  2048.       tree.  When a name server contains abutting zones, one tree will
  2049.       have a bottom node containing a NS record, and the other tree will
  2050.       begin with a tree location containing a SOA record.
  2051.  
  2052.       Note that there is one special case that requires consideration
  2053.       when a name server is implemented.  A node that contains a SOA RR
  2054.       denoting a start of zone will also have NS records that identify
  2055.       the name servers that are expected to have a copy of the zone.
  2056.       Thus a name server will usually find itself (and possibly other
  2057.       redundant name servers) referred to in NS records occupying the
  2058.       same position in the tree as SOA records.  The solution to this
  2059.       problem is to never interpret a NS record as delimiting a zone
  2060.       started by a SOA at the same point in the tree.  (The sample
  2061.       programs in this memo deal with this problem by processing SOA
  2062.       records only after NS records have been processed.)
  2063.  
  2064.       Zones may also overlap a particular part of the name space when
  2065.       they are of different classes.
  2066.  
  2067.       Other than the abutting and separate class cases, trees are always
  2068.       expected to be disjoint.  Overlapping zones are regarded as a
  2069.       non-fatal error.  The scheme described in this memo avoids the
  2070.       overlap issue by maintaining separate trees; other designs must
  2071.       take the appropriate measures to defend against possible overlap.
  2072.  
  2073.       Non-authoritative data is maintained in a separate tree.  This
  2074.       tree is unlike the zone trees in that it may have "holes".  Each
  2075.       RR in the cache tree has its own TTL that is separately managed.
  2076.       The data in this tree is never used if authoritative data is
  2077.       available from a zone tree; this avoids potential problems due to
  2078.       cached data that conflicts with authoritative data.
  2079.  
  2080.       The shared database will also contain data structures to support
  2081.       the processing of inverse queries and completion queries if the
  2082.       local system supports these optional features.  Although many
  2083.       schemes are possible, this memo describes a scheme that is based
  2084.       on tables of pointers that invert the database according to key.
  2085.  
  2086.  
  2087. Mockapetris                                                    [Page 34]
  2088.  
  2089.  
  2090. RFC 883                                                    November 1983
  2091.                          Domain Names - Implementation and Specification
  2092.  
  2093.  
  2094.       Each kind of retrieval has a separate set of tables, with one
  2095.       table per zone.  When a zone is updated, these tables must also be
  2096.       updated.  The contents of these tables are discussed in the
  2097.       "Inverse query processing" and "Completion query processing"
  2098.       sections of this memo.
  2099.  
  2100.       The database implementation described here includes two locks that
  2101.       are used to control concurrent access and modification of the
  2102.       database by name server query processing, name server maintenance
  2103.       operations, and resolver access:
  2104.  
  2105.          The first lock ("main lock") controls access to all of the
  2106.          trees.  Multiple concurrent reads are allowed, but write access
  2107.          can only be acquired by a single process.  Read and write
  2108.          access are mutually exclusive.  Resolvers and name server
  2109.          processes that answer queries acquire this lock in read mode,
  2110.          and unlock upon completion of the current message.  This lock
  2111.          is acquired in write mode by a name server maintenance process
  2112.          when it is about to change data in the shared database.  The
  2113.          actual update procedures are described under "NAME SERVER
  2114.          MAINTENANCE" but are designed to be brief.
  2115.  
  2116.          The second lock ("cache queue lock") controls access to the
  2117.          cache queue.  This queue is used by a resolver that wishes to
  2118.          add information to the cache tree.  The resolver acquires this
  2119.          lock, then places the RRs to be cached into the queue.  The
  2120.          name server maintenance procedure periodically acquires this
  2121.          lock and adds the queue information to the cache.  The
  2122.          rationale for this procedure is that it allows the resolver to
  2123.          operate with read-only access to the shared database, and
  2124.          allows the update process to batch cache additions and the
  2125.          associated costs for inversion calculations.  The name server
  2126.          maintenance procedure must take appropriate precautions to
  2127.          avoid problems with data already in the cache, inversions, etc.
  2128.  
  2129.       This organization solves several difficulties:
  2130.  
  2131.          When searching the domain space for the answer to a query, a
  2132.          name server can restrict its search for authoritative data to
  2133.          that tree that matches the most labels on the right side of the
  2134.          domain name of interest.
  2135.  
  2136.          Since updates to a zone must be atomic with respect to
  2137.          searches, maintenance operations can simply acquire the main
  2138.          lock, insert a new copy of a particular zone without disturbing
  2139.          other zones, and then release the storage used by the old copy.
  2140.          Assuming a central table pointing to valid zone trees, this
  2141.          operation can be a simple pointer swap.
  2142.  
  2143.  
  2144.  
  2145. Mockapetris                                                    [Page 35]
  2146.  
  2147.  
  2148. RFC 883                                                    November 1983
  2149.                          Domain Names - Implementation and Specification
  2150.  
  2151.  
  2152.          TTL management of zones can be performed using the SOA record
  2153.          for the zone.  This avoids potential difficulties if individual
  2154.          RRs in a zone could be timed out separately.  This issue is
  2155.          discussed further in the maintenance section.
  2156.  
  2157.    Query processing
  2158.  
  2159.       The following algorithm outlines processing that takes place at a
  2160.       name server when a query arrives:
  2161.  
  2162.       1. Search the list of zones to find zones which have the same
  2163.          class as the QCLASS field in the query and have a top domain
  2164.          name that matches the right end of the QNAME field.  If there
  2165.          are none, go to step 2.  If there are more than one, pick the
  2166.          zone that has the longest match and go to step 3.
  2167.  
  2168.       2. Since the zone search failed, the only possible RRs are
  2169.          contained in the non-authoritative tree.  Search the cache tree
  2170.          for the NS record that has the same class as the QCLASS field
  2171.          and the largest right end match for domain name.  Add the NS
  2172.          record or records to the authority section of the response.  If
  2173.          the cache tree has RRs that are pertinent to the question
  2174.          (domain names match, classes agree, not timed-out, and the type
  2175.          field is relevant to the QTYPE), copy these RRs into the answer
  2176.          section of the response.  The name server may also search the
  2177.          cache queue.  Go to step 4.
  2178.  
  2179.       3. Since this zone is the best match, the zone in which QNAME
  2180.          resides is either this zone or a zone to which this zone will
  2181.          directly or indirectly delegate authority.  Search down the
  2182.          tree looking for a NS RR or the node specified by QNAME.
  2183.  
  2184.             If the node exists and has no NS record, copy the relevant
  2185.             RRs to the answer section of the response and go to step 4.
  2186.  
  2187.             If a NS RR is found, either matching a part or all of QNAME,
  2188.             then QNAME is in a delegated zone outside of this zone.  If
  2189.             so, copy the NS record or records into the authority section
  2190.             of the response, and search the remainder of the zone for an
  2191.             A type record corresponding to the NS reference.  If the A
  2192.             record is found, add it to the additional section.  Go to
  2193.             step 2.
  2194.  
  2195.             If the node is not found and a NS is not found, there is no
  2196.             such name; set the Name error bit in the response and exit.
  2197.  
  2198.       4. When this step is reached, the answer and authority sections
  2199.          are complete.  What remains is to complete the additional
  2200.          section.  This procedure is only possible if the name server
  2201.  
  2202.  
  2203. Mockapetris                                                    [Page 36]
  2204.  
  2205.  
  2206. RFC 883                                                    November 1983
  2207.                          Domain Names - Implementation and Specification
  2208.  
  2209.  
  2210.          knows the data formats implied by the class of records in the
  2211.          answer and authority sections.  Hence this procedure is class
  2212.          dependent.  Appendix 3 discusses this procedure for Internet
  2213.          class data.
  2214.  
  2215.       While this algorithm deals with typical queries and databases,
  2216.       several additions are required that will depend on the database
  2217.       supported by the name server:
  2218.  
  2219.       QCLASS=*
  2220.  
  2221.          Special procedures are required when the QCLASS of the query is
  2222.          "*".  If the database contains several classes of data, the
  2223.          query processing steps above are performed separately for each
  2224.          CLASS, and the results are merged into a single response.  The
  2225.          name error condition is not meaningful for a QCLASS=* query.
  2226.          If the requestor wants this information, it must test each
  2227.          class independently.
  2228.  
  2229.          If the database is limited to data of a particular class, this
  2230.          operation can be performed by simply reseting the authoritative
  2231.          bit in the response, and performing the query as if QCLASS was
  2232.          the class used in the database.
  2233.  
  2234.       * labels in database RRs
  2235.  
  2236.          Some zones will contain default RRs that use * to match in
  2237.          cases where the search fails for a particular domain name.  If
  2238.          the database contains these records then a failure must be
  2239.          retried using * in place of one or more labels of the search
  2240.          key.  The procedure is to replace labels from the left with
  2241.          "*"s looking for a match until either all labels have been
  2242.          replaced, or a match is found.  Note that these records can
  2243.          never be the result of caching, so a name server can omit this
  2244.          processing for zones that don't contain RRs with * in labels,
  2245.          or can omit this processing entirely if * never appears in
  2246.          local authoritative data.
  2247.  
  2248.    Inverse query processing
  2249.  
  2250.       Name servers that support inverse queries can support these
  2251.       operations through exhaustive searches of their databases, but
  2252.       this becomes impractical as the size of the database increases.
  2253.       An alternative approach is to invert the database according to the
  2254.       search key.
  2255.  
  2256.       For name servers that support multiple zones and a large amount of
  2257.       data, the recommended approach is separate inversions for each
  2258.  
  2259.  
  2260.  
  2261. Mockapetris                                                    [Page 37]
  2262.  
  2263.  
  2264. RFC 883                                                    November 1983
  2265.                          Domain Names - Implementation and Specification
  2266.  
  2267.  
  2268.       zone.  When a particular zone is changed during a refresh, only
  2269.       its inversions need to be redone.
  2270.  
  2271.       Support for transfer of this type of inversion may be included in
  2272.       future versions of the domain system, but is not supported in this
  2273.       version.
  2274.  
  2275.    Completion query processing
  2276.  
  2277.       Completion query processing shares many of the same problems in
  2278.       data structure design as are found in inverse queries, but is
  2279.       different due to the expected high rate of use of top level labels
  2280.       (ie., ARPA, CSNET).  A name server that wishes to be efficient in
  2281.       its use of memory may well choose to invert only occurrences of
  2282.       ARPA, etc. that are below the top level, and use a search for the
  2283.       rare case that top level labels are used to constrain a
  2284.       completion.
  2285.  
  2286.  
  2287.  
  2288.  
  2289.  
  2290.  
  2291.  
  2292.  
  2293.  
  2294.  
  2295.  
  2296.  
  2297.  
  2298.  
  2299.  
  2300.  
  2301.  
  2302.  
  2303.  
  2304.  
  2305.  
  2306.  
  2307.  
  2308.  
  2309.  
  2310.  
  2311.  
  2312.  
  2313.  
  2314.  
  2315.  
  2316.  
  2317.  
  2318.  
  2319. Mockapetris                                                    [Page 38]
  2320.  
  2321.  
  2322. RFC 883                                                    November 1983
  2323.                          Domain Names - Implementation and Specification
  2324.  
  2325.  
  2326. NAME SERVER MAINTENANCE
  2327.  
  2328.    Introduction
  2329.  
  2330.       Name servers perform maintenance operations on their databases to
  2331.       insure that the data they distribute is accurate and timely.  The
  2332.       amount and complexity of the maintenance operations that a name
  2333.       server must perform are related to the size, change rate, and
  2334.       complexity of the database that the name server manages.
  2335.  
  2336.       Maintenance operations are fundamentally different for
  2337.       authoritative and non-authoritative data.  A name server actively
  2338.       attempts to insure the accuracy and timeliness of authoritative
  2339.       data by refreshing the data from master copies.  Non-authoritative
  2340.       data is merely purged when its time-to-live expires; the name
  2341.       server does not attempt to refresh it.
  2342.  
  2343.       Although the refreshing scheme is fairly simple to implement, it
  2344.       is somewhat less powerful than schemes used in other distributed
  2345.       database systems.  In particular, an update to the master does not
  2346.       immediately update copies, and should be viewed as gradually
  2347.       percolating though the distributed database.  This is adequate for
  2348.       the vast majority of applications.  In situations where timliness
  2349.       is critical, the master name server can prohibit caching of copies
  2350.       or assign short timeouts to copies.
  2351.  
  2352.    Conceptual model of maintenance operations
  2353.  
  2354.       The vast majority of information in the domain system is derived
  2355.       from master files scattered among hosts that implement name
  2356.       servers; some name servers will have no master files, other name
  2357.       servers will have one or more master files.  Each master file
  2358.       contains the master data for a single zone of authority rather
  2359.       than data for the whole domain name space.  The administrator of a
  2360.       particular zone controls that zone by updating its master file.
  2361.  
  2362.       Master files and zone copies from remote servers may include RRs
  2363.       that are outside of the zone of authority when a NS record
  2364.       delegates authority to a domain name that is a descendant of the
  2365.       domain name at which authority is delegated.  These forward
  2366.       references are a problem because there is no reasonable method to
  2367.       guarantee that the A type records for the delegatee are available
  2368.       unless they can somehow be attached to the NS records.
  2369.  
  2370.       For example, suppose the ARPA zone delegates authority at
  2371.       MIT.ARPA, and states that the name server is on AI.MIT.ARPA.  If a
  2372.       resolver gets the NS record but not the A type record for
  2373.       AI.MIT.ARPA, it might try to ask the MIT name server for the
  2374.       address of AI.MIT.ARPA.
  2375.  
  2376.  
  2377. Mockapetris                                                    [Page 39]
  2378.  
  2379.  
  2380. RFC 883                                                    November 1983
  2381.                          Domain Names - Implementation and Specification
  2382.  
  2383.  
  2384.       The solution is to allow type A records that are outside of the
  2385.       zone of authority to be copied with the zone.  While these records
  2386.       won't be found in a search for the A type record itself, they can
  2387.       be protected by the zone refreshing system, and will be passed
  2388.       back whenever the name server passes back a referral to the
  2389.       corresponding NS record.  If a query is received for the A record,
  2390.       the name server will pass back a referral to the name server with
  2391.       the A record in the additional section, rather than answer
  2392.       section.
  2393.  
  2394.       The only exception to the use of master files is a small amount of
  2395.       data stored in boot files.  Boot file data is used by name servers
  2396.       to provide enough resource records to allow zones to be imported
  2397.       from foreign servers (e.g. the address of the server), and to
  2398.       establish the name and address of root servers.  Boot file records
  2399.       establish the initial contents of the cache tree, and hence can be
  2400.       overridden by later loads of authoritative data.
  2401.  
  2402.       The data in a master file first becomes available to users of the
  2403.       domain name system when it is loaded by the corresponding name
  2404.       server.  By definition, data from a master file is authoritative.
  2405.  
  2406.       Other name servers which wish to be authoritative for a particular
  2407.       zone do so by transferring a copy of the zone from the name server
  2408.       which holds the master copy using a virtual circuit.  These copies
  2409.       include parameters which specify the conditions under which the
  2410.       data in the copy is authoritative.  In the most common case, the
  2411.       conditions specify a refresh interval and policies to be followed
  2412.       when the refresh operation cannot be performed.
  2413.  
  2414.       A name server may acquire multiple zones from different name
  2415.       servers and master files, but the name server must maintain each
  2416.       zone separately from others and from non-authoritative data.
  2417.  
  2418.       When the refresh interval for a particular zone copy expires, the
  2419.       name server holding the copy must consult the name server that
  2420.       holds the master copy.  If the data in the zone has not changed,
  2421.       the master name server instructs the copy name server to reset the
  2422.       refresh interval.  If the data has changed, the master passes a
  2423.       new copy of the zone and its associated conditions to the copy
  2424.       name server.  Following either of these transactions, the copy
  2425.       name server begins a new refresh interval.
  2426.  
  2427.       Copy name servers must also deal with error conditions under which
  2428.       they are unable to communicate with the name server that holds the
  2429.       master copy of a particular zone.  The policies that a copy name
  2430.       server uses are determined by other parameters in the conditions
  2431.       distributed with every copy.  The conditions include a retry
  2432.       interval and a maximum holding time.  When a copy name server is
  2433.  
  2434.  
  2435. Mockapetris                                                    [Page 40]
  2436.  
  2437.  
  2438. RFC 883                                                    November 1983
  2439.                          Domain Names - Implementation and Specification
  2440.  
  2441.  
  2442.       unable to establish communications with a master or is unable to
  2443.       complete the refresh transaction, it must retry the refresh
  2444.       operation at the rate specified by the retry interval.  This retry
  2445.       interval will usually be substantially shorter than the refresh
  2446.       interval.  Retries continue until the maximum holding time is
  2447.       reached.  At that time the copy name server must assume that its
  2448.       copy of the data for the zone in question is no longer
  2449.       authoritative.
  2450.  
  2451.       Queries must be processed while maintenance operations are in
  2452.       progress because a zone transfer can take a long time.  However,
  2453.       to avoid problems caused by access to partial databases, the
  2454.       maintenance operations create new copies of data rather than
  2455.       directly modifying the old copies.  When the new copy is complete,
  2456.       the maintenance process locks out queries for a short time using
  2457.       the main lock, and switches pointers to replace the old data with
  2458.       the new.  After the pointers are swapped, the maintenance process
  2459.       unlocks the main lock and reclaims the storage used by the old
  2460.       copy.
  2461.  
  2462.    Name server data structures and top level logic
  2463.  
  2464.       The name server must multiplex its attention between multiple
  2465.       activities.  For example, a name server should be able to answer
  2466.       queries while it is also performing refresh activities for a
  2467.       particular zone.  While it is possible to design a name server
  2468.       that devotes a separate process to each query and refresh activity
  2469.       in progress, the model described in this memo is based on the
  2470.       assumption that there is a single process performing all
  2471.       maintenance operations, and one or more processes devoted to
  2472.       handling queries.  The model also assumes the existence of shared
  2473.       memory for several control structures, the domain database, locks,
  2474.       etc.
  2475.  
  2476.       The model name server uses the following files and shared data
  2477.       structures:
  2478.  
  2479.          1. A configuration file that describes the master and boot
  2480.             files which the name server should load and the zones that
  2481.             the name server should attempt to load from foreign name
  2482.             servers.  This file establishes the initial contents of the
  2483.             status table.
  2484.  
  2485.          2. Domain data files that contain master and boot data to be
  2486.             loaded.
  2487.  
  2488.          3. A status table that is derived from the configuration file.
  2489.             Each entry in this table describes a source of data.  Each
  2490.             entry has a zone number.  The zone number is zero for
  2491.  
  2492.  
  2493. Mockapetris                                                    [Page 41]
  2494.  
  2495.  
  2496. RFC 883                                                    November 1983
  2497.                          Domain Names - Implementation and Specification
  2498.  
  2499.  
  2500.             non-authoritative sources; authoritative sources are
  2501.             assigned separate non-zero numbers.
  2502.  
  2503.          4. The shared database that holds the domain data.  This
  2504.             database is assumed to be organized in some sort of tree
  2505.             structure paralleling the domain name space, with a list of
  2506.             resource records attached to each node and leaf in the tree.
  2507.             The elements of the resource record list need not contain
  2508.             the exact data present in the corresponding output format,
  2509.             but must contain data sufficient to create the output
  2510.             format; for example, these records need not contain the
  2511.             domain name that is associated with the resource because
  2512.             that name can be derived from the tree structure.  Each
  2513.             resource record also internal data that the name server uses
  2514.             to organize its data.
  2515.  
  2516.          5. Inversion data structures that allow the name server to
  2517.             process inverse queries and completion queries.  Although
  2518.             many structures could be used, the implementation described
  2519.             in this memo supposes that there is one array for every
  2520.             inversion that the name server can handle.  Each array
  2521.             contains a list of pointers to resource records such that
  2522.             the order of the inverted quantities is sorted.
  2523.  
  2524.          6. The main and cache queue locks
  2525.  
  2526.          7. The cache queue
  2527.  
  2528.       The maintenance process begins by loading the status table from
  2529.       the configuration file.  It then periodically checks each entry,
  2530.       to see if its refresh interval has elapsed.  If not, it goes on to
  2531.       the next entry.  If so, it performs different operations depending
  2532.       on the entry:
  2533.  
  2534.          If the entry is for zone 0, or the cache tree, the maintenance
  2535.          process checks to see if additions or deletions are required.
  2536.          Additions are acquired from the cache queue using the cache
  2537.          queue lock.  Deletions are detected using TTL checks.  If any
  2538.          changes are required, the maintenance process recalculates
  2539.          inversion data structures and then alters the cache tree under
  2540.          the protection of the main lock.  Whenever the maintenance
  2541.          process modifies the cache tree, it resets the refresh interval
  2542.          to the minimum of the contained TTLs and the desired time
  2543.          interval for cache additions.
  2544.  
  2545.          If the entry is not zone 0, and the entry refers to a local
  2546.          file, the maintenance process checks to see if the file has
  2547.          been modified since its last load.  If so the file is reloaded
  2548.          using the procedures specified under "Name server file
  2549.  
  2550.  
  2551. Mockapetris                                                    [Page 42]
  2552.  
  2553.  
  2554. RFC 883                                                    November 1983
  2555.                          Domain Names - Implementation and Specification
  2556.  
  2557.  
  2558.          loading".  The refresh interval is reset to that specified in
  2559.          the SOA record if the file is a master file.
  2560.  
  2561.          If the entry is for a remote master file, the maintenance
  2562.          process checks for a new version using the procedure described
  2563.          in "Names server remote zone transfer".
  2564.  
  2565.    Name server file loading
  2566.  
  2567.       Master files are kept in text form for ease of editing by system
  2568.       maintainers.  These files are not exchanged by name servers; name
  2569.       servers use the standard message format when transferring zones.
  2570.  
  2571.       Organizations that want to have a domain, but do not want to run a
  2572.       name server, can use these files to supply a domain definition to
  2573.       another organization that will run a name server for them.  For
  2574.       example, if organization X wants a domain but not a name server,
  2575.       it can find another organization, Y, that has a name server and is
  2576.       willing to provide service for X.  Organization X defines domain X
  2577.       via the master file format and ships a copy of the master file to
  2578.       organization Y via mail, FTP, or some other method.  A system
  2579.       administrator at Y configures Y's name server to read in X's file
  2580.       and hence support the X domain.  X can maintain the master file
  2581.       using a text editor and send new versions to Y for installation.
  2582.  
  2583.       These files have a simple line-oriented format, with one RR per
  2584.       line.  Fields are separated by any combination of blanks and tab
  2585.       characters.  Tabs are treated the same as spaces; in the following
  2586.       discussion the term "blank" means either a tab or a blank.  A line
  2587.       can be either blank (and ignored), a RR, or a $INCLUDE line.
  2588.  
  2589.       If a RR line starts with a domain name, that domain name is used
  2590.       to specify the location in the domain space for the record, i.e.
  2591.       the owner.  If a RR line starts with a blank, it is loaded into
  2592.       the location specified by the most recent location specifier.
  2593.  
  2594.       The location specifiers are assumed to be relative to some origin
  2595.       that is provided by the user of a file unless the location
  2596.       specifier contains the root label.  This provides a convenient
  2597.       shorthand notation, and can also be used to prevent errors in
  2598.       master files from propagating into other zones.  This feature is
  2599.       particularly useful for master files imported from other sites.
  2600.  
  2601.       An include line begins with $INCLUDE, starting at the first line
  2602.       position, and is followed by a local file name and an optional
  2603.       offset modifier.  The filename follows the appropriate local
  2604.       conventions.  The offset is one or more labels that are added to
  2605.       the offset in use for the file that contained the $INCLUDE.  If
  2606.       the offset is omitted, the included file is loaded using the
  2607.  
  2608.  
  2609. Mockapetris                                                    [Page 43]
  2610.  
  2611.  
  2612. RFC 883                                                    November 1983
  2613.                          Domain Names - Implementation and Specification
  2614.  
  2615.  
  2616.       offset of the file that contained the $INCLUDE command.  For
  2617.       example, a file being loaded at offset ARPA might contain the
  2618.       following lines:
  2619.  
  2620.                 $INCLUDE <subsys>isi.data ISI           
  2621.                 $INCLUDE <subsys>addresses.data         
  2622.  
  2623.       The first line would be interpreted to direct loading of the file
  2624.       <subsys>isi.data at offset ISI.ARPA.  The second line would be
  2625.       interpreted as a request to load data at offset ARPA.
  2626.  
  2627.       Note that $INCLUDE commands do not cause data to be loaded into a
  2628.       different zone or tree; they are simply ways to allow data for a
  2629.       given zone to be organized in separate files.  For example,
  2630.       mailbox data might be kept separately from host data using this
  2631.       mechanism.
  2632.  
  2633.       Resource records are entered as a sequence of fields corresponding
  2634.       to the owner name, TTL, CLASS, TYPE and RDATA components.  (Note
  2635.       that this order is different from the order used in examples and
  2636.       the order used in the actual RRs; the given order allows easier
  2637.       parsing and defaulting.)
  2638.  
  2639.          The owner name is derived from the location specifier.
  2640.  
  2641.          The TTL field is optional, and is expressed as a decimal
  2642.          number.  If omitted TTL defaults to zero.
  2643.  
  2644.          The CLASS field is also optional; if omitted the CLASS defaults
  2645.          to the most recent value of the CLASS field in a previous RR.
  2646.  
  2647.          The RDATA fields depend on the CLASS and TYPE of the RR.  In
  2648.          general, the fields that make up RDATA are expressed as decimal
  2649.          numbers or as domain names.  Some exceptions exist, and are
  2650.          documented in the RDATA definitions in Appendicies 2 and 3 of
  2651.          this memo.
  2652.  
  2653.       Because CLASS and TYPE fields don't contain any common
  2654.       identifiers, and because CLASS and TYPE fields are never decimal
  2655.       numbers, the parse is always unique.
  2656.  
  2657.       Because these files are text files several special encodings are
  2658.       necessary to allow arbitrary data to be loaded.  In particular:
  2659.  
  2660.          .    A free standing dot is used to refer to the current domain
  2661.               name.
  2662.  
  2663.          @    A free standing @ is used to denote the current origin.
  2664.  
  2665.  
  2666.  
  2667. Mockapetris                                                    [Page 44]
  2668.  
  2669.  
  2670. RFC 883                                                    November 1983
  2671.                          Domain Names - Implementation and Specification
  2672.  
  2673.  
  2674.          ..   Two free standing dots represent the null domain name of
  2675.               the root.
  2676.  
  2677.          \X   where X is any character other than a digit (0-9), is used
  2678.               to quote that character so that its special meaning does
  2679.               not apply.  For example, "\." can be used to place a dot
  2680.               character in a label.
  2681.  
  2682.          \DDD where each D is a digit is the octet corresponding to the
  2683.               decimal number described by DDD.  The resulting octet is
  2684.               assumed to be text and is not checked for special meaning.
  2685.  
  2686.          ( )  Parentheses are used to group data that crosses a line
  2687.               boundary.  In effect, line terminations are not recognized
  2688.               within parentheses.
  2689.  
  2690.          ;    Semicolon is used to start a comment; the remainder of the
  2691.               line is ignored.
  2692.  
  2693.    Name server file loading example
  2694.  
  2695.       A name server for F.ISI.ARPA , serving as an authority for the
  2696.       ARPA and ISI.ARPA domains, might use a boot file and two master
  2697.       files.  The boot file initializes some non-authoritative data, and
  2698.       would be loaded without an origin:
  2699.  
  2700.     ..              9999999 IN      NS      B.ISI.ARPA               
  2701.                     9999999 CS      NS      UDEL.CSNET               
  2702.     B.ISI.ARPA      9999999 IN      A       10.3.0.52                
  2703.     UDEL.CSNET      9999999 CS      A       302-555-0000             
  2704.  
  2705.       This file loads non-authoritative data which provides the
  2706.       identities and addresses of root name servers.  The first line
  2707.       contains a NS RR which is loaded at the root; the second line
  2708.       starts with a blank, and is loaded at the most recent location
  2709.       specifier, in this case the root; the third and fourth lines load
  2710.       RRs at B.ISI.ARPA and UDEL.CSNET, respectively.  The timeouts are
  2711.       set to high values (9999999) to prevent this data from being
  2712.       discarded due to timeout.
  2713.  
  2714.       The first master file loads authoritative data for the ARPA
  2715.       domain.  This file is designed to be loaded with an origin of
  2716.       ARPA, which allows the location specifiers to omit the trailing
  2717.       .ARPA labels.
  2718.  
  2719.  
  2720.  
  2721.  
  2722.  
  2723.  
  2724.  
  2725. Mockapetris                                                    [Page 45]
  2726.  
  2727.  
  2728. RFC 883                                                    November 1983
  2729.                          Domain Names - Implementation and Specification
  2730.  
  2731.  
  2732.     @   IN  SOA     F.ISI.ARPA       Action.E.ISI.ARPA (             
  2733.                                      20     ; SERIAL                 
  2734.                                      3600   ; REFRESH                
  2735.                                      600    ; RETRY                  
  2736.                                      3600000; EXPIRE                 
  2737.                                      60)    ; MINIMUM                
  2738.             NS      F.ISI.ARPA ; F.ISI.ARPA is a name server for ARPA
  2739.             NS      A.ISI.ARPA ; A.ISI.ARPA is a name server for ARPA
  2740.     MIT     NS      AI.MIT.ARPA; delegation to MIT name server       
  2741.     ISI     NS      F.ISI.ARPA ; delegation to ISI name server       
  2742.  
  2743.     UDEL    MD      UDEL.ARPA                                        
  2744.             A       10.0.0.96                                        
  2745.     NBS     MD      NBS.ARPA                                         
  2746.             A       10.0.0.19                                        
  2747.     DTI     MD      DTI.ARPA                                         
  2748.             A       10.0.0.12                                        
  2749.  
  2750.     AI.MIT  A       10.2.0.6                                         
  2751.     F.ISI   A       10.2.0.52                                        
  2752.  
  2753.       The first group of lines contains the SOA record and its
  2754.       parameters, and identifies name servers for this zone and for
  2755.       delegated zones.  The Action.E.ISI.ARPA field is a mailbox
  2756.       specification for the responsible person for the zone, and is the
  2757.       domain name encoding of the mail destination Action@E.ISI.ARPA.
  2758.       The second group specifies data for domain names within this zone.
  2759.       The last group has forward references for name server address
  2760.       resolution for  AI.MIT.ARPA and F.ISI.ARPA.  This data is not
  2761.       technically within the zone, and will only be used for additional
  2762.       record resolution for NS records used in referrals.  However, this
  2763.       data is protected by the zone timeouts in the SOA, so it will
  2764.       persist as long as the NS references persist.
  2765.  
  2766.       The second master file defines the ISI.ARPA environment, and is
  2767.       loaded with an origin of ISI.ARPA:
  2768.  
  2769.     @   IN  SOA     F.ISI.ARPA      Action\.ISI.E.ISI.ARPA (         
  2770.                                      20     ; SERIAL                 
  2771.                                      7200   ; REFRESH                
  2772.                                      600    ; RETRY                  
  2773.                                      3600000; EXPIRE                 
  2774.                                      60)    ; MINIMUM                
  2775.             NS      F.ISI.ARPA ; F.ISI.ARPA is a name server         
  2776.     A       A       10.1.0.32                                        
  2777.             MD      A.ISI.ARPA                                       
  2778.             MF      F.ISI.ARPA                                       
  2779.     B       A       10.3.0.52                                        
  2780.             MD      B.ISI.ARPA                                       
  2781.  
  2782.  
  2783. Mockapetris                                                    [Page 46]
  2784.  
  2785.  
  2786. RFC 883                                                    November 1983
  2787.                          Domain Names - Implementation and Specification
  2788.  
  2789.  
  2790.             MF      F.ISI.ARPA                                       
  2791.     F       A       10.2.0.52                                        
  2792.             MD      F.ISI.ARPA                                       
  2793.             MF      A.ISI.ARPA                                       
  2794.     $INCLUDE <SUBSYS>ISI-MAILBOXES.TXT                               
  2795.  
  2796.       Where the file <SUBSYS>ISI-MAILBOXES.TXT is:
  2797.  
  2798.     MOE     MB      F.ISI.ARPA                                       
  2799.     LARRY   MB      A.ISI.ARPA                                       
  2800.     CURLEY  MB      B.ISI.ARPA                                       
  2801.     STOOGES MB      B.ISI.ARPA                                       
  2802.             MG      MOE.ISI.ARPA                                     
  2803.             MG      LARRY.ISI.ARPA                                   
  2804.             MG      CURLEY.ISI.ARPA                                  
  2805.  
  2806.       Note the use of the \ character in the SOA RR to specify the
  2807.       responsible person mailbox "Action.ISI@E.ISI.ARPA".
  2808.  
  2809.    Name server remote zone transfer
  2810.  
  2811.       When a name server needs to make an initial copy of a zone or test
  2812.       to see if a existing zone copy should be refreshed, it begins by
  2813.       attempting to open a virtual circuit to the foreign name server.
  2814.  
  2815.       If this open attempt fails, and this was an initial load attempt,
  2816.       it schedules a retry and exits.  If this was a refresh operation,
  2817.       the name server tests the status table to see if the maximum
  2818.       holding time derived from the SOA EXPIRE field has elapsed.  If
  2819.       not, the name server schedules a retry.  If the maximum holding
  2820.       time has expired, the name server invalidates the zone in the
  2821.       status table, and scans all resource records tagged with this zone
  2822.       number.  For each record it decrements TTL fields by the length of
  2823.       time since the data was last refreshed.  If the new TTL value is
  2824.       negative, the record is deleted.  If the TTL value is still
  2825.       positive, it moves the RR to the cache tree and schedules a retry.
  2826.  
  2827.       If the open attempt succeeds, the name server sends a query to the
  2828.       foreign name server in which QTYPE=SOA, QCLASS is set according to
  2829.       the status table information from the configuration file, and
  2830.       QNAME is set to the domain name of the zone of interest.
  2831.  
  2832.       The foreign name server will return either a SOA record indicating
  2833.       that it has the zone or an error.  If an error is detected, the
  2834.       virtual circuit is closed, and the failure is treated in the same
  2835.       way as if the open attempt failed.
  2836.  
  2837.       If the SOA record is returned and this was a refresh, rather than
  2838.       an initial load of the zone, the name server compares the SERIAL
  2839.  
  2840.  
  2841. Mockapetris                                                    [Page 47]
  2842.  
  2843.  
  2844. RFC 883                                                    November 1983
  2845.                          Domain Names - Implementation and Specification
  2846.  
  2847.  
  2848.       field in the new SOA record with the SERIAL field in the SOA
  2849.       record of the existing zone copy.  If these values match, the zone
  2850.       has not been updated since the last copy and hence there is no
  2851.       reason to recopy the zone.  In this case the name server resets
  2852.       the times in the existing SOA record and closes the virtual
  2853.       circuit to complete the operation.
  2854.  
  2855.       If this is initial load, or the SERIAL fields were different, the
  2856.       name server requests a copy of the zone by sending the foreign
  2857.       name server an AXFR query which specifies the zone by its QCLASS
  2858.       and QNAME fields.
  2859.  
  2860.       When the foreign name server receives the AXFR request, it sends
  2861.       each node from the zone to the requestor in a separate message.
  2862.       It begins with the node that contains the SOA record, walks the
  2863.       tree in breadth-first order, and completes the transfer by
  2864.       resending the node containing the SOA record.
  2865.  
  2866.       Several error conditions are possible:
  2867.  
  2868.          If the AXFR request cannot be matched to a SOA, the foreign
  2869.          name server will return a single message in response that does
  2870.          not contain the AXFR request.  (The normal SOA query preceding
  2871.          the AXFR is designed to avoid this condition, but it is still
  2872.          possible.)
  2873.  
  2874.          The foreign name server can detect an internal error or detect
  2875.          some other condition (e.g. system going down, out of resources,
  2876.          etc.) that forces the transfer to be aborted.  If so, it sends
  2877.          a message with the "Server failure" condition set.  If the AXFR
  2878.          can be immediately retried with some chance of success, it
  2879.          leaves the virtual open; otherwise it initiates a close.
  2880.  
  2881.          If the foreign name server doesn't wish to perform the
  2882.          operation for policy reasons (i.e. the system administrator
  2883.          wishes to forbid zone copies), the foreign server returns a
  2884.          "Refused" condition.
  2885.  
  2886.       The requestor receives these records and builds a new tree.  This
  2887.       tree is not yet in the status table, so its data are not used to
  2888.       process queries.  The old copy of the zone, if any, may be used to
  2889.       satisfy request while the transfer is in progress.
  2890.  
  2891.       When the requestor receives the second copy of the SOA node, it
  2892.       compares the SERIAL field in the first copy of the SOA against the
  2893.       SERIAL field in the last copy of the SOA record.  If these don't
  2894.       match, the foreign server updated its zone while the transfer was
  2895.       in progress.  In this case the requestor repeats the AXFR request
  2896.       to acquire the newer version.
  2897.  
  2898.  
  2899. Mockapetris                                                    [Page 48]
  2900.  
  2901.  
  2902. RFC 883                                                    November 1983
  2903.                          Domain Names - Implementation and Specification
  2904.  
  2905.  
  2906.       If the AXFR transfer eventually succeeds, the name server closes
  2907.       the virtual circuit and and creates new versions of inversion data
  2908.       structures for this zone.  When this operation is complete, the
  2909.       name server acquires the main lock in write mode and then replaces
  2910.       any old copy of the zone and inversion data structures with new
  2911.       ones.  The name server then releases the main lock, and can
  2912.       reclaim the storage used by the old copy.
  2913.  
  2914.       If an error occurs during the AXFR transfer, the name server can
  2915.       copy any partial information into its cache tree if it wishes,
  2916.       although it will not normally do so if the zone transfer was a
  2917.       refresh rather than an initial load.
  2918.  
  2919.  
  2920.  
  2921.  
  2922.  
  2923.  
  2924.  
  2925.  
  2926.  
  2927.  
  2928.  
  2929.  
  2930.  
  2931.  
  2932.  
  2933.  
  2934.  
  2935.  
  2936.  
  2937.  
  2938.  
  2939.  
  2940.  
  2941.  
  2942.  
  2943.  
  2944.  
  2945.  
  2946.  
  2947.  
  2948.  
  2949.  
  2950.  
  2951.  
  2952.  
  2953.  
  2954.  
  2955.  
  2956.  
  2957. Mockapetris                                                    [Page 49]
  2958.  
  2959.  
  2960. RFC 883                                                    November 1983
  2961.                          Domain Names - Implementation and Specification
  2962.  
  2963.  
  2964. RESOLVER ALGORITHMS
  2965.  
  2966.    Operations
  2967.  
  2968.       Resolvers have a great deal of latitude in the semantics they
  2969.       allow in user calls.  For example, a resolver might support
  2970.       different user calls that specify whether the returned information
  2971.       must be from and authoritative name server or not.  Resolvers are
  2972.       also responsible for enforcement of any local restrictions on
  2973.       access, etc.
  2974.  
  2975.       In any case, the resolver will transform the user query into a
  2976.       number of shared database accesses and queries to remote name
  2977.       servers.  When a user requests a resource associated with a
  2978.       particular domain name, the resolver will execute the following
  2979.       steps:
  2980.  
  2981.       1. The resolver first checks the local shared database, if any,
  2982.          for the desired information.  If found, it checks the
  2983.          applicable timeout.  If the timeout check succeeds, the
  2984.          information is used to satisfy the user request.  If not, the
  2985.          resolver goes to step 2.
  2986.  
  2987.       2. In this step, the resolver consults the shared database for the
  2988.          name server that most closely matches the domain name in the
  2989.          user query.  Multiple redundant name servers may be found.  The
  2990.          resolver goes to step 3.
  2991.  
  2992.       3. In this step the resolver chooses one of the available name
  2993.          servers and sends off a query.  If the query fails, it tries
  2994.          another name server.  If all fail, an error indication is
  2995.          returned to the user.  If a reply is received the resolver adds
  2996.          the returned RRs to its database and goes to step 4.
  2997.  
  2998.       4. In this step, the resolver interprets the reply.  If the reply
  2999.          contains the desired information, the resolver returns the
  3000.          information to the user.  The the reply indicates that the
  3001.          domain name in the user query doesn't exist, then the resolver
  3002.          returns an error to the user.  If the reply contains a
  3003.          transient name server failure, the resolver can either wait and
  3004.          retry the query or go back to step 3 and try a different name
  3005.          server.  If the reply doesn't contain the desired information,
  3006.          but does contain a pointer to a closer name server, the
  3007.          resolver returns to step 2, where the closer name servers will
  3008.          be queried.
  3009.  
  3010.       Several modifications to this algorithm are possible.  A resolver
  3011.       may not support a local cache and instead only cache information
  3012.       during the course of a single user request, discarding it upon
  3013.  
  3014.  
  3015. Mockapetris                                                    [Page 50]
  3016.  
  3017.  
  3018. RFC 883                                                    November 1983
  3019.                          Domain Names - Implementation and Specification
  3020.  
  3021.  
  3022.       completion.  The resolver may also find that a datagram reply was
  3023.       truncated, and open a virtual circuit so that the complete reply
  3024.       can be recovered.
  3025.  
  3026.       Inverse and completion queries must be treated in an
  3027.       environment-sensitive manner, because the domain system doesn't
  3028.       provide a method for guaranteeing that it can locate the correct
  3029.       information.  The typical choice will be to configure a resolver
  3030.       to use a particular set of known name servers for inverse queries.
  3031.  
  3032.  
  3033.  
  3034.  
  3035.  
  3036.  
  3037.  
  3038.  
  3039.  
  3040.  
  3041.  
  3042.  
  3043.  
  3044.  
  3045.  
  3046.  
  3047.  
  3048.  
  3049.  
  3050.  
  3051.  
  3052.  
  3053.  
  3054.  
  3055.  
  3056.  
  3057.  
  3058.  
  3059.  
  3060.  
  3061.  
  3062.  
  3063.  
  3064.  
  3065.  
  3066.  
  3067.  
  3068.  
  3069.  
  3070.  
  3071.  
  3072.  
  3073. Mockapetris                                                    [Page 51]
  3074.  
  3075.  
  3076. RFC 883                                                    November 1983
  3077.                          Domain Names - Implementation and Specification
  3078.  
  3079.  
  3080. DOMAIN SUPPORT FOR MAIL
  3081.  
  3082.    Introduction
  3083.  
  3084.       Mail service is a particularly sensitive issue for users of the
  3085.       domain system because of the lack of a consistent system for
  3086.       naming mailboxes and even hosts, and the need to support continued
  3087.       operation of existing services.  This section discusses an
  3088.       evolutionary approach for adding consistent domain name support
  3089.       for mail.
  3090.  
  3091.       The crucial issue is deciding on the types of binding to be
  3092.       supported.  Most mail systems specify a mail destination with a
  3093.       two part construct such as X@Y.  The left hand side, X, is an
  3094.       string, often a user or account, and Y is a string, often a host.
  3095.       This section refers to the part on the left, i.e. X, as the local
  3096.       part, and refers to the part on the right, i.e. Y, as the global
  3097.       part.
  3098.  
  3099.       Most existing mail systems route mail based on the global part; a
  3100.       mailer with mail to deliver to X@Y will decide on the host to be
  3101.       contacted using only Y.  We refer to this type of binding as
  3102.       "agent binding".
  3103.  
  3104.          For example, mail addressed to Mockapetris@ISIF is delivered to
  3105.          host USC-ISIF (USC-ISIF is the official name for the host
  3106.          specified by nickname ISIF).
  3107.  
  3108.       More sophisticated mail systems use both the local and global
  3109.       parts, i.e. both X and Y to determine which host should receive
  3110.       the mail.  These more sophisticated systems usually separate the
  3111.       binding of the destination to the host from the actual delivery.
  3112.       This allows the global part to be a generic name rather than
  3113.       constraining it to a single host.  We refer to this type of
  3114.       binding as "mailbox binding".
  3115.  
  3116.          For example, mail addressed to Mockapetris@ISI might be bound
  3117.          to host F.ISI.ARPA, and subsequently delivered to that host,
  3118.          while mail for Cohen@ISI might be bound to host B.ISI.ARPA.
  3119.  
  3120.       The domain support for mail consists of two levels of support,
  3121.       corresponding to these two binding models.
  3122.  
  3123.          The first level, agent binding, is compatible with existing
  3124.          ARPA Internet mail procedures and uses maps a global part onto
  3125.          one or more hosts that will accept the mail.  This type of
  3126.          binding uses the MAILA QTYPE.
  3127.  
  3128.          The second level, mailbox binding, offers extended services
  3129.  
  3130.  
  3131. Mockapetris                                                    [Page 52]
  3132.  
  3133.  
  3134. RFC 883                                                    November 1983
  3135.                          Domain Names - Implementation and Specification
  3136.  
  3137.  
  3138.          that map a local part and a global part onto one or more sets
  3139.          of data via the MAILB QTYPE.  The sets of data include hosts
  3140.          that will accept the mail, mailing list members  (mail groups),
  3141.          and mailboxes for reporting errors or requests to change a mail
  3142.          group.
  3143.  
  3144.       The domain system encodes the global part of a mail destination as
  3145.       a domain name and uses dots in the global part to separate labels
  3146.       in the encoded domain name.  The domain system encodes the local
  3147.       part of a mail destination as a single label, and any dots in this
  3148.       part are simply copied into the label.  The domain system forms a
  3149.       complete mail destination as the local label concatenated to the
  3150.       domain string for the global part.  We call this a mailbox.
  3151.  
  3152.          For example, the mailbox Mockapetris@F.ISI.ARPA has a global
  3153.          domain name of three labels, F.ISI.ARPA.  The domain name
  3154.          encoding for the whole mailbox is Mockapetris.F.ISI.ARPA.  The
  3155.          mailbox Mockapetris.cad@F.ISI.ARPA has the same domain name for
  3156.          the global part and a 4 label domain name for the mailbox of
  3157.          Mockapetris\.cad.F.ISI.ARPA (the \ is not stored in the label,
  3158.          its merely used to denote the "quoted" dot).
  3159.  
  3160.       It is anticipated that the Internet system will adopt agent
  3161.       binding as part of the initial implementation of the domain
  3162.       system, and that mailbox binding will eventually become the
  3163.       preferred style as organizations convert their mail systems to the
  3164.       new style.  To facilitate this approach, the domain information
  3165.       for these two binding styles is organized to allow a requestor to
  3166.       determine which types of support are available, and the
  3167.       information is kept in two disjoint classes.
  3168.  
  3169.    Agent binding
  3170.  
  3171.       In agent binding, a mail system uses the global part of the mail
  3172.       destination as a domain name, with dots denoting structure.  The
  3173.       domain name is resolved using a MAILA query which return MF and MD
  3174.       RRs to specify the domain name of the appropriate host to receive
  3175.       the mail.  MD (Mail delivery) RRs specify hosts that are expected
  3176.       to have the mailbox in question; MF (Mail forwarding) RRs specify
  3177.       hosts that are expected to be intermediaries willing to accept the
  3178.       mail for eventual forwarding.  The hosts are hints, rather than
  3179.       definite answers, since the query is made without the full mail
  3180.       destination specification.
  3181.  
  3182.       For example, mail for MOCKAPETRIS@F.ISI.ARPA would result in a
  3183.       query with QTYPE=MAILA and QNAME=F.ISI.ARPA, which might return
  3184.       two RRs:
  3185.  
  3186.  
  3187.  
  3188.  
  3189. Mockapetris                                                    [Page 53]
  3190.  
  3191.  
  3192. RFC 883                                                    November 1983
  3193.                          Domain Names - Implementation and Specification
  3194.  
  3195.  
  3196.                       F.ISI.ARPA MD IN F.ISI.ARPA
  3197.                       F.ISI.ARPA MF IN A.ISI.ARPA
  3198.  
  3199.       The mailer would interpret these to mean that the mail agent on
  3200.       F.ISI.ARPA should be able to deliver the mail directly, but that
  3201.       A.ISI.ARPA is willing to accept the mail for probable forwarding.
  3202.  
  3203.       Using this system, an organization could implement a system that
  3204.       uses organization names for global parts, rather than the usual
  3205.       host names, but all mail for the organization would be routed the
  3206.       same, regardless of its local part.  Hence and organization with
  3207.       many hosts would expect to see many forwarding operations.
  3208.  
  3209.    Mailbox binding
  3210.  
  3211.       In mailbox binding, the mailer uses the entire mail destination
  3212.       specification to construct a domain name.  The encoded domain name
  3213.       for the mailbox is used as the QNAME field in a QTYPE=MAILB query.
  3214.  
  3215.       Several outcomes are possible for this query:
  3216.  
  3217.       1. The query can return a name error indicating that the mailbox
  3218.          does not exist as a domain name.
  3219.  
  3220.          In the long term this would indicate that the specified mailbox
  3221.          doesn't exist.  However, until the use of mailbox binding is
  3222.          universal, this error condition should be interpreted to mean
  3223.          that the organization identified by the global part does not
  3224.          support mailbox binding.  The appropriate procedure is to
  3225.          revert to agent binding at this point.
  3226.  
  3227.       2. The query can return a Mail Rename (MR) RR.
  3228.  
  3229.          The MR RR carries new mailbox specification in its RDATA field.
  3230.          The mailer should replace the old mailbox with the new one and
  3231.          retry the operation.
  3232.  
  3233.       3. The query can return a MB RR.
  3234.  
  3235.          The MB RR carries a domain name for a host in its RDATA field.
  3236.          The mailer should deliver the message to that host via whatever
  3237.          protocol is applicable, e.g. SMTP.
  3238.  
  3239.       4. The query can return one or more Mail Group (MG) RRs.
  3240.  
  3241.          This condition means that the mailbox was actually a mailing
  3242.          list or mail group, rather than a single mailbox.  Each MG RR
  3243.          has a RDATA field that identifies a mailbox that is a member of
  3244.  
  3245.  
  3246.  
  3247. Mockapetris                                                    [Page 54]
  3248.  
  3249.  
  3250. RFC 883                                                    November 1983
  3251.                          Domain Names - Implementation and Specification
  3252.  
  3253.  
  3254.          the group.  The mailer should deliver a copy of the message to
  3255.          each member.
  3256.  
  3257.       5. The query can return a MB RR as well as one or more MG RRs.
  3258.  
  3259.          This condition means the the mailbox was actually a mailing
  3260.          list.  The mailer can either deliver the message to the host
  3261.          specified by the MB RR, which will in turn do the delivery to
  3262.          all members, or the mailer can use the MG RRs to do the
  3263.          expansion itself.
  3264.  
  3265.       In any of these cases, the response may include a Mail Information
  3266.       (MINFO) RR.  This RR is usually associated with a mail group, but
  3267.       is legal with a MB.  The MINFO RR identifies two mailboxes.  One
  3268.       of these identifies a responsible person for the original mailbox
  3269.       name.  This mailbox should be used for requests to be added to a
  3270.       mail group, etc.  The second mailbox name in the MINFO RR
  3271.       identifies a mailbox that should receive error messages for mail
  3272.       failures.  This is particularly appropriate for mailing lists when
  3273.       errors in member names should be reported to a person other than
  3274.       the one who sends a message to the list.  New fields may be added
  3275.       to this RR in the future.
  3276.  
  3277.  
  3278.  
  3279.  
  3280.  
  3281.  
  3282.  
  3283.  
  3284.  
  3285.  
  3286.  
  3287.  
  3288.  
  3289.  
  3290.  
  3291.  
  3292.  
  3293.  
  3294.  
  3295.  
  3296.  
  3297.  
  3298.  
  3299.  
  3300.  
  3301.  
  3302.  
  3303.  
  3304.  
  3305. Mockapetris                                                    [Page 55]
  3306.  
  3307.  
  3308. RFC 883                                                    November 1983
  3309.                          Domain Names - Implementation and Specification
  3310.  
  3311.  
  3312. Appendix 1 - Domain Name Syntax Specification
  3313.  
  3314.    The preferred syntax of domain names is given by the following BNF
  3315.    rules.  Adherence to this syntax will result in fewer problems with
  3316.    many applications that use domain names (e.g., mail, TELNET).  Note
  3317.    that some applications use domain names containing binary information
  3318.    and hence do not follow this syntax.
  3319.  
  3320.       <domain> ::=  <subdomain> | " "
  3321.  
  3322.       <subdomain> ::=  <label> | <subdomain> "." <label>
  3323.  
  3324.       <label> ::= <letter> [ [ <ldh-str> ] <let-dig> ]
  3325.  
  3326.       <ldh-str> ::= <let-dig-hyp> | <let-dig-hyp> <ldh-str>
  3327.  
  3328.       <let-dig-hyp> ::= <let-dig> | "-"
  3329.  
  3330.       <let-dig> ::= <letter> | <digit>
  3331.  
  3332.       <letter> ::= any one of the 52 alphabetic characters A through Z
  3333.       in upper case and a through z in lower case
  3334.  
  3335.       <digit> ::= any one of the ten digits 0 through 9
  3336.  
  3337.    Note that while upper and lower case letters are allowed in domain
  3338.    names no significance is attached to the case.  That is, two names
  3339.    with the same spelling but different case are to be treated as if
  3340.    identical.
  3341.  
  3342.    The labels must follow the rules for ARPANET host names.  They must
  3343.    start with a letter, end with a letter or digit, and have as interior
  3344.    characters only letters, digits, and hyphen.  There are also some
  3345.    restrictions on the length.  Labels must be 63 characters or less.
  3346.  
  3347.    For example, the following strings identify hosts in the ARPA
  3348.    Internet:
  3349.  
  3350.       F.ISI.ARPA     LINKABIT-DCN5.ARPA     UCL-TAC.ARPA
  3351.  
  3352.  
  3353.  
  3354.  
  3355.  
  3356.  
  3357.  
  3358.  
  3359.  
  3360.  
  3361.  
  3362.  
  3363. Mockapetris                                                    [Page 56]
  3364.  
  3365.  
  3366. RFC 883                                                    November 1983
  3367.                          Domain Names - Implementation and Specification
  3368.  
  3369.  
  3370. Appendix 2 - Field formats and encodings
  3371.  
  3372.            +-----------------------------------------------+
  3373.            |                                               |
  3374.            |             *****  WARNING  *****             |
  3375.            |                                               |
  3376.            |  The following formats are preliminary and    |
  3377.            | are included for purposes of explanation only.|
  3378.            | In particular, new RR types will be added,    |
  3379.            | and the size, position, and encoding of       |
  3380.            | fields are subject to change.                 |
  3381.            |                                               |
  3382.            +-----------------------------------------------+
  3383.  
  3384.    TYPE values
  3385.  
  3386.       TYPE fields are used in resource records.  Note that these types
  3387.       are not the same as the QTYPE fields used in queries, although the
  3388.       functions are often similar.
  3389.  
  3390.       TYPE value meaning
  3391.  
  3392.       A      1   a host address
  3393.  
  3394.       NS     2   an authoritative name server
  3395.  
  3396.       MD     3   a mail destination
  3397.  
  3398.       MF     4   a mail forwarder
  3399.  
  3400.       CNAME  5   the canonical name for an alias
  3401.  
  3402.       SOA    6   marks the start of a zone of authority
  3403.  
  3404.       MB     7   a mailbox domain name
  3405.  
  3406.       MG     8   a mail group member
  3407.  
  3408.       MR     9   a mail rename domain name
  3409.  
  3410.       NULL  10   a null RR
  3411.  
  3412.       WKS   11   a well known service description
  3413.  
  3414.       PTR   12   a domain name pointer
  3415.  
  3416.       HINFO 13   host information
  3417.  
  3418.       MINFO 14   mailbox or mail list information
  3419.  
  3420.  
  3421. Mockapetris                                                    [Page 57]
  3422.  
  3423.  
  3424. RFC 883                                                    November 1983
  3425.                          Domain Names - Implementation and Specification
  3426.  
  3427.  
  3428.    QTYPE values
  3429.  
  3430.       QTYPE fields appear in the question part of a query.  They include
  3431.       the values of TYPE with the following additions:
  3432.  
  3433.       AXFR   252 A request for a transfer of an entire zone of authority
  3434.  
  3435.       MAILB  253 A request for mailbox-related records (MB, MG or MR)
  3436.  
  3437.       MAILA  254 A request for mail agent RRs (MD and MF)
  3438.  
  3439.       *      255 A request for all records
  3440.  
  3441.    CLASS values
  3442.  
  3443.       CLASS fields appear in resource records
  3444.  
  3445.       CLASS value meaning
  3446.  
  3447.       IN      1   the ARPA Internet
  3448.  
  3449.       CS      2   the computer science network (CSNET)
  3450.  
  3451.    QCLASS values
  3452.  
  3453.       QCLASS fields appear in the question section of a query.  They
  3454.       include the values of CLASS with the following additions:
  3455.  
  3456.       *        255 any class
  3457.  
  3458.  
  3459.  
  3460.  
  3461.  
  3462.  
  3463.  
  3464.  
  3465.  
  3466.  
  3467.  
  3468.  
  3469.  
  3470.  
  3471.  
  3472.  
  3473.  
  3474.  
  3475.  
  3476.  
  3477.  
  3478.  
  3479. Mockapetris                                                    [Page 58]
  3480.  
  3481.  
  3482. RFC 883                                                    November 1983
  3483.                          Domain Names - Implementation and Specification
  3484.  
  3485.  
  3486.    Standard resource record formats
  3487.  
  3488.       All RRs have the same top level format shown below:
  3489.  
  3490.                                            1  1  1  1  1  1 
  3491.              0  1  2  3  4  5  6  7  8  9  0  1  2  3  4  5 
  3492.            +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  3493.            |                                               |
  3494.            /                                               /
  3495.            /                      NAME                     /
  3496.            |                                               |
  3497.            +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  3498.            |                      TYPE                     |
  3499.            +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  3500.            |                     CLASS                     |
  3501.            +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  3502.            |                      TTL                      |
  3503.            +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  3504.            |                   RDLENGTH                    |
  3505.            +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--|
  3506.            /                     RDATA                     /
  3507.            /                                               /
  3508.            +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  3509.  
  3510.          where:
  3511.  
  3512.          NAME    - a compressed domain name to which this resource
  3513.                    record pertains.
  3514.  
  3515.          TYPE    - two octets containing one of the RR type codes
  3516.                    defined in Appendix 2.  This field specifies the
  3517.                    meaning of the data in the RDATA field.
  3518.  
  3519.          CLASS   - two octets which specifies the class of the data in
  3520.                    the RDATA field.
  3521.  
  3522.          TTL     - a 16 bit signed integer that specifies the time
  3523.                    interval that the resource record may be cached
  3524.                    before the source of the information should again be
  3525.                    consulted.  Zero values are interpreted to mean that
  3526.                    the RR can only be used for the transaction in
  3527.                    progress, and should not be cached.  For example, SOA
  3528.                    records are always distributed with a zero TTL to
  3529.                    prohibit caching.  Zero values can also be used for
  3530.                    extremely volatile data.
  3531.  
  3532.          RDLENGTH- an unsigned 16 bit integer that specifies the length
  3533.                    in octets of the RDATA field.
  3534.  
  3535.  
  3536.  
  3537. Mockapetris                                                    [Page 59]
  3538.  
  3539.  
  3540. RFC 883                                                    November 1983
  3541.                          Domain Names - Implementation and Specification
  3542.  
  3543.  
  3544.          RDATA  - a variable length string of octets that describes the
  3545.                    resource.  The format of this information varies
  3546.                    according to the TYPE and CLASS of the resource
  3547.                    record.
  3548.  
  3549.       The format of the RDATA field is standard for all classes for the
  3550.       RR types NS, MD, MF, CNAME, SOA, MB, MG, MR, PTR, HINFO, MINFO and
  3551.       NULL.  These formats are shown below together with the appropriate
  3552.       additional section RR processing.
  3553.  
  3554.       CNAME RDATA format
  3555.  
  3556.            +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  3557.            /                     CNAME                     /
  3558.            /                                               /
  3559.            +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  3560.  
  3561.          where:
  3562.  
  3563.          CNAME   - A compressed domain name which specifies that the
  3564.                    domain name of the RR is an alias for a canonical
  3565.                    name specified by CNAME.
  3566.  
  3567.          CNAME records cause no additional section processing.  The
  3568.          RDATA section of a CNAME line in a master file is a standard
  3569.          printed domain name.
  3570.  
  3571.       HINFO RDATA format
  3572.  
  3573.            +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  3574.            /                      CPU                      /
  3575.            +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  3576.            /                       OS                      /
  3577.            +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  3578.  
  3579.          where:
  3580.  
  3581.          CPU   - A character string which specifies the CPU type.  The
  3582.                    character string is represented as a single octet
  3583.                    length followed by that number of characters.    The
  3584.                    following standard strings are defined:.
  3585.  
  3586.             PDP-11/70   C/30        C/70        VAX-11/780   
  3587.             H-316       H-516       DEC-2060    DEC-1090T    
  3588.             ALTO        IBM-PC      IBM-PC/XT   PERQ         
  3589.             IBM-360/67  IBM-370/145                          
  3590.  
  3591.          OS   - A character string which specifies the operating system
  3592.          type.  The character string is represented as a single octet
  3593.  
  3594.  
  3595. Mockapetris                                                    [Page 60]
  3596.  
  3597.  
  3598. RFC 883                                                    November 1983
  3599.                          Domain Names - Implementation and Specification
  3600.  
  3601.  
  3602.          length followed by that number of characters.    The following
  3603.          standard types are defined:.
  3604.  
  3605.             ASP         AUGUST      BKY         CCP          
  3606.             DOS/360     ELF         EPOS        EXEC-8       
  3607.             GCOS        GPOS        ITS         INTERCOM     
  3608.             KRONOS      MCP         MOS         MPX-RT       
  3609.             MULTICS     MVT         NOS         NOS/BE       
  3610.             OS/MVS      OS/MVT      RIG         RSX11        
  3611.             RSX11M      RT11        SCOPE       SIGNAL       
  3612.             SINTRAN     TENEX       TOPS10      TOPS20       
  3613.             TSS         UNIX        VM/370      VM/CMS       
  3614.             VMS         WAITS                                
  3615.  
  3616.          HINFO records cause no additional section processing.
  3617.  
  3618.          HINFO records are used to acquire general information about a
  3619.          host.  The main use is for protocols such as FTP that can use
  3620.          special procedures when talking between machines or operating
  3621.          systems of the same type.
  3622.  
  3623.       MB RDATA format
  3624.  
  3625.            +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  3626.            /                   MADNAME                     /
  3627.            /                                               /
  3628.            +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  3629.  
  3630.          where:
  3631.  
  3632.          MADNAME - A compressed domain name which specifies a host which
  3633.                    has the specified mailbox.
  3634.  
  3635.          MB records cause additional section processing which looks up
  3636.          an A type record corresponding to MADNAME.  The RDATA section
  3637.          of a MB line in a master file is a standard printed domain
  3638.          name.
  3639.  
  3640.       MD RDATA format
  3641.  
  3642.            +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  3643.            /                   MADNAME                     /
  3644.            /                                               /
  3645.            +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  3646.  
  3647.          where:
  3648.  
  3649.          MADNAME - A compressed domain name which specifies a host which
  3650.  
  3651.  
  3652.  
  3653. Mockapetris                                                    [Page 61]
  3654.  
  3655.  
  3656. RFC 883                                                    November 1983
  3657.                          Domain Names - Implementation and Specification
  3658.  
  3659.  
  3660.                    has a mail agent for the domain which should be able
  3661.                    to deliver mail for the domain.
  3662.  
  3663.          MD records cause additional section processing which looks up
  3664.          an A type record corresponding to MADNAME.  The RDATA section
  3665.          of a MD line in a master file is a standard printed domain
  3666.          name.
  3667.  
  3668.       MF RDATA format
  3669.  
  3670.            +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  3671.            /                   MADNAME                     /
  3672.            /                                               /
  3673.            +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  3674.  
  3675.          where:
  3676.  
  3677.          MADNAME - A compressed domain name which specifies a host which
  3678.                    has a mail agent for the domain which will accept
  3679.                    mail for forwarding to the domain.
  3680.  
  3681.          MF records cause additional section processing which looks up
  3682.          an A type record corresponding to MADNAME.  The RDATA section
  3683.          of a MF line in a master file is a standard printed domain
  3684.          name.
  3685.  
  3686.       MG RDATA format
  3687.  
  3688.            +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  3689.            /                   MGMNAME                     /
  3690.            /                                               /
  3691.            +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  3692.  
  3693.          where:
  3694.  
  3695.          MGMNAME - A compressed domain name which specifies a mailbox
  3696.                    which is a member of the mail group specified by the
  3697.                    domain name.
  3698.  
  3699.          MF records cause no additional section processing.  The RDATA
  3700.          section of a MF line in a master file is a standard printed
  3701.          domain name.
  3702.  
  3703.  
  3704.  
  3705.  
  3706.  
  3707.  
  3708.  
  3709.  
  3710.  
  3711. Mockapetris                                                    [Page 62]
  3712.  
  3713.  
  3714. RFC 883                                                    November 1983
  3715.                          Domain Names - Implementation and Specification
  3716.  
  3717.  
  3718.       MINFO RDATA format
  3719.  
  3720.            +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  3721.            /                    RMAILBX                    /
  3722.            +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  3723.            /                    EMAILBX                    /
  3724.            +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  3725.  
  3726.          where:
  3727.  
  3728.          RMAILBX - A compressed domain name which specifies a mailbox
  3729.                    which is responsible for the mailing list or mailbox.
  3730.                    If this domain name names the root, the owner of the
  3731.                    MINFO RR is responsible for itself.  Note that many
  3732.                    existing mailing lists use a mailbox X-request for
  3733.                    the RMAILBX field of mailing list X, e.g.
  3734.                    Msgroup-request for Msgroup.  This field provides a
  3735.                    more general mechanism.
  3736.  
  3737.          EMAILBX - A compressed domain name which specifies a mailbox
  3738.                    which is to receive error messages related to the
  3739.                    mailing list or mailbox specified by the owner of the
  3740.                    MINFO RR (similar to the ERRORS-TO: field which has
  3741.                    been proposed).  If this domain name names the root,
  3742.                    errors should be returned to the sender of the
  3743.                    message.
  3744.  
  3745.          MINFO records cause no additional section processing.  Although
  3746.          these records can be associated with a simple mailbox, they are
  3747.          usually used with a mailing list.  The MINFO section of a MF
  3748.          line in a master file is a standard printed domain name.
  3749.  
  3750.       MR RDATA format
  3751.  
  3752.            +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  3753.            /                   NEWNAME                     /
  3754.            /                                               /
  3755.            +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  3756.  
  3757.          where:
  3758.  
  3759.          NEWNAME - A compressed domain name which specifies a mailbox
  3760.                    which is the proper rename of the specified mailbox.
  3761.  
  3762.          MR records cause no additional section processing.  The RDATA
  3763.          section of a MR line in a master file is a standard printed
  3764.          domain name.
  3765.  
  3766.  
  3767.  
  3768.  
  3769. Mockapetris                                                    [Page 63]
  3770.  
  3771.  
  3772. RFC 883                                                    November 1983
  3773.                          Domain Names - Implementation and Specification
  3774.  
  3775.  
  3776.       NULL RDATA format
  3777.  
  3778.            +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  3779.            /                  <anything>                   /
  3780.            /                                               /
  3781.            +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  3782.  
  3783.          Anything at all may be in the RDATA field so long as it is
  3784.          65535 octets or less.
  3785.  
  3786.          NULL records cause no additional section processing.  NULL RRs
  3787.          are not allowed in master files.
  3788.  
  3789.       NS RDATA format
  3790.  
  3791.            +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  3792.            /                   NSDNAME                     /
  3793.            /                                               /
  3794.            +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  3795.  
  3796.          where:
  3797.  
  3798.          NSDNAME - A compressed domain name which specifies a host which
  3799.                    has a name server for the domain.
  3800.  
  3801.          NS records cause both the usual additional section processing
  3802.          to locate a type A record, and a special search of the zone in
  3803.          which they reside.  The RDATA section of a NS line in a master
  3804.          file is a standard printed domain name.
  3805.  
  3806.       PTR RDATA format
  3807.  
  3808.            +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  3809.            /                   PTRDNAME                    /
  3810.            +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  3811.  
  3812.          where:
  3813.  
  3814.          PTRDNAME - A compressed domain name which points to some
  3815.                    location in the domain name space.
  3816.  
  3817.          PTR records cause no additional section processing.  These RRs
  3818.          are used in special domains to point to some other location in
  3819.          the domain space.  These records are simple data, and don't
  3820.          imply any special processing similar to that performed by
  3821.          CNAME, which identifies aliases.  Appendix 3 discusses the use
  3822.          of these records in the ARPA Internet address domain.
  3823.  
  3824.  
  3825.  
  3826.  
  3827. Mockapetris                                                    [Page 64]
  3828.  
  3829.  
  3830. RFC 883                                                    November 1983
  3831.                          Domain Names - Implementation and Specification
  3832.  
  3833.  
  3834.       SOA RDATA format
  3835.  
  3836.            +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  3837.            /                     MNAME                     /
  3838.            /                                               /
  3839.            +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  3840.            /                     RNAME                     /
  3841.            +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  3842.            |                    SERIAL                     |
  3843.            +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  3844.            |                    REFRESH                    |
  3845.            |                                               |
  3846.            +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  3847.            |                     RETRY                     |
  3848.            |                                               |
  3849.            +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  3850.            |                    EXPIRE                     |
  3851.            |                                               |
  3852.            +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  3853.            |                    MINIMUM                    |
  3854.            +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  3855.  
  3856.          where:
  3857.  
  3858.          MNAME   - The domain name of the name server that was the
  3859.                    original source of data for this zone.
  3860.  
  3861.          RNAME   - A domain name which specifies the mailbox of the
  3862.                    person responsible for this zone.
  3863.  
  3864.          SERIAL  - The unsigned 16 bit version number of the of the
  3865.                    original copy of the zone.  This value wraps and
  3866.                    should be compared using sequence space arithmetic.
  3867.  
  3868.          REFRESH - The unsigned 32 bit time interval before the zone
  3869.                    should be refreshed.
  3870.  
  3871.          RETRY   - The unsigned 32 bit time interval that should elapse
  3872.                    before a failed refresh should be retried.
  3873.  
  3874.          EXPIRE  - A 32 bit time value that specifies the upper limit on
  3875.                    the time interval that can elapse before the zone is
  3876.                    no longer authoritative.
  3877.  
  3878.          MINIMUM - The unsigned 16 bit minimum TTL field that should be
  3879.                    exported with any RR from this zone (other than the
  3880.                    SOA itself).
  3881.  
  3882.          SOA records cause no additional section processing.  The RDATA
  3883.  
  3884.  
  3885. Mockapetris                                                    [Page 65]
  3886.  
  3887.  
  3888. RFC 883                                                    November 1983
  3889.                          Domain Names - Implementation and Specification
  3890.  
  3891.  
  3892.          section of a SOA line in a master file is a standard printed
  3893.          domain name for MNAME, a standard X@Y mailbox specification for
  3894.          RNAME, and decimal numbers for the remaining parameters.
  3895.  
  3896.          All times are in units of seconds.
  3897.  
  3898.          Most of these fields are pertinent only for name server
  3899.          maintenance operations.  However, MINIMUM is used in all query
  3900.          operations that retrieve RRs from a zone.  Whenever a RR is
  3901.          sent in a response to a query, the TTL field is set to the
  3902.          maximum of the TTL field from the RR and the MINIMUM field in
  3903.          the appropriate SOA.  Thus MINIMUM is a lower bound on the TTL
  3904.          field for all RRs in a zone.  RRs in a zone are never discarded
  3905.          due to timeout unless the whole zone is deleted.  This prevents
  3906.          partial copies of zones.
  3907.  
  3908.  
  3909.  
  3910.  
  3911.  
  3912.  
  3913.  
  3914.  
  3915.  
  3916.  
  3917.  
  3918.  
  3919.  
  3920.  
  3921.  
  3922.  
  3923.  
  3924.  
  3925.  
  3926.  
  3927.  
  3928.  
  3929.  
  3930.  
  3931.  
  3932.  
  3933.  
  3934.  
  3935.  
  3936.  
  3937.  
  3938.  
  3939.  
  3940.  
  3941.  
  3942.  
  3943. Mockapetris                                                    [Page 66]
  3944.  
  3945.  
  3946. RFC 883                                                    November 1983
  3947.                          Domain Names - Implementation and Specification
  3948.  
  3949.  
  3950. Appendix 3 - Internet specific field formats and operations
  3951.  
  3952.    Message transport
  3953.  
  3954.       The Internet supports name server access using TCP [10] on server
  3955.       port 53 (decimal) as well as datagram access using UDP [11] on UDP
  3956.       port 53 (decimal).  Messages sent over TCP virtual circuits are
  3957.       preceded by an unsigned 16 bit length field which describes the
  3958.       length of the message, excluding the length field itself.
  3959.  
  3960.            +-----------------------------------------------+
  3961.            |                                               |
  3962.            |             *****  WARNING  *****             |
  3963.            |                                               |
  3964.            |  The following formats are preliminary and    |
  3965.            | are included for purposes of explanation only.|
  3966.            | In particular, new RR types will be added,    |
  3967.            | and the size, position, and encoding of       |
  3968.            | fields are subject to change.                 |
  3969.            |                                               |
  3970.            +-----------------------------------------------+
  3971.  
  3972.    A RDATA format
  3973.  
  3974.            +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  3975.            |                    ADDRESS                    |
  3976.            +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  3977.  
  3978.       where:
  3979.  
  3980.       ADDRESS   - A 32 bit ARPA internet address
  3981.  
  3982.       Hosts that have multiple ARPA Internet addresses will have
  3983.       multiple A records.
  3984.  
  3985.       A records cause no additional section processing.  The RDATA
  3986.       section of an A line in a master file is an Internet address
  3987.       expressed as four decimal numbers separated by dots without any
  3988.       imbedded spaces (e.g., "10.2.0.52" or "192.0.5.6").
  3989.  
  3990.  
  3991.  
  3992.  
  3993.  
  3994.  
  3995.  
  3996.  
  3997.  
  3998.  
  3999.  
  4000.  
  4001. Mockapetris                                                    [Page 67]
  4002.  
  4003.  
  4004. RFC 883                                                    November 1983
  4005.                          Domain Names - Implementation and Specification
  4006.  
  4007.  
  4008.    WKS RDATA format
  4009.  
  4010.            +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  4011.            |                    ADDRESS                    |
  4012.            +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  4013.            |       PROTOCOL        |                       |
  4014.            +--+--+--+--+--+--+--+--+                       |
  4015.            |                                               |
  4016.            /                   <BIT MAP>                   /
  4017.            /                                               /
  4018.            +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  4019.  
  4020.       where:
  4021.  
  4022.       ADDRESS   - An 32 bit ARPA Internet address
  4023.  
  4024.       PROTOCOL  - An 8 bit IP protocol number
  4025.  
  4026.       <BIT MAP> - A variable length bit map.  The bit map must be a
  4027.                 multiple of 8 bits long.
  4028.  
  4029.       The WKS record is used to describe the well known services
  4030.       supported by a particular protocol on a particular internet
  4031.       address.  The PROTOCOL field specifies an IP protocol number, and
  4032.       the bit map has one bit per port of the specified protocol.  The
  4033.       first bit corresponds to port 0, the second to port 1, etc.  If
  4034.       less than 256 bits are present, the remainder are assumed to be
  4035.       zero.  The appropriate values for ports and protocols are
  4036.       specified in [13].
  4037.  
  4038.       For example, if PROTOCOL=TCP (6), the 26th bit corresponds to TCP
  4039.       port 25 (SMTP).  If this bit is set, a SMTP server should be
  4040.       listening on TCP port 25; if zero, SMTP service is not supported
  4041.       on the specified address.
  4042.  
  4043.       The anticipated use of WKS RRs is to provide availability
  4044.       information for servers for TCP and UDP.  If a server supports
  4045.       both TCP and UDP, or has multiple Internet addresses, then
  4046.       multiple WKS RRs are used.
  4047.  
  4048.       WKS RRs cause no additional section processing.  The RDATA section
  4049.       of a WKS record consists of a decimal protocol number followed by
  4050.       mnemonic identifiers which specify bits to be set to 1.
  4051.  
  4052.    IN-ADDR special domain
  4053.  
  4054.       The ARPA internet uses a special domain to support gateway
  4055.       location and ARPA Internet address to host mapping.  The intent of
  4056.       this domain is to allow queries to locate all gateways on a
  4057.  
  4058.  
  4059. Mockapetris                                                    [Page 68]
  4060.  
  4061.  
  4062. RFC 883                                                    November 1983
  4063.                          Domain Names - Implementation and Specification
  4064.  
  4065.  
  4066.       particular network in the ARPA Internet, and also to provide a
  4067.       guaranteed method to perform host address to host name mapping.
  4068.  
  4069.       Note that both of these services are similar to functions that
  4070.       could be performed by inverse queries; the difference is that this
  4071.       part of the domain name space is structured according to address,
  4072.       and hence can guarantee that the appropriate data can be located
  4073.       without an exhaustive search of the domain space.  It is
  4074.       anticipated that the special tree will be used by ARPA Internet
  4075.       resolvers for all gateway location services, but that address to
  4076.       name resolution will be performed by first trying the inverse
  4077.       query on the local name server database followed by a query in the
  4078.       special space if the inverse query fails.
  4079.  
  4080.       The domain is a top level domain called IN-ADDR whose substructure
  4081.       follows the ARPA Internet addressing structure.
  4082.  
  4083.       Domain names in the IN-ADDR domain are defined to have up to four
  4084.       labels in addition to the IN-ADDR label.  Each label is a
  4085.       character string which expresses a decimal value in the range
  4086.       0-255 (with leading zeros omitted except in the case of a zero
  4087.       octet which is represented by a single zero).  These labels
  4088.       correspond to the 4 octets of an ARPA Internet address.
  4089.  
  4090.       Host addresses are represented by domain names that have all four
  4091.       labels specified.  Thus data for ARPA Internet address 10.2.0.52
  4092.       is located at domain name 52.0.2.10.IN-ADDR.  The reversal, though
  4093.       awkward to read,  allows zones to follow the natural grouping of
  4094.       hosts within networks.  For example, 10.IN-ADDR can be a zone
  4095.       containing data for the ARPANET, while 26.IN-ADDR can be a
  4096.       separate zone for MILNET.  Address nodes are used to hold pointers
  4097.       to primary host names in the normal domain space.
  4098.  
  4099.       Network addresses correspond to some of the non-terminal nodes in
  4100.       the IN-ADDR tree, since ARPA Internet network numbers are either
  4101.       1, 2, or 3 octets.  Network nodes are used to hold pointers to
  4102.       primary host names (which happen to be gateways) in the normal
  4103.       domain space.  Since a gateway is, by definition, on more than one
  4104.       network, it will typically have two or more network nodes that
  4105.       point at the gateway.  Gateways will also have host level pointers
  4106.       at their fully qualified addresses.
  4107.  
  4108.       Both the gateway pointers at network nodes and the normal host
  4109.       pointers at full address nodes use the PTR RR to point back to the
  4110.       primary domain names of the corresponding hosts.
  4111.  
  4112.       For example, part of the IN-ADDR domain will contain information
  4113.       about the ISI to MILNET and MIT gateways, and hosts F.ISI.ARPA and
  4114.       MULTICS.MIT.ARPA.  Assuming that ISI gateway has addresses
  4115.  
  4116.  
  4117. Mockapetris                                                    [Page 69]
  4118.  
  4119.  
  4120. RFC 883                                                    November 1983
  4121.                          Domain Names - Implementation and Specification
  4122.  
  4123.  
  4124.       10.2.0.22 and 26.0.0.103, and a name MILNET-GW.ISI.ARPA, and the
  4125.       MIT gateway has addresses 10.0.0.77 and 18.10.0.4 and a name
  4126.       GW.MIT.ARPA, the domain database would contain:
  4127.  
  4128.            10.IN-ADDR           PTR  IN MILNET-GW.ISI.ARPA   
  4129.            10.IN-ADDR           PTR  IN GW.MIT.ARPA          
  4130.            18.IN-ADDR           PTR  IN GW.MIT.ARPA          
  4131.            26.IN-ADDR           PTR  IN MILNET-GW.ISI.ARPA   
  4132.            22.0.2.10.IN-ADDR    PTR  IN MILNET-GW.ISI.ARPA   
  4133.            103.0.0.26.IN-ADDR   PTR  IN MILNET-GW.ISI.ARPA   
  4134.            77.0.0.10.IN-ADDR    PTR  IN GW.MIT.ARPA          
  4135.            4.0.10.18.IN-ADDR    PTR  IN GW.MIT.ARPA          
  4136.            52.0.2.10.IN-ADDR    PTR  IN F.ISI.ARPA           
  4137.            6.0.0.10.IN-ADDR     PTR  IN MULTICS.MIT.ARPA     
  4138.  
  4139.       Thus a program which wanted to locate gateways on net 10 would
  4140.       originate a query of the form QTYPE=PTR, QCLASS=IN,
  4141.       QNAME=10.IN-ADDR.  It would receive two RRs in response:
  4142.  
  4143.            10.IN-ADDR           PTR  IN MILNET-GW.ISI.ARPA   
  4144.            10.IN-ADDR           PTR  IN GW.MIT.ARPA          
  4145.  
  4146.       The program could then originate QTYPE=A, QCLASS=IN queries for
  4147.       MILNET-GW.ISI.ARPA and GW.MIT.ARPA to discover the ARPA Internet
  4148.       addresses of these gateways.
  4149.  
  4150.       A resolver which wanted to find the host name corresponding to
  4151.       ARPA Internet host address 10.0.0.6 might first try an inverse
  4152.       query on the local name server, but find that this information
  4153.       wasn't available.  It could then try a query of the form
  4154.       QTYPE=PTR, QCLASS=IN, QNAME=6.0.0.10.IN-ADDR, and would receive:
  4155.  
  4156.            6.0.0.10.IN-ADDR     PTR  IN MULTICS.MIT.ARPA     
  4157.  
  4158.       Several cautions apply to the use of these services:
  4159.  
  4160.          Since the IN-ADDR special domain and the normal domain for a
  4161.          particular host or gateway will be in different zones, the
  4162.          possibility exists that that the data may be inconsistent.
  4163.  
  4164.          Gateways will often have two names in separate domains, only
  4165.          one of which can be primary.
  4166.  
  4167.          Systems that use the domain database to initialize their
  4168.          routing tables must start with enough gateway information to
  4169.          guarantee that they can access the appropriate name server.
  4170.  
  4171.          The gateway data only reflects the existence of a gateway in a
  4172.  
  4173.  
  4174.  
  4175. Mockapetris                                                    [Page 70]
  4176.  
  4177.  
  4178. RFC 883                                                    November 1983
  4179.                          Domain Names - Implementation and Specification
  4180.  
  4181.  
  4182.          manner equivalent to the current HOSTS.TXT file.  It doesn't
  4183.          replace the dynamic availability information from GGP or EGP.
  4184.  
  4185.  
  4186.  
  4187.  
  4188.  
  4189.  
  4190.  
  4191.  
  4192.  
  4193.  
  4194.  
  4195.  
  4196.  
  4197.  
  4198.  
  4199.  
  4200.  
  4201.  
  4202.  
  4203.  
  4204.  
  4205.  
  4206.  
  4207.  
  4208.  
  4209.  
  4210.  
  4211.  
  4212.  
  4213.  
  4214.  
  4215.  
  4216.  
  4217.  
  4218.  
  4219.  
  4220.  
  4221.  
  4222.  
  4223.  
  4224.  
  4225.  
  4226.  
  4227.  
  4228.  
  4229.  
  4230.  
  4231.  
  4232.  
  4233. Mockapetris                                                    [Page 71]
  4234.  
  4235.  
  4236. RFC 883                                                    November 1983
  4237.                          Domain Names - Implementation and Specification
  4238.  
  4239.  
  4240. REFERENCES and BIBLIOGRAPHY
  4241.  
  4242.    [1]  E. Feinler, K. Harrenstien, Z. Su, and V. White, "DOD Internet
  4243.         Host Table Specification", RFC 810, Network Information Center,
  4244.         SRI International, March 1982.
  4245.  
  4246.    [2]  J. Postel, "Computer Mail Meeting Notes", RFC 805,
  4247.         USC/Information Sciences Institute, February 1982.
  4248.  
  4249.    [3]  Z. Su, and J. Postel, "The Domain Naming Convention for Internet
  4250.         User Applications", RFC 819, Network Information Center, SRI
  4251.         International, August 1982.
  4252.  
  4253.    [4]  Z. Su, "A Distributed System for Internet Name Service",
  4254.         RFC 830, Network Information Center, SRI International,
  4255.         October 1982.
  4256.  
  4257.    [5]  K. Harrenstien, and V. White, "NICNAME/WHOIS", RFC 812, Network
  4258.         Information Center, SRI International, March 1982.
  4259.  
  4260.    [6]   M. Solomon, L. Landweber, and D. Neuhengen, "The CSNET Name
  4261.         Server", Computer Networks, vol 6, nr 3, July 1982.
  4262.  
  4263.    [7]  K. Harrenstien, "NAME/FINGER", RFC 742, Network Information
  4264.         Center, SRI International, December 1977.
  4265.  
  4266.    [8]  J. Postel, "Internet Name Server", IEN 116, USC/Information
  4267.         Sciences Institute, August 1979.
  4268.  
  4269.    [9]  K. Harrenstien, V. White, and E. Feinler, "Hostnames Server",
  4270.         RFC 811, Network Information Center, SRI International,
  4271.         March 1982.
  4272.  
  4273.    [10] J. Postel, "Transmission Control Protocol", RFC 793,
  4274.         USC/Information Sciences Institute, September 1981.
  4275.  
  4276.    [11] J. Postel, "User Datagram Protocol", RFC 768, USC/Information
  4277.         Sciences Institute, August 1980.
  4278.  
  4279.    [12] J. Postel, "Simple Mail Transfer Protocol", RFC 821,
  4280.         USC/Information Sciences Institute, August 1980.
  4281.  
  4282.    [13] J. Reynolds, and J. Postel, "Assigned Numbers", RFC 870,
  4283.         USC/Information Sciences Institute, October 1983.
  4284.  
  4285.    [14] P. Mockapetris, "Domain names - Concepts and Facilities,"
  4286.         RFC 882, USC/Information Sciences Institute, November 1983.
  4287.  
  4288.    
  4289.  
  4290.  
  4291. Mockapetris                                                    [Page 72]
  4292.  
  4293.  
  4294. RFC 883                                                    November 1983
  4295.                          Domain Names - Implementation and Specification
  4296.  
  4297.  
  4298. INDEX
  4299.     
  4300.    * usage........................................................37, 57
  4301.     
  4302.    A RDATA format.....................................................67
  4303.     
  4304.    byte order..........................................................6
  4305.     
  4306.    cache queue....................................................35, 42
  4307.    character case..................................................7, 31
  4308.    CLASS...........................................................9, 58
  4309.    completion.........................................................19
  4310.    compression........................................................31
  4311.    CNAME RR...........................................................60
  4312.     
  4313.    header format......................................................26
  4314.    HINFO RR...........................................................60
  4315.     
  4316.    include files......................................................43
  4317.    inverse queries....................................................17
  4318.     
  4319.    mailbox names......................................................53
  4320.    master files.......................................................43
  4321.    MB RR..............................................................61
  4322.    MD RR..............................................................61
  4323.    message format.....................................................13
  4324.    MF RR..............................................................62
  4325.    MG RR..............................................................62
  4326.    MINFO RR...........................................................63
  4327.    MR RR..............................................................63
  4328.     
  4329.    NULL RR............................................................64
  4330.    NS RR..............................................................64
  4331.     
  4332.    PTR RR.........................................................64, 69
  4333.     
  4334.    QCLASS.............................................................58
  4335.    QTYPE..............................................................57
  4336.    queries (standard).................................................15
  4337.     
  4338.    recursive service..................................................24
  4339.    RR format..........................................................59
  4340.     
  4341.    SOA RR.............................................................65
  4342.    Special domains....................................................68
  4343.     
  4344.    TYPE...............................................................57
  4345.     
  4346.    WKS type RR........................................................68
  4347.  
  4348.  
  4349. Mockapetris                                                    [Page 73]
  4350.