home *** CD-ROM | disk | FTP | other *** search
/ Handbook of Infosec Terms 2.0 / Handbook_of_Infosec_Terms_Version_2.0_ISSO.iso / text / rfcs / rfc0882.txt < prev    next >
Text File  |  1996-05-07  |  81KB  |  863 lines

  1.  Network Working Group                                     P. Mockapetris Request for Comments:  882                                           ISI                                                            November 1983 
  2.  
  3.                  DOMAIN NAMES - CONCEPTS and FACILITIES 
  4.  
  5.         +-----------------------------------------------------+         |                                                     |         | This RFC introduces domain style names, their use   |         | for ARPA Internet mail and host address support,    |         | and the protocols and servers used to implement     |         | domain name facilities.                             |         |                                                     |         | This memo describes the conceptual framework of the |         | domain system and some uses, but it omits many      |         | uses, fields, and implementation details.  A        |         | complete specification of formats, timeouts, etc.   |         | is presented in RFC 883, "Domain Names -            |         | Implementation and Specification".  That RFC        |         | assumes that the reader is familiar with the        |         | concepts discussed in this memo.                    |         |                                                     |         +-----------------------------------------------------+ 
  6.  
  7. INTRODUCTION 
  8.  
  9.    The need for domain names 
  10.  
  11.       As applications grow to span multiple hosts, then networks, and       finally internets, these applications must also span multiple       administrative boundaries and related methods of operation       (protocols, data formats, etc).  The number of resources (for       example mailboxes), the number of locations for resources, and the       diversity of such an environment cause formidable problems when we       wish to create consistent methods for referencing particular       resources that are similar but scattered throughout the       environment. 
  12.  
  13.       The ARPA Internet illustrates the size-related problems; it is a       large system and is likely to grow much larger.  The need to have       a mapping between host names (e.g., USC-ISIF) and ARPA Internet       addresses (e.g., 10.2.0.52) is beginning to stress the existing       mechanisms.  Currently hosts in the ARPA Internet are registered       with the Network Information Center (NIC) and listed in a global       table (available as the file <NETINFO>HOSTS.TXT on the SRI-NIC       host) [1].  The size of this table, and especially the frequency       of updates to the table are near the limit of manageability.  What       is needed is a distributed database that performs the same       function, and hence avoids the problems caused by a centralized       database. 
  14.  
  15.       The problem for computer mail is more severe.  While mail system       implementers long ago recognized the impossibility of centralizing 
  16.  
  17.  Mockapetris                                                     [Page 1] 
  18.  
  19.  
  20. RFC 882                                                    November 1983                                   Domain Names - Concepts and Facilities 
  21.  
  22.        mailbox names, they have also created an increasingly large and       irregular set of methods for identifying the location of a       mailbox.  Some of these methods involve the use of routes and       forwarding hosts as part of the mail destination address, and       consequently force the mail user to know multiple address formats,       the capabilities of various forwarders, and ad hoc tricks for       passing address specifications through intermediaries. 
  23.  
  24.       These problems have common characteristics that suggest the nature       of any solution: 
  25.  
  26.          The basic need is for a consistent name space which will be          used for referring to resources.  In order to avoid the          problems caused by ad hoc encodings, names should not contain          addresses, routes, or similar information as part of the name. 
  27.  
  28.          The sheer size of the database and frequency of updates suggest          that it must be maintained in a distributed manner, with local          caching to improve performance.  Approaches that attempt to          collect a consistent copy of the entire database will become          more and more expensive and difficult, and hence should be          avoided.  The same principle holds for the structure of the          name space, and in particular mechanisms for creating and          deleting names; these should also be distributed. 
  29.  
  30.          The costs of implementing such a facility dictate that it be          generally useful, and not restricted to a single application.          We should be able to use names to retrieve host addresses,          mailbox data, and other as yet undetermined information. 
  31.  
  32.          Because we want the name space to be useful in dissimilar          networks, it is unlikely that all users of domain names will be          able to agree on the set of resources or resource information          that names will be used to retrieve.  Hence names refer to a          set of resources, and queries contain resource identifiers.          The only standard types of information that we expect to see          throughout the name space is structuring information for the          name space itself, and resources that are described using          domain names and no nonstandard data. 
  33.  
  34.          We also want the name server transactions to be independent of          the communications system that carries them. Some systems may          wish to use datagrams for simple queries and responses, and          only establish virtual circuits for transactions that need the          reliability (e.g. database updates, long transactions); other          systems will use virtual circuits exclusively. 
  35.  
  36.  
  37.  
  38.  
  39.  
  40. Mockapetris                                                     [Page 2] 
  41.  
  42.  
  43. RFC 882                                                    November 1983                                   Domain Names - Concepts and Facilities 
  44.  
  45.     Elements of the solution 
  46.  
  47.       The proposed solution has three major components: 
  48.  
  49.          The DOMAIN NAME SPACE, which is a specification for a tree          structured name space.  Conceptually, each node and leaf of the          domain name space tree names a set of information, and query          operations are attempts to extract specific types of          information from a particular set.  A query names the domain          name of interest and describes the type of resource information          that is desired.  For example, the ARPA Internet uses some of          its domain names to identify hosts; queries for address          resources return ARPA Internet host addresses.  However, to          preserve the generality of the domain mechanism, domain names          are not required to have a one-to-one correspondence with host          names, host addresses, or any other type of information. 
  50.  
  51.          NAME SERVERS are server programs which hold information about          the domain tree's structure and set information.  A name server          may cache structure or set information about any part of the          domain tree, but in general a particular name server has          complete information about a subset of the domain space, and          pointers to other name servers that can be used to lead to          information from any part of the domain tree.  Name servers          know the parts of the domain tree for which they have complete          information; these parts are called ZONEs; a name server is an          AUTHORITY for these parts of the name space. 
  52.  
  53.          RESOLVERS are programs that extract information from name          servers in response to user requests.  Resolvers must be able          to access at least one name server and use that name server's          information to answer a query directly, or pursue the query          using referrals to other name servers.  A resolver will          typically be a system routine that is directly accessible to          user programs; hence no protocol is necessary between the          resolver and the user program. 
  54.  
  55.       These three components roughly correspond to the three layers or       views of the domain system: 
  56.  
  57.          From the user's point of view, the domain system is accessed          through simple procedure or OS calls to resolvers.  The domain          space consists of a single tree and the user can request          information from any section of the tree. 
  58.  
  59.          From the resolver's point of view, the domain system is          composed of an unknown number of name servers.  Each name          server has one or more pieces of the whole domain tree's data, 
  60.  
  61.  
  62.  
  63. Mockapetris                                                     [Page 3] 
  64.  
  65.  
  66. RFC 882                                                    November 1983                                   Domain Names - Concepts and Facilities 
  67.  
  68.           but the resolver views each of these databases as essentially          static. 
  69.  
  70.          From a name server's point of view, the domain system consists          of separate sets of local information called zones.  The name          server has local copies of some of the zones.  The name server          must periodically refresh its zones from master copies in local          files or foreign name servers.  The name server must          concurrently process queries that arrive from resolvers using          the local zones. 
  71.  
  72.       In the interests of performance, these layers blur a bit.  For       example, resolvers on the same machine as a name server may share       a database and may also introduce foreign information for use in       later queries.  This cached information is treated differently       from the authoritative data in zones. 
  73.  
  74.    Database model 
  75.  
  76.       The organization of the domain system derives from some       assumptions about the needs and usage patterns of its user       community and is designed to avoid many of the the complicated       problems found in general purpose database systems. 
  77.  
  78.       The assumptions are: 
  79.  
  80.          The size of the total database will initially be proportional          to the number of hosts using the system, but will eventually          grow to be proportional to the number of users on those hosts          as mailboxes and other information are added to the domain          system. 
  81.  
  82.          Most of the data in the system will change very slowly (e.g.,          mailbox bindings, host addresses), but that the system should          be able to deal with subsets that change more rapidly (on the          order of minutes). 
  83.  
  84.          The administrative boundaries used to distribute responsibility          for the database will usually correspond to organizations that          have one or more hosts.  Each organization that has          responsibility for a particular set of domains will provide          redundant name servers, either on the organization's own hosts          or other hosts that the organization arranges to use. 
  85.  
  86.          Clients of the domain system should be able to identify trusted          name servers they prefer to use before accepting referrals to          name servers outside of this "trusted" set. 
  87.  
  88.          Access to information is more critical than instantaneous 
  89.  
  90.  Mockapetris                                                     [Page 4] 
  91.  
  92.  
  93. RFC 882                                                    November 1983                                   Domain Names - Concepts and Facilities 
  94.  
  95.           updates or guarantees of consistency.  Hence the update process          allows updates to percolate out though the users of the domain          system rather than guaranteeing that all copies are          simultaneously updated.  When updates are unavailable due to          network or host failure, the usual course is to believe old          information while continuing efforts to update it.  The general          model is that copies are distributed with timeouts for          refreshing.  The distributor sets the timeout value and the          recipient of the distribution is responsible for performing the          refresh.  In special situations, very short intervals can be          specified, or the owner can prohibit copies. 
  96.  
  97.          Some users will wish to access the database via datagrams;          others will prefer virtual circuits.  The domain system is          designed so that simple queries and responses can use either          style, although refreshing operations need the reliability of          virtual circuits.  The same overall message format is used for          all communication.  The domain system does not assume any          special properties of the communications system, and hence          could be used with any datagram or virtual circuit protocol. 
  98.  
  99.          In any system that has a distributed database, a particular          name server may be presented with a query that can only be          answered by some other server.  The two general approaches to          dealing with this problem are "recursive", in which the first          server pursues the query for the client at another server, and          "iterative", in which the server refers the client to another          server and lets the client pursue the query.  Both approaches          have advantages and disadvantages, but the iterative approach          is preferred for the datagram style of access.  The domain          system requires implementation of the iterative approach, but          allows the recursive approach as an option.  The optional          recursive style is discussed in [14], and omitted from further          discussion in this memo. 
  100.  
  101.       The domain system assumes that all data originates in master files       scattered through the hosts that use the domain system.  These       master files are updated by local system administrators.  Master       files are text files that are read by a local name server, and       hence become available to users of the domain system.  A standard       format for these files is given in [14]. 
  102.  
  103.       The standard format allows these files to be exchanged between       hosts (via FTP, mail, or some other mechanism); this facility is       useful when an organization wants a domain, but doesn't want to       support a name server.  The organization can maintain the master       files locally using a text editor, transfer them to a foreign host       which runs a name server, and then arrange with the system       administrator of the name server to get the files loaded. 
  104.  
  105.  Mockapetris                                                     [Page 5] 
  106.  
  107.  
  108. RFC 882                                                    November 1983                                   Domain Names - Concepts and Facilities 
  109.  
  110.        Each host's name servers and resolvers are configured by a local       system administrator.  For a name server, this configuration data       includes the identity of local master files and instructions on       which non-local master files are to be loaded from foreign       servers.  The name server uses the master files or copies to load       its zones.  For resolvers, the configuration data identifies the       name servers which should be the primary sources of information. 
  111.  
  112.       The domain system defines procedures for accessing the data and       for referrals to other name servers.  The domain system also       defines procedures for caching retrieved data and for periodic       refreshing of data defined by the system administrator. 
  113.  
  114.       The system administrators provide: 
  115.  
  116.          The definition of zone boundaries 
  117.  
  118.          Master files of data 
  119.  
  120.          Updates to master files 
  121.  
  122.          Statements of the refresh policies desired 
  123.  
  124.       The domain system provides: 
  125.  
  126.          Standard formats for resource data 
  127.  
  128.          Standard methods for querying the database 
  129.  
  130.          Standard methods for name servers to refresh local data from          foreign name servers 
  131.  
  132. DOMAIN NAME SPACE 
  133.  
  134.    Name space specifications and terminology 
  135.  
  136.       The domain name space is a tree structure.  Each node and leaf on       the tree corresponds to a resource set (which may be empty).  Each       node and leaf has an associated label.  Labels are NOT guaranteed       to be unique, with the exception of the root node, which has a       null label.  The domain name of a node or leaf is the path from       the root of the tree to the node or leaf.  By convention, the       labels that compose a domain name are read left to right, from the       most specific (lowest) to the least specific (highest). 
  137.  
  138.       Internally, programs that manipulate domain names represent them       as sequences of labels, where each label is a length octet       followed by an octet string.  Because all domain names end at the       root, which has a null string for a label, these internal 
  139.  
  140.  Mockapetris                                                     [Page 6] 
  141.  
  142.  
  143. RFC 882                                                    November 1983                                   Domain Names - Concepts and Facilities 
  144.  
  145.        representations can use a length byte of zero to terminate a       domain name.  When domain names are printed, labels in a path are       separated by dots (".").  The root label and its associated dot       are omitted from printed domain names, but the root can be named       by a null domain name (" " in this memo). 
  146.  
  147.       To simplify implementations, the total number of octets that       represent label octets and label lengths is limited to 255.  Thus       a printed domain name can be up to 254 characters. 
  148.  
  149.       A special label is defined that matches any other label.  This       label is the asterisk or "*".  An asterisk matches a single label.       Thus *.ARPA matches FOO.ARPA, but does not match FOO.BAR.ARPA.       The asterisk is mainly used to create default resource records at       the boundary between protocol families, and requires prudence in       its use. 
  150.  
  151.       A domain is identified by a domain name, and consists of that part       of the domain name space that is at or below the domain name which       specifies the domain.  A domain is a subdomain of another domain       if it is contained within that domain.  This relationship can be       tested by seeing if the subdomain's name has the containing       domain's name as the right part of its name.  For example, A.B.C.D       is a subdomain of B.C.D, C.D, D, and " ". 
  152.  
  153.       This tree structure is intended to parallel the administrative       organization and delegation of authority.  Potentially, each node       or leaf on the tree can create new subdomains ad infinitum.  In       practice, this delegation can be limited by the administrator of       the name servers that manage the domain space and resource data. 
  154.  
  155.       The following figure shows an example of a domain name space. 
  156.  
  157.                                    |                                             +------------------+------------------+                          |                  |                  |                        COLORS            FLAVORS             TRUTH                        |                  |                                       +-----+-----+            |                                       |     |     |         NATURAL                                   RED  BLUE  GREEN          |                                                                |                                                +---------------+---------------+                                |               |               |                            CHOCOLATE        VANILLA        STRAWBERRY        
  158.  
  159.       In this example, the root domain has three immediate subdomains:       COLORS, FLAVORS, and TRUTH.  The FLAVORS domain has one immediate       subdomain named NATURAL.FLAVORS.  All of the leaves are also 
  160.  
  161.  Mockapetris                                                     [Page 7] 
  162.  
  163.  
  164. RFC 882                                                    November 1983                                   Domain Names - Concepts and Facilities 
  165.  
  166.        domains.  This domain tree has the names " "(the root), COLORS,       RED.COLORS, BLUE.COLORS, GREEN.COLORS, FLAVORS, NATURAL.FLAVORS,       CHOCOLATE.NATURAL.FLAVORS, VANILLA.NATURAL.FLAVORS,       STRAWBERRY.NATURAL.FLAVORS, and TRUTH.  If we wished to add a new       domain of ARTIFICIAL under FLAVORS, FLAVORS would typically be the       administrative entity that would decide; if we wished to create       CHIP and MOCHA names under CHOCOLATE, CHOCOLATE.NATURAL.FLAVORS       would typically be the appropriate administrative entity. 
  167.  
  168.    Resource set information 
  169.  
  170.       A domain name identifies a set of resource information.  The set       of resource information associated with a particular name is       composed of separate resource records (RRs). 
  171.  
  172.       Each resource record has the following major components: 
  173.  
  174.          The domain name which identifies resource set that holds this          record, and hence the "owner" of the information.  For example,          a RR that specifies a host address has a domain name the          specifies the host having that address.  Thus F.ISI.ARPA might          be the owner of a RR which specified an address field of          10.2.0.52.  Since name servers typically store their resource          information in tree structures paralleling the organization of          the domain space, this information can usually be stored          implicitly in the database; however it is always included in          each resource record carried in a message. 
  175.  
  176.          Other information used to manage the RR, such as length fields,          timeouts, etc.  This information is omitted in much of this          memo, but is discussed in [14]. 
  177.  
  178.          A resource type field that specifies the type of the resource          in this resource record.  Types refer to abstract resources          such as host addresses or mail delivery agents.  The type field          is two octets long and uses an encoding that is standard          throughout the domain name system. 
  179.  
  180.          A class field identifies the format of the resource data, such          as the ARPA Internet format (IN) or the Computer Science          Network format (CSNET), for certain RR types (such as address          data).  Note that while the class may separate different          protocol families, networks, etc. it does not do so in all          cases.  For example, the IN class uses 32 bit IP addresses          exclusively, but the CSNET class uses 32 bit IP addresses, X.25          addresses, and phone numbers.  Thus the class field should be          used as a guide for interpreting the resource data.  The class          field is two octets long and uses an encoding that is standard          throughout the domain name system. 
  181.  
  182.  Mockapetris                                                     [Page 8] 
  183.  
  184.  
  185. RFC 882                                                    November 1983                                   Domain Names - Concepts and Facilities 
  186.  
  187.           Resource data that describes the resource.  The format of this          data can be determined given the type and class fields, but          always starts with a two octet length field that allows a name          server or resolver to determine the boundaries of the resource          data in any transaction, even if it cannot "understand" the          resource data itself.  Thus name servers and resolvers can hold          and pass on records which they cannot interpret.  The format of          the internal data is restricted only by the maximum length of          65535 octets; for example the host address record might specify          a fixed 32 bit number for one class, and a variable length list          of addresses in another class. 
  188.  
  189.       While the class field in effect partitions the resource data in       the domain name system into separate parallel sections according       to class, services can span class boundaries if they use       compatible resource data formats.  For example, the domain name       system uses compatible formats for structure information, and the       mail data decouples mail agent identification from details of how       to contact the agent (e.g. host addresses). 
  190.  
  191.       This memo uses the following types in its examples: 
  192.  
  193.          A     - the host address associated with the domain name 
  194.  
  195.          MF    - identifies a mail forwarder for the domain 
  196.  
  197.          MD    - identifies a mail destination for the domain 
  198.  
  199.          NS    - the authoritative name server for the domain 
  200.  
  201.          SOA   - identifies the start of a zone of authority 
  202.  
  203.          CNAME - identifies the canonical name of an alias 
  204.  
  205.       This memo uses the following classes in its examples: 
  206.  
  207.          IN - the ARPA Internet system 
  208.  
  209.          CS - the CSNET system 
  210.  
  211.       The first type of resource record holds a host name to host       address binding.  Its fields are: 
  212.  
  213.   +--------+--------+--------+--------------//----------------------+   |<owner> |   A    | <class>| <class specific address>information  |   +--------+--------+--------+--------------//----------------------+ 
  214.  
  215.  
  216.  
  217.  
  218.  
  219. Mockapetris                                                     [Page 9] 
  220.  
  221.  
  222. RFC 882                                                    November 1983                                   Domain Names - Concepts and Facilities 
  223.  
  224.        The content of the class specific information varies according to       the value in the CLASS field; for the ARPA Internet, it is the 32       bit ARPA Internet address of the host, for the CSNET it might be       the phone number of the host.  For example, F.ISI.ARPA might have       two A records of the form: 
  225.  
  226.        +----------+--------+--------+----------------------------+        |F.ISI.ARPA|   A    |   IN   |          10.2.0.52         |        +----------+--------+--------+----------------------------+                                   and        +----------+--------+--------+----------------------------+        |F.ISI.ARPA|   A    |   CS   |         213-822-2112       |        +----------+--------+--------+----------------------------+ 
  227.  
  228.       Note that the data formats for the A type are class dependent, and       the Internet address and phone number formats shown above are for       purposes of illustration only.  The actual data formats are       specified in [14].  For example, CS class data for type A records       might actually be a list of Internet addresses, phone numbers and       TELENET addresses. 
  229.  
  230.       The mail forwarder (MF) and mail delivery (MD) records have the       following format: 
  231.  
  232.         +--------+--------+--------+----------------------------+         |<owner> | MD/MF  | <class>|       <domain name>        |         +--------+--------+--------+----------------------------+ 
  233.  
  234.       The <domain name> field is a domain name of the host that will       handle mail; note that this domain name may be completely       different from the domain name which names the resource record.       For example, F.ISI.ARPA might have two records of the form: 
  235.  
  236.        +----------+--------+--------+----------------------------+        |F.ISI.ARPA|  MD    |   IN   |         F.ISI.ARPA         |        +----------+--------+--------+----------------------------+                                   and        +----------+--------+--------+----------------------------+        |F.ISI.ARPA|  MF    |   IN   |         B.ISI.ARPA         |        +----------+--------+--------+----------------------------+ 
  237.  
  238.       These records mean that mail for F.ISI.ARPA can either be       delivered to the host F.ISI.ARPA or forwarded to B.ISI.ARPA, which       will accept responsibility for its eventual delivery.  In       principle, an additional name lookup is required to map the domain       name of the host to the appropriate address, in practice this       information is usually returned in the response to the mail query. 
  239.  
  240.       The SOA and NS types of resource records are used to define limits 
  241.  
  242.  Mockapetris                                                    [Page 10] 
  243.  
  244.  
  245. RFC 882                                                    November 1983                                   Domain Names - Concepts and Facilities 
  246.  
  247.        of authority.  The domain name given by the owner field of a SOA       record is the start of a zone; the domain name given by the owner       field of a NS record identifies a point in the name space where       authority has been delegated, and hence marks the zone boundary.       Except in the case where a name server delegates authority to       itself, the SOA identifies the top limit of authority, and NS       records define the first name outside of a zone.  These resource       records have a standard format for all of the name space: 
  248.  
  249.       +----------+--------+--------+-----------------------------+       | <owner>  |   SOA  | <class>|       <domain name, etc>    |       +----------+--------+--------+-----------------------------+                                            +----------+--------+--------+-----------------------------+       | <owner>  |   NS   | <class>|       <domain name>         |       +----------+--------+--------+-----------------------------+ 
  250.  
  251.       The SOA record marks the start of a zone when it is present in a       database; the NS record both marks the end of a zone started by an       SOA (if a higher SOA is present) and also points to a name server       that has a copy of the zone specified by the <owner. field of the       NS record. 
  252.  
  253.       The <domain name, etc> in the SOA record specifies the original       source of the information in the zone and other information used       by name servers to organize their activities.  SOA records are       never cached (otherwise they would create false zones); they can       only be created in special name server maintenance operations. 
  254.  
  255.       The NS record says that a name server which is authoritative for       records of the given CLASS can be found at <domain name>. 
  256.  
  257.    Queries 
  258.  
  259.       Queries to a name server must include a domain name which       identifies the target resource set (QNAME), and the type and class       of desired resource records.  The type and class fields in a query       can include any of the corresponding type and class fields that       are defined for resource records; in addition, the query type       (QTYPE) and query class (QCLASS) fields may contain special values       that match more than one of the corresponding fields in RRs. 
  260.  
  261.       For example, the QTYPE field may contain: 
  262.  
  263.          MAILA - matches all mail agent RRs (e.g. MD and MF). 
  264.  
  265.          *     - matches any RR type. 
  266.  
  267.  
  268.  
  269.  Mockapetris                                                    [Page 11] 
  270.  
  271.  
  272. RFC 882                                                    November 1983                                   Domain Names - Concepts and Facilities 
  273.  
  274.        The QCLASS field may contain: 
  275.  
  276.          *    - matches any RR class. 
  277.  
  278.       Using the query domain name, QTYPE, and QCLASS, the name server       looks for matching RRs.  In addition to relevant records, the name       server may return RRs that point toward a name server that has the       desired information or RRs that are expected to be useful in       interpreting the relevant RRs.  For example a name server that       doesn't have the requested information may know a name server that       does; a name server that returns a domain name in a relevant RR       may also return the RR that binds that domain name to an address. 
  279.  
  280.       Note that the QCLASS=* construct requires special interpretation       regarding authority.  Since a name server may not know all of the       classes available in the domain system, it can never know if it is       authoritative for all classes.  Hence responses to QCLASS=*       queries can never be authoritative. 
  281.  
  282.    Example space 
  283.  
  284.       For purposes of exposition, the following name space is used for       the remainder of this memo: 
  285.  
  286.                                     |                                              +------------------+------------------+                           |                  |                  |                          DDN               ARPA               CSNET                         |                  |                  |                     +-----+-----+            |            +-----+-----+               |     |     |            |            |           |              JCS  ARMY  NAVY           |           UDEL        UCI                                       |                                        +--------+---------------+---------------+--------+               |        |               |               |        |              DTI      MIT             ISI             UDEL     NBS                       |               |                                             +---+---+       +---+---+                                         |       |       |   |   |                                        DMS     AI       A   B   F                         
  287.  
  288.  
  289.  
  290.  
  291.  
  292.  
  293.  
  294.  
  295.  
  296.  
  297.  
  298. Mockapetris                                                    [Page 12] 
  299.  
  300.  
  301. RFC 882                                                    November 1983                                   Domain Names - Concepts and Facilities 
  302.  
  303.  NAME SERVERS 
  304.  
  305.    Introduction 
  306.  
  307.       Name servers store a distributed database consisting of the       structure of the domain name space, the resource sets associated       with domain names, and other information used to coordinate       actions between name servers. 
  308.  
  309.       In general, a name server will be an authority for all or part of       a particular domain.  The region covered by this authority is       called a zone.  Name servers may be responsible for no       authoritative data, and hence have no zones, or may have several       zones.  When a name server has multiple zones, the zones may have       no common borders or zones may be contiguous. 
  310.  
  311.       While administrators should not construct overlapping zones, and       name servers must defend against overlapping zones, overlapping is       regarded as a non-fatal flaw in the database.  Hence the measures       taken to protect against it are omitted for the remainder of this       memo.  A detailed discussion can be found in [14]. 
  312.  
  313.       When presented with a query for a domain name over which it has       authority, a name server returns the desired resource information       or an indication that the query refers to a domain name or       resource that does not exist.  If a name server is presented with       a query for a domain name that is not within its authority, it may       have the desired information, but it will also return a response       that points toward an authoritative name server.  If a name server       is not an authority for a query, it can never return a negative       response. 
  314.  
  315.       There is no requirement that a name server for a domain reside in       a host which has a name in the same domain, although this will       usually be the case.  There is also no restriction on the number       of name servers that can have authority over a particular domain;       most domains will have redundant authoritative name servers.  The       assumption is that different authoritative copies are identical,       even though inconsistencies are possible as updates are made. 
  316.  
  317.       Name server functions are designed to allow for very simple       implementations of name servers.  The simplest name server has a       static set of information and uses datagrams to receive queries       and return responses. 
  318.  
  319.       More sophisticated name server implementations can improve the       performance of their clients by caching information from other       domains.  Although this information can be acquired in a number of       ways, the normal method is to store the information acquired by a 
  320.  
  321.  Mockapetris                                                    [Page 13] 
  322.  
  323.  
  324. RFC 882                                                    November 1983                                   Domain Names - Concepts and Facilities 
  325.  
  326.        resolver when the resolver consults other name servers.  In a       sophisticated host, the resolver and name server will coordinate       their actions and use a shared database.  This cooperation       requires the incorporation of a time-to-live (TTL) field in all       cached resource records.  Caching is discussed in the resolver       section of this memo; this section is devoted to the actions of a       name servers that don't cache. 
  327.  
  328.       In order to free simple name servers of the requirement of       managing these timeouts, simple name servers should only contain       resource records that are expected to remain constant over very       long periods or resource records for which the name server is an       authority.  In the following discussion, the TTL field is assumed       to be stored in the resource record but is omitted in descriptions       of databases and responses in the interest of clarity. 
  329.  
  330.    Authority and administrative control of domains 
  331.  
  332.       Although we want to have the potential of delegating the       privileges of name space management at every node, we don't want       such delegation to be required. 
  333.  
  334.       Hence we introduce the concept of authority.  Authority is vested       in name servers.  A name server has authority over all of its       domain until it delegates authority for a subdomain to some other       name server. 
  335.  
  336.       Any administrative entity that wishes to establish its own domain       must provide a name server, and have that server accepted by the       parent name server (i.e. the name server that has authority over       the place in the domain name space that will hold the new domain).       While the principles of authority allow acceptance to be at the       discretion of parent name servers, the following criteria are used       by the root, and are recommended to all name servers because they       are responsible for their children's actions: 
  337.  
  338.          1.  It must register with the parent administrator of domains. 
  339.  
  340.          2.  It must identify a responsible person. 
  341.  
  342.          3.  In must provide redundant name servers. 
  343.  
  344.       The domain name must be registered with the administrator to avoid       name conflicts and to make the domain related information       available to other domains.  The central administrator may have       further requirements, and a domain is not registered until the       central administrator agrees that all requirements are met. 
  345.  
  346.       There must be a responsible person associated with each domain to 
  347.  
  348.  Mockapetris                                                    [Page 14] 
  349.  
  350.  
  351. RFC 882                                                    November 1983                                   Domain Names - Concepts and Facilities 
  352.  
  353.        be a contact point for questions about the domain, to verify and       update the domain related information, and to resolve any problems       (e.g., protocol violations) with hosts in the domain. 
  354.  
  355.       The domain must provide redundant (i.e., two or more) name servers       to provide the name to address resolution service.  These name       servers must be accessible from outside the domain (as well as       inside) and must resolve names for at least all the hosts in the       domain. 
  356.  
  357.       Once the central administrator is satisfied, he will communicate       the existence to the appropriate administrators of other domains       so that they can incorporate NS records for the new name server       into their databases. 
  358.  
  359.    Name server logic 
  360.  
  361.       The processing steps that a name server performs in responding to       a query are conceptually simple, although implementations may have       internal databases that are quite complex. 
  362.  
  363.       For purposes of explanation, we assume that the query consists of       a type QTYPE, a class QCLASS, and a domain name QNAME; we assume       that the name server stores its RRs in sets where each set has all       of the RRs for a particular domain.  Note that this database       structure and the following algorithms are meant to illustrate one       possible implementation, rather than a specification of how all       servers must be implemented. 
  364.  
  365.       The following notation is used: 
  366.  
  367.       ord(DOMAIN-NAME)     returns the number of labels in DOMAIN-NAME. 
  368.  
  369.       findset(DOMAIN-NAME) returns a pointer to the set of stored RRs                            for DOMAIN-NAME, or NULL if there is no such                            information. 
  370.  
  371.       set(POINTER)         refers to a set located previously by                            findset, where POINTER is the value returned                            by findset. 
  372.  
  373.       relevant(QTYPE,TYPE) returns true if a RR of the specified TYPE is                            relevant to the specified QTYPE.  For                            example, relevant(MAILA,MF) is true and                            relevant(MAILA,NS) is false. 
  374.  
  375.       right(NAME,NUMBER)   returns a domain name that is the rightmost                            NUMBER labels in the string NAME. 
  376.  
  377.  
  378.  
  379. Mockapetris                                                    [Page 15] 
  380.  
  381.  
  382. RFC 882                                                    November 1983                                   Domain Names - Concepts and Facilities 
  383.  
  384.        copy(RR)             copies the resource record specified by RR                            into the response. 
  385.  
  386.       The name server code could be represented as the following       sequence of steps: 
  387.  
  388.      {    find out whether the database makes this server                     authoritative for the domain name specified by QNAME   }  
  389.  
  390.      for i:=0 to ord(QNAME) { sequence through all nodes in QNAME }      do   begin                                                               ptr:=findset(right(QNAME,i));                                       if ptr<>NULL                                                        then { there is domain data for this domain name }                       begin                                                               for all RRs in set(ptr)                                             do   if type(RR)=NS and class(RR)=QCLASS                                 then begin                                                               auth=false;                                                         NSptr:=ptr                                                          end;                                                      for all RRs in set(ptr)                                             do   if type(RR)=SOA and class(RR)=QCLASS                                then auth:=true                                                     end                                                            end;                                                            end;                                                     
  391.  
  392.       {    copy out authority search results }                      
  393.  
  394.       if auth                                                             then { if authority check for domain found }                             if ptr=null                                                         then return(Name error)                                             else                                                           else { if not authority, copy NS RRs }                                   for all RRs in set(nsptr)                                           do   if (type(RR)=NS and class(RR)=QCLASS)                                                or                                                               (QCLASS=*)                                            then copy(RR);                                      
  395.  
  396.       {    Copy all RRs that answer the question }                  
  397.  
  398.       for all RRs in set(ptr)                                             do   if class(RR)=QCLASS and relevant(QTYPE,type(RR))                    then copy(RR);                                           
  399.  
  400.       The first section of the code (delimited by the for loop over all 
  401.  
  402.  Mockapetris                                                    [Page 16] 
  403.  
  404.  
  405. RFC 882                                                    November 1983                                   Domain Names - Concepts and Facilities 
  406.  
  407.        of the subnodes of QNAME) discovers whether the name server is       authoritative for the domain specified by QNAME.  It sequences       through all containing domains of QNAME, starting at the root.  If       it encounters a SOA it knows that the name server is authoritative       unless it finds a lower NS RR which delegates authority.  If the       name server is authoritative, it sets auth=true; if the name       server is not authoritative, it sets NSptr to point to the set       which contains the NS RR closest to the domain specified by QNAME. 
  408.  
  409.       The second section of the code reflects the result of the       authority search into the response.  If the name server is       authoritative, the code checks to see that the domain specified by       QNAME exists; if not, a name error is returned.  If the name       server is not authoritative, the code copies the RRs for a closer       name server into the response. 
  410.  
  411.       The last section of the code copies all relevant RRs into the       response. 
  412.  
  413.       Note that this code is not meant as an actual implementation and       is incomplete in several aspects.  For example, it doesn't deal       with providing additional information, wildcards, QCLASS=*, or       with overlapping zones.  The first two of these issues are dealt       with in the following discussions, the remaining issues are       discussed in [14]. 
  414.  
  415.    Additional information 
  416.  
  417.       When a resolver returns information to a user program, the       returned information will often lead to a second query.  For       example, if a mailer asks a resolver for the appropriate mail       agent for a particular domain name, the name server queried by the       resolver returns a domain name that identifies the agent.  In       general, we would expect that the mailer would then request the       domain name to address binding for the mail agent, and a new name       server query would result. 
  418.  
  419.       To avoid this duplication of effort, name servers return       additional information with a response which satisfies the       anticipated query.  This information is kept in a separate section       of the response.  Name servers are required to complete the       appropriate additional information if such information is       available, but the requestor should not depend on the presence of       the information since the name server may not have it.  If the       resolver caches the additional information, it can respond to the       second query without an additional network transaction. 
  420.  
  421.       The appropriate information is defined in [14], but generally 
  422.  
  423.  
  424.  
  425. Mockapetris                                                    [Page 17] 
  426.  
  427.  
  428. RFC 882                                                    November 1983                                   Domain Names - Concepts and Facilities 
  429.  
  430.        consists of host to address bindings for domain names in returned       RRs. 
  431.  
  432.    Aliases and canonical names 
  433.  
  434.       In existing systems, hosts and other resources often have several       names that identify the same resource.  For example, under current       ARPA Internet naming support, USC-ISIF and ISIF both identify the       same host.  Similarly, in the case of mailboxes, many       organizations provide many names that actually go to the same       mailbox; for example Mockapetris@ISIF, Mockapetris@ISIB, etc., all       go to the same mailbox (although the mechanism behind this is       somewhat complicated). 
  435.  
  436.       Most of these systems have a notion that one of the equivalent set       of names is the canonical name and all others are aliases. 
  437.  
  438.       The domain system provides a similar feature using the canonical       name (CNAME) RR.  When a name server fails to find a desired RR in       a set associated with some domain name, it checks to see if the       resource set contains a CNAME record with a matching class.  If       so, the name server includes the CNAME record in the response, and       continues the query at the domain name specified in the data field       of the CNAME record. 
  439.  
  440.       Suppose a name server was processing a query with QNAME=ISIF.ARPA,       QTYPE=A, and QCLASS=IN, and had the following resource records: 
  441.  
  442.             ISIF.ARPA     CNAME   IN     F.ISI.ARPA                      F.ISI.ARPA    A       IN     10.2.0.52           
  443.  
  444.       Both of these RRs would be returned in the response. 
  445.  
  446.       In the above example, because ISIF.ARPA has no RRs other than the       CNAME RR, the resources associated with ISIF.ARPA will appear to       be exactly those associated with F.ISI.ARPA for the IN CLASS.       Since the CNAME is effective only when the search fails, a CNAME       can also be used to construct defaults.  For example, suppose the       name server had the following set of RRs: 
  447.  
  448.             F.ISI.ARPA    A       IN     10.2.0.52                       F.ISI.ARPA    MD      IN     F.ISI.ARPA                      XXXX.ARPA     CNAME   IN     F.ISI.ARPA                      XXXX.ARPA     MF      IN     A.ISI.ARPA          
  449.  
  450.       Using this database, type A queries for XXXX.ARPA would return the       XXXX.ARPA CNAME RR and the F.ISI.ARPA A RR, but MAILA or MF       queries to XXXX.ARPA would return the XXXX.ARPA MF RR without any       information from F.ISI.ARPA.  This structure might be used to send 
  451.  
  452.  Mockapetris                                                    [Page 18] 
  453.  
  454.  
  455. RFC 882                                                    November 1983                                   Domain Names - Concepts and Facilities 
  456.  
  457.        mail addressed to XXXX.ARPA to A.ISI.ARPA and to direct TELNET for       XXXX.ARPA to F.ISI.ARPA. 
  458.  
  459.    Wildcards 
  460.  
  461.       In certain cases, an administrator may wish to associate default       resource information for all or part of a domain.  For example,       the CSNET domain administrator may wish to establish IN class mail       forwarding for all hosts in the CSNET domain without IN       capability.  In such a case, the domain system provides a special       label "*" that matches any other label.  Note that "*" matches       only a single label, and not zero or more than one label.  Note       also that the "*" is distinct from the "*" values for QCLASS and       QTYPE. 
  462.  
  463.       The semantics of "*" depend upon whether it appears in a query       domain name (QNAME) or in a RR in a database. 
  464.  
  465.          When an "*" is used in a QNAME, it can only match a "*" in a          resource record. 
  466.  
  467.          When "*" appears in a RR in a database, it can never override          an existing exact match.  For example, if a name server          received a query for the domain UDEL.CSNET, and had appropriate          RRs for both UDEL.CSNET and *.CSNET, the UDEL.CSNET RRs would          be used and the *.CSNET RRs would be ignored.  If a query to          the same database specified FOO.CSNET, the *.CSNET RR would be          used, but the corresponding labels from the QNAME would replace          the "*".  Thus the FOO.CSNET query would match the *.CSNET RR          and return a RR for FOO.CSNET rather than *.CSNET. 
  468.  
  469.          RRs containing "*" labels are copied exactly when zones are          transfered via name server maintenance operations. 
  470.  
  471.       These semantics are easily implemented by having the name server       first search for an exact match for a query, and then replacing       the leftmost label with a "*" and trying again, repeating the       process until all labels became "*" or the search succeeded. 
  472.  
  473.       TYPE=* in RRs is prohibited.  If it were to be allowed, the       requestor would have no way of interpreting the data in the RR       because this data is type dependent. 
  474.  
  475.       CLASS=* is also prohibited.  Similar effects can be achieved using       QCLASS=*, and allowing both QCLASS=* and CLASS=* leads to       complexities without apparent benefit. 
  476.  
  477.  
  478.  
  479.  
  480.  
  481. Mockapetris                                                    [Page 19] 
  482.  
  483.  
  484. RFC 882                                                    November 1983                                   Domain Names - Concepts and Facilities 
  485.  
  486.     A scenario 
  487.  
  488.       In our sample domain space, suppose we wanted separate       administrative control for the root, DDN, ARPA, CSNET, MIT and ISI       domains.  We might allocate name servers as follows: 
  489.  
  490.                                    |(B.ISI.ARPA)                                                      |(UDEL.CSNET)                                   +------------------+------------------+                            |                  |                  |                           DDN               ARPA               CSNET                          |(JCS.DDN)         |(F.ISI.ARPA)      |(UDEL.ARPA)           +-----+-----+            |(A.ISI.ARPA)+-----+-----+                |     |     |            |            |           |               JCS  ARMY  NAVY           |           UDEL        UCI                                        |                                         +--------+---------------+---------------+--------+                |        |               |               |        |               DTI      MIT             ISI             UDEL     NBS                        |(AI.MIT.ARPA)  |(F.ISI.ARPA)                                  +---+---+       +---+---+                                          |       |       |   |   |                                         DMS     AI       A   B   F                           
  491.  
  492.       In this example the authoritative name server is shown in       parentheses at the point in the domain tree at which is assumes       control. 
  493.  
  494.       Thus the root name servers are on B.ISI.ARPA and UDEL.CSNET, the       DDN name server is on JCS.DDN, the CSNET domain server is on       UDEL.ARPA, etc. 
  495.  
  496.       In an actual system, all domains should have redundant name       servers, but in this example only the ARPA domain has redundant       servers A.ISI.ARPA and F.ISI.ARPA.  (The B.ISI.ARPA and UDEL.CSNET       name servers happen to be not redundant because they handle       different classes.)  The F.ISI.ARPA name server has authority over       the ARPA domain, but delegates authority over the MIT.ARPA domain       to the name server on AI.MIT.ARPA.  The A.ISI.ARPA name server       also has authority over the ARPA domain, but delegates both the       ISI.ARPA and MIT.ARPA domains to other name servers. 
  497.  
  498.  
  499.  
  500.  
  501.  
  502.  
  503.  
  504.  
  505.  
  506.  Mockapetris                                                    [Page 20] 
  507.  
  508.  
  509. RFC 882                                                    November 1983                                   Domain Names - Concepts and Facilities 
  510.  
  511.     B.ISI.ARPA Name server for " " 
  512.  
  513.       B.ISI.ARPA has the root name server for the IN class.  Its       database might contain: 
  514.  
  515.             Domain        Resource Record                    
  516.  
  517.             " "           SOA     IN     A.ISI.ARPA                      DDN           NS      IN     JCS.DDN                         ARPA          NS      IN     F.ISI.ARPA                      CSNET         NS      IN     UDEL.ARPA                       " "           NS      IN     B.ISI.ARPA                      " "           NS      CS     UDEL.CSNET                                                           JCS.DDN       A       IN     9.0.0.1                         F.ISI.ARPA    A       IN     10.2.0.52                       UDEL.CSNET    A       CS     302-555-0000                    UDEL.ARPA     A       IN     10.0.0.96           
  518.  
  519.       The SOA record for the root is necessary so that the name server       knows that it is authoritative for the root domain for class IN.       The contents of the SOA resource record point back to A.ISI.ARPA       and denote that the master data for the zone of authority is       originally from this host.  The first three NS records denote       delegation of authority.  The NS root entry for the B.ISI.ARPA       name server is necessary so that this name server knows about       itself, and can respond correctly to a query for NS information       about the root (for which it is an authority).  The root entry for       class CS denotes that UDEL.CSNET is the authoritative name server       for the CS class root.  UDEL.CSNET and UDEL.ARPA may or may not       refer to the same name server; from this information it is       impossible to tell. 
  520.  
  521.       If this name server was sent a query specifying QTYPE=MAILA,       QCLASS=IN, QNAME=F.ISI.ARPA, it would begin processing (using the       previous algorithm) by determining that it was not an authority       for F.ISI.ARPA.  The test would note that it had authority at " ",       but would also note that the authority was delegated at ARPA and       never reestablished via another SOA.  Thus the response would       return the NS record for the domain ARPA. 
  522.  
  523.       Any queries presented to this server with QCLASS=CS would result       in the UDEL.CSNET NS record being returned in the response. 
  524.  
  525.  
  526.  
  527.  
  528.  
  529.  
  530.  
  531.  Mockapetris                                                    [Page 21] 
  532.  
  533.  
  534. RFC 882                                                    November 1983                                   Domain Names - Concepts and Facilities 
  535.  
  536.     F.ISI.ARPA Name server for ARPA and ISI.ARPA 
  537.  
  538.       In the same domain space, the F.ISI.ARPA database for the domains       ARPA and ISI.ARPA might be: 
  539.  
  540.             Domain        Resource Record                    
  541.  
  542.             " "           NS      IN     B.ISI.ARPA                      " "           NS      CS     CSNET.UDEL                      ARPA          SOA     IN     B.ISI.ARPA                      ARPA          NS      IN     A.ISI.ARPA                      ARPA          NS      IN     F.ISI.ARPA                      MIT.ARPA      NS      IN     AI.MIT.ARPA                     ISI.ARPA      SOA     IN     F.ISI.ARPA                      ISI.ARPA      NS      IN     F.ISI.ARPA          
  543.  
  544.             A.ISI.ARPA    MD      IN     A.ISI.ARPA                      ISI.ARPA      MD      IN     F.ISI.ARPA                      A.ISI.ARPA    MF      IN     F.ISI.ARPA                      B.ISI.ARPA    MD      IN     B.ISI.ARPA                      B.ISI.ARPA    MF      IN     F.ISI.ARPA                      F.ISI.ARPA    MD      IN     F.ISI.ARPA                      F.ISI.ARPA    MF      IN     A.ISI.ARPA                      DTI.ARPA      MD      IN     DTI.ARPA                        NBS.ARPA      MD      IN     NBS.ARPA                        UDEL.ARPA     MD      IN     UDEL.ARPA           
  545.  
  546.             A.ISI.ARPA    A       IN     10.1.0.32                       F.ISI.ARPA    A       IN     10.2.0.52                       B.ISI.ARPA    A       IN     10.3.0.52                       DTI.ARPA      A       IN     10.0.0.12                       AI.MIT.ARPA   A       IN     10.2.0.6                        DMS.MIT.ARPA  A       IN     10.1.0.6                        NBS.ARPA      A       IN     10.0.0.19                       UDEL.ARPA     A       IN     10.0.0.96           
  547.  
  548.       For the IN class, the SOA RR for ARPA denotes that this name       server is authoritative for the domain ARPA, and that the master       file for this authority is stored on B.ISI.ARPA.  This zone       extends to ISI.ARPA, where the database delegates authority back       to this name server in another zone, and doesn't include the       domain MIT.ARPA, which is served by a name server on AI.MIT.ARPA. 
  549.  
  550.       This name server is not authoritative for any data in the CS       class.  It has a pointer to the root server for CS data which       could be use to resolve CS class queries. 
  551.  
  552.       Suppose this name server received a query of the form       QNAME=A.ISI.ARPA, QTYPE=A, and QCLASS=IN.  The authority search 
  553.  
  554.  Mockapetris                                                    [Page 22] 
  555.  
  556.  
  557. RFC 882                                                    November 1983                                   Domain Names - Concepts and Facilities 
  558.  
  559.        would notice the NS record for " ", its SOA at ARPA, a delegation       at ISI.ARPA, and the reassumption of authority at ISI.ARPA.  Hence       it would know that it was an authority for this query.  It would       then find the A record for A.ISI.ARPA, and return a datagram       containing this record. 
  560.  
  561.       Another query might be QNAME=B.ISI.ARPA, QTYPE=MAILA, QCLASS=*.       In this case the name server would know that it cannot be       authoritative because of the "*" value of QCLASS, and would look       for records for domain B.ISI.ARPA that match.  Assuming that the       name server performs the additional record inclusion mentioned in       the name server algorithm, the returned datagram would include: 
  562.  
  563.             ISI.ARPA      NS      IN     F.ISI.ARPA                      " "           NS      CS     UDEL.CSNET                      B.ISI.ARPA    MD      IN     B.ISI.ARPA                      B.ISI.ARPA    MF      IN     F.ISI.ARPA                      B.ISI.ARPA    A       IN     10.3.0.52                       F.ISI.ARPA    A       IN     10.2.0.52           
  564.  
  565.       If the query were QNAME=DMS.MIT.ARPA, QTYPE=MAILA, QCLASS=IN, the       name server would discover that AI.MIT.ARPA was the authoritative       name server and return the following: 
  566.  
  567.             MIT.ARPA      NS      IN     AI.MIT.ARPA                     AI.MIT.ARPA   A       IN     10.2.0.6            
  568.  
  569.       In this case, the requestor is directed to seek information from       the MIT.ARPA domain name server residing on AI.MIT.ARPA. 
  570.  
  571.  
  572.  
  573.  
  574.  
  575.  
  576.  
  577.  
  578.  
  579.  
  580.  
  581.  
  582.  
  583.  
  584.  
  585.  
  586.  
  587.  
  588.  
  589.  
  590.  
  591.  Mockapetris                                                    [Page 23] 
  592.  
  593.  
  594. RFC 882                                                    November 1983                                   Domain Names - Concepts and Facilities 
  595.  
  596.     UDEL.ARPA and UDEL.CSNET name server 
  597.  
  598.       In the previous discussion of the sample domain, we stated that       UDEL.CSNET and UDEL.ARPA might be the same name server.  In this       example, we assume that this is the case.  As such, the name       server is an authority for the root for class CS, and an authority       for the CSNET domain for class IN. 
  599.  
  600.       This name server deals with mail forwarding between the ARPA       Internet and CSNET systems.  Its RRs illustrate one approach to       solving this problem.  The name server has the following resource       records: 
  601.  
  602.             " "           SOA     CS     UDEL.CSNET                      " "           NS      CS     UDEL.CSNET                      " "           NS      IN     B.ISI.ARPA                      CSNET         SOA     IN     UDEL.ARPA                       CSNET         NS      IN     UDEL.ARPA                       ARPA          NS      IN     A.ISI.ARPA          
  603.  
  604.             *.CSNET       MF      IN     UDEL.ARPA                       UDEL.CSNET    MD      CS     UDEL.CSNET                      UCI.CSNET     MD      CS     UCI.CSNET                       UDEL.ARPA     MD      IN     UDEL.ARPA           
  605.  
  606.             B.ISI.ARPA    A       IN     10.3.0.52                       UDEL.ARPA     A       IN     10.0.0.96                       UDEL.CSNET    A       CS     302-555-0000                    UCI.CSNET     A       CS     714-555-0000        
  607.  
  608.       Suppose this name server received a query of the form       QNAME=UCI.CSNET, QTYPE=MAILA, and QCLASS=IN.  The name server       would discover it was authoritative for the CSNET domain under       class IN, but would find no explicit mail data for UCI.CSNET.       However, using the *.CSNET record, it would construct a reply: 
  609.  
  610.             UCI.CSNET     MF      IN     UDEL.ARPA                       UDEL.ARPA     A       IN     10.0.0.96           
  611.  
  612.       If this name server received a query of the form QNAME=UCI.CSNET,       QTYPE=MAILA, and QCLASS=CS, the name server would return: 
  613.  
  614.             UCI.CSNET     MD      CS     UCI.CSNET                       UCI.CSNET     A       CS     714-555-0000        
  615.  
  616.       Note that although this scheme allows for forwarding of all mail       addressed as <anything>.CSNET, it doesn't help with names that       have more than two components, e.g. A.B.CSNET.  Although this       problem could be "fixed" by a series of MF entries for *.*.CSNET, 
  617.  
  618.  Mockapetris                                                    [Page 24] 
  619.  
  620.  
  621. RFC 882                                                    November 1983                                   Domain Names - Concepts and Facilities 
  622.  
  623.        *.*.*.CSNET, etc, a more tasteful solution would be to introduce a       cleverer pattern matching algorithm in the CSNET name server. 
  624.  
  625.    Summary of requirements for name servers 
  626.  
  627.       The requirements for a name server are as follows:           1. It must be recognized by its parent. 
  628.  
  629.          2. It must have complete resource information for all domain             names for which it is the authority. 
  630.  
  631.          3. It must periodically refresh authoritative information from             a master file or name server which holds the master. 
  632.  
  633.          4. If it caches information it must also handle TTL management             for that information. 
  634.  
  635.          5. It must answer simple queries. 
  636.  
  637.    Inverse queries 
  638.  
  639.       Name servers may also support inverse queries that map a       particular resource to a domain name or domain names that have       that resource.  For example, while a query might map a domain name       to a host address, the corresponding inverse query might map the       address back to the domain name. 
  640.  
  641.       Implementation of this service is optional in a name server, but       all name servers must at least be able to understand an inverse       query message and return an error response. 
  642.  
  643.       The domain system cannot guarantee the completeness or uniqueness       of inverse queries because the domain system is organized by       domain name rather than by host address or any other resource       type.  In general, a resolver or other program that wishes to       guarantee that an inverse query will work must use a name server       that is known to have the appropriate data, or ask all name       servers in a domain of interest. 
  644.  
  645.       For example, if a resolver wishes to perform an inverse query for       an arbitrary host on the ARPA Internet, it must consult a set of       name servers sufficient to know that all IN data was considered.       In practice, a single inverse query to a name server that has a       fairly comprehensive database should satisfy the vast majority of       inverse queries. 
  646.  
  647.       A detailed discussion of inverse queries is contained in [14]. 
  648.  
  649.  
  650.  
  651. Mockapetris                                                    [Page 25] 
  652.  
  653.  
  654. RFC 882                                                    November 1983                                   Domain Names - Concepts and Facilities 
  655.  
  656.     Completion services 
  657.  
  658.       Some existing systems provide the ability to complete partial       specifications of arguments.  The general principle is that the       user types the first few characters of the argument and then hits       an escape character to prompt the system to complete the rest.       Some completion systems require that the user type enough of the       argument to be unique; others do not. 
  659.  
  660.       Other systems allow the user to specify one argument and ask the       system to fill in other arguments.  For example, many mail systems       allow the user to specify a username without a host for local mail       delivery. 
  661.  
  662.       The domain system defines name server completion transactions that       perform the analogous service for the domain system.       Implementation of this service is optional in a name server, but       all name servers must at least be able to understand a completion       request and return an error response. 
  663.  
  664.       When a resolver wishes to request a completion, it sends a name       server a message that sets QNAME to the partial string, QTYPE to       the type of resource desired, and QCLASS to the desired class.       The completion request also includes a RR for the target domain.       The target domain RR identifies the preferred location of the       resource.  In completion requests, QNAME must still have a null       label to terminate the name, but its presence is ignored.  Note       that a completion request is not a query, but shares some of the       same field formats. 
  665.  
  666.       For example, a completion request might contain QTYPE=A, QNAME=B,       QCLASS=IN and a RR for ISI.ARPA.  This request asks for completion       for a resource whose name begins with "B" and is "close" to       ISI.ARPA.  This might be a typical shorthand used in the ISI       community which uses "B" as a way of referring to B.ISI.ARPA. 
  667.  
  668.       The first step in processing a completion request is to look for a       "whole label" match.  When the name server receives the request       mentioned above, it looks at all records that are of type A, class       IN, and whose domain name starts (on the left) with the labels of       QNAME, in this case, "B".  If multiple records match, the name       server selects those whose domain names match (from the right) the       most labels of the preferred domain name.  If there are still       multiple candidates, the name server selects the records that have       the shortest (in terms of octets in the name) domain name.  If       several records remain, then the name server returns them all. 
  669.  
  670.       If no records are found in the previous algorithm, the name server       assumes that the rightmost label in QNAME is not complete, and 
  671.  
  672.  Mockapetris                                                    [Page 26] 
  673.  
  674.  
  675. RFC 882                                                    November 1983                                   Domain Names - Concepts and Facilities 
  676.  
  677.        looks for records that match but require addition of characters to       the rightmost label of QNAME.  For example, the previous search       would not match BB.ARPA to B, but this search would.  If multiple       hits are found, the same discarding strategy is followed. 
  678.  
  679.       A detailed discussion of completion can be found in [14]. 
  680.  
  681. RESOLVERS 
  682.  
  683.    Introduction 
  684.  
  685.       Resolvers are programs that interface user programs to domain name       servers.  In the simplest case, a resolver receives a request from       a user program (e.g. mail programs, TELNET, FTP) in the form of a       subroutine call, system call etc., and returns the desired       information in a form compatible with the local host's data       formats. 
  686.  
  687.       Because a resolver may need to consult several name servers, the       amount of time that a resolver will take to complete can vary.       This variance is part of the justification for the split between       name servers and resolvers; name servers may use datagrams and       have a response time that is essentially equal to network delay       plus a short service time, while resolvers may take an essentially       indeterminate amount of time. 
  688.  
  689.       We expect to see two types of resolvers: simple resolvers that can       chain through multiple name servers when required, and more       complicated resolvers that cache resource records for use in       future queries. 
  690.  
  691.    Simple resolvers 
  692.  
  693.       A simple resolver needs the following capabilities: 
  694.  
  695.       1. It must know how to access a name server, and should know the          authoritative name server for the host that it services. 
  696.  
  697.       2. It must know the protocol capabilities for its clients so that          it can set the class fields of the queries it sends to return          information that is useful to its clients.  If the resolver          serves a client that has multiple protocol capabilities, it          should be able to support the preferences of the client. 
  698.  
  699.          The resolver for a multiple protocol client can either collect          information for all classes using the * class value, or iterate          on the classes supported by the client.  Note that in either          case, the resolver must understand the preferences of the host.          For example, the host that supports both CSNET and ARPA 
  700.  
  701.  Mockapetris                                                    [Page 27] 
  702.  
  703.  
  704. RFC 882                                                    November 1983                                   Domain Names - Concepts and Facilities 
  705.  
  706.           Internet protocols might prefer mail delivery (MD) to mail          forwarding (MF), regardless of protocol, or might prefer one          protocol regardless of whether MD or MF is required.  Care is          required to prevent loops. 
  707.  
  708.       3. The resolver must be capable of chaining through multiple name          servers to get to an authoritative name server for any query.          The resolver should guard against loops in referrals; a simple          policy is to discard referrals that don't match more of the          query name than the referring name server, and also to avoid          querying the same name server twice (This test should be done          using addresses of name servers instead of domain names to          avoid problems when a name server has multiple domain names or          errors are present in aliases). 
  709.  
  710.       4. The resolver must be able to try alternate name servers when a          name server doesn't respond. 
  711.  
  712.       5. The resolver must be able to communicate different failure          conditions to its client.  These failure conditions include          unknown domain name, unknown resource for a know domain name,          and inability to access any of the authoritative name servers          for a domain. 
  713.  
  714.       6. If the resolver uses datagrams for queries, it must recover          from lost and duplicate datagrams. 
  715.  
  716.    Resolvers with cache management 
  717.  
  718.       Caching provides a tool for improving the performance of name       service, but also is a potential source of incorrect results.  For       example, a database might cache information that is later changed       in the authoritative name servers.  While this problem can't be       eliminated without eliminating caching, it can be reduced to an       infrequent problem through the use of timeouts. 
  719.  
  720.       When name servers return resource records, each record has an       associated time-to-live (TTL) field.  This field is expressed in       seconds, and has 16 bits of significance. 
  721.  
  722.       When a resolver caches a returned resource record it must also       remember the TTL field.  The resolver must discard the record when       the equivalent amount of time has passed.  If the resolver shares       a database with a name server, it must decrement the TTL field of       imported records periodically rather than simply deleting the       record.  This strategy is necessary to avoid exporting a resource       record whose TTL field doesn't reflect the amount of time that the       resource record has been cached.  Of course, the resolver should 
  723.  
  724.  
  725.  
  726. Mockapetris                                                    [Page 28] 
  727.  
  728.  
  729. RFC 882                                                    November 1983                                   Domain Names - Concepts and Facilities 
  730.  
  731.        not decrement the TTL fields of records for which the associated       name server is an authority. 
  732.  
  733.  
  734.  
  735.  
  736.  
  737.  
  738.  
  739.  
  740.  
  741.  
  742.  
  743.  
  744.  
  745.  
  746.  
  747.  
  748.  
  749.  
  750.  
  751.  
  752.  
  753.  
  754.  
  755.  
  756.  
  757.  
  758.  
  759.  
  760.  
  761.  
  762.  
  763.  
  764.  
  765.  
  766.  
  767.  
  768.  
  769.  
  770.  
  771.  
  772.  
  773.  
  774.  
  775.  
  776.  
  777.  
  778.  
  779.  
  780.  
  781. Mockapetris                                                    [Page 29] 
  782.  
  783.  
  784. RFC 882                                                    November 1983                                   Domain Names - Concepts and Facilities 
  785.  
  786.  Appendix 1 - Domain Name Syntax Specification 
  787.  
  788.    The preferred syntax of domain names is given by the following BNF    rules.  Adherence to this syntax will result in fewer problems with    many applications that use domain names (e.g., mail, TELNET).  Note    that some applications described in [14] use domain names containing    binary information and hence do not follow this syntax. 
  789.  
  790.       <domain> ::=  <subdomain> | " " 
  791.  
  792.       <subdomain> ::=  <label> | <subdomain> "." <label> 
  793.  
  794.       <label> ::= <letter> [ [ <ldh-str> ] <let-dig> ] 
  795.  
  796.       <ldh-str> ::= <let-dig-hyp> | <let-dig-hyp> <ldh-str> 
  797.  
  798.       <let-dig-hyp> ::= <let-dig> | "-" 
  799.  
  800.       <let-dig> ::= <letter> | <digit> 
  801.  
  802.       <letter> ::= any one of the 52 alphabetic characters A through Z       in upper case and a through z in lower case 
  803.  
  804.       <digit> ::= any one of the ten digits 0 through 9 
  805.  
  806.    Note that while upper and lower case letters are allowed in domain    names no significance is attached to the case.  That is, two names    with the same spelling but different case are to be treated as if    identical. 
  807.  
  808.    The labels must follow the rules for ARPANET host names.  They must    start with a letter, end with a letter or digit, and have as interior    characters only letters, digits, and hyphen.  There are also some    restrictions on the length.  Labels must be 63 characters or less. 
  809.  
  810.    For example, the following strings identify hosts in the ARPA    Internet: 
  811.  
  812.       F.ISI.ARPA     LINKABIT-DCN5.ARPA     UCL-TAC.ARPA 
  813.  
  814.  
  815.  
  816.  
  817.  
  818.  
  819.  
  820.  
  821.  
  822.  
  823.  
  824.  Mockapetris                                                    [Page 30] 
  825.  
  826.  
  827. RFC 882                                                    November 1983                                   Domain Names - Concepts and Facilities 
  828.  
  829.  REFERENCES and BIBLIOGRAPHY 
  830.  
  831.    [1]  E. Feinler, K. Harrenstien, Z. Su, and V. White, "DOD Internet         Host Table Specification", RFC 810, Network Information Center,         SRI International, March 1982. 
  832.  
  833.    [2]  J. Postel, "Computer Mail Meeting Notes", RFC 805,         USC/Information Sciences Institute, February 1982. 
  834.  
  835.    [3]  Z. Su, and J. Postel, "The Domain Naming Convention for Internet         User Applications", RFC 819, Network Information Center, SRI         International, August 1982. 
  836.  
  837.    [4]  Z. Su, "A Distributed System for Internet Name Service",         RFC 830, Network Information Center, SRI International,         October 1982. 
  838.  
  839.    [5]  K. Harrenstien, and V. White, "NICNAME/WHOIS", RFC 812, Network         Information Center, SRI International, March 1982. 
  840.  
  841.    [6]  M. Solomon, L. Landweber, and D. Neuhengen, "The CSNET Name         Server", Computer Networks, vol 6, nr 3, July 1982. 
  842.  
  843.    [7]  K. Harrenstien, "NAME/FINGER", RFC 742, Network Information         Center, SRI International, December 1977. 
  844.  
  845.    [8]  J. Postel, "Internet Name Server", IEN 116, USC/Information         Sciences Institute, August 1979. 
  846.  
  847.    [9]  K. Harrenstien, V. White, and E. Feinler, "Hostnames Server",         RFC 811, Network Information Center, SRI International,         March 1982. 
  848.  
  849.    [10] J. Postel, "Transmission Control Protocol", RFC 793,         USC/Information Sciences Institute, September 1981. 
  850.  
  851.    [11] J. Postel, "User Datagram Protocol", RFC 768, USC/Information         Sciences Institute, August 1980. 
  852.  
  853.    [12] J. Postel, "Simple Mail Transfer Protocol", RFC 821,         USC/Information Sciences Institute, August 1980. 
  854.  
  855.    [13] J. Reynolds, and J. Postel, "Assigned Numbers", RFC 870,         USC/Information Sciences Institute, October 1983. 
  856.  
  857.    [14] P. Mockapetris, "Domain Names - Implementation and         Specification", RFC 883, USC/Information Sciences Institute,         November 1983. 
  858.  
  859.  
  860.  
  861. Mockapetris                                                    [Page 31] 
  862.  
  863.