home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / unix / volume1 / rfc_882 < prev    next >
Internet Message Format  |  1986-11-30  |  80KB

  1. Date: Thu, 28 Feb 85 12:00:12 pst
  2. From: ihnp4!uw-beaver!fluke!joe (Joe Kelsey)
  3. Subject: RFC 882 - Domain Names - Concepts and Facilities
  4. To: uw-beaver!ihnp4!cbosgd!genrad!john
  5.  
  6.  
  7. Network Working Group                                     P. Mockapetris
  8. Request for Comments:  882                                           ISI
  9.                                                            November 1983
  10.  
  11.                  DOMAIN NAMES - CONCEPTS and FACILITIES
  12.  
  13.         +-----------------------------------------------------+
  14.         |                                                     |
  15.         | This RFC introduces domain style names, their use   |
  16.         | for ARPA Internet mail and host address support,    |
  17.         | and the protocols and servers used to implement     |
  18.         | domain name facilities.                             |
  19.         |                                                     |
  20.         | This memo describes the conceptual framework of the |
  21.         | domain system and some uses, but it omits many      |
  22.         | uses, fields, and implementation details.  A        |
  23.         | complete specification of formats, timeouts, etc.   |
  24.         | is presented in RFC 883, "Domain Names -            |
  25.         | Implementation and Specification".  That RFC        |
  26.         | assumes that the reader is familiar with the        |
  27.         | concepts discussed in this memo.                    |
  28.         |                                                     |
  29.         +-----------------------------------------------------+
  30.  
  31. INTRODUCTION
  32.  
  33.    The need for domain names
  34.  
  35.       As applications grow to span multiple hosts, then networks, and
  36.       finally internets, these applications must also span multiple
  37.       administrative boundaries and related methods of operation
  38.       (protocols, data formats, etc).  The number of resources (for
  39.       example mailboxes), the number of locations for resources, and the
  40.       diversity of such an environment cause formidable problems when we
  41.       wish to create consistent methods for referencing particular
  42.       resources that are similar but scattered throughout the
  43.       environment.
  44.  
  45.       The ARPA Internet illustrates the size-related problems; it is a
  46.       large system and is likely to grow much larger.  The need to have
  47.       a mapping between host names (e.g., USC-ISIF) and ARPA Internet
  48.       addresses (e.g., 10.2.0.52) is beginning to stress the existing
  49.       mechanisms.  Currently hosts in the ARPA Internet are registered
  50.       with the Network Information Center (NIC) and listed in a global
  51.       table (available as the file <NETINFO>HOSTS.TXT on the SRI-NIC
  52.       host) [1].  The size of this table, and especially the frequency
  53.       of updates to the table are near the limit of manageability.  What
  54.       is needed is a distributed database that performs the same
  55.       function, and hence avoids the problems caused by a centralized
  56.       database.
  57.  
  58.       The problem for computer mail is more severe.  While mail system
  59.       implementers long ago recognized the impossibility of centralizing
  60.  
  61.  
  62. Mockapetris                                                     [Page 1]
  63.  
  64.  
  65. RFC 882                                                    November 1983
  66.                                   Domain Names - Concepts and Facilities
  67.  
  68.  
  69.       mailbox names, they have also created an increasingly large and
  70.       irregular set of methods for identifying the location of a
  71.       mailbox.  Some of these methods involve the use of routes and
  72.       forwarding hosts as part of the mail destination address, and
  73.       consequently force the mail user to know multiple address formats,
  74.       the capabilities of various forwarders, and ad hoc tricks for
  75.       passing address specifications through intermediaries.
  76.  
  77.       These problems have common characteristics that suggest the nature
  78.       of any solution:
  79.  
  80.          The basic need is for a consistent name space which will be
  81.          used for referring to resources.  In order to avoid the
  82.          problems caused by ad hoc encodings, names should not contain
  83.          addresses, routes, or similar information as part of the name.
  84.  
  85.          The sheer size of the database and frequency of updates suggest
  86.          that it must be maintained in a distributed manner, with local
  87.          caching to improve performance.  Approaches that attempt to
  88.          collect a consistent copy of the entire database will become
  89.          more and more expensive and difficult, and hence should be
  90.          avoided.  The same principle holds for the structure of the
  91.          name space, and in particular mechanisms for creating and
  92.          deleting names; these should also be distributed.
  93.  
  94.          The costs of implementing such a facility dictate that it be
  95.          generally useful, and not restricted to a single application.
  96.          We should be able to use names to retrieve host addresses,
  97.          mailbox data, and other as yet undetermined information.
  98.  
  99.          Because we want the name space to be useful in dissimilar
  100.          networks, it is unlikely that all users of domain names will be
  101.          able to agree on the set of resources or resource information
  102.          that names will be used to retrieve.  Hence names refer to a
  103.          set of resources, and queries contain resource identifiers.
  104.          The only standard types of information that we expect to see
  105.          throughout the name space is structuring information for the
  106.          name space itself, and resources that are described using
  107.          domain names and no nonstandard data.
  108.  
  109.          We also want the name server transactions to be independent of
  110.          the communications system that carries them. Some systems may
  111.          wish to use datagrams for simple queries and responses, and
  112.          only establish virtual circuits for transactions that need the
  113.          reliability (e.g. database updates, long transactions); other
  114.          systems will use virtual circuits exclusively.
  115.  
  116.  
  117.  
  118.  
  119.  
  120. Mockapetris                                                     [Page 2]
  121.  
  122.  
  123. RFC 882                                                    November 1983
  124.                                   Domain Names - Concepts and Facilities
  125.  
  126.  
  127.    Elements of the solution
  128.  
  129.       The proposed solution has three major components:
  130.  
  131.          The DOMAIN NAME SPACE, which is a specification for a tree
  132.          structured name space.  Conceptually, each node and leaf of the
  133.          domain name space tree names a set of information, and query
  134.          operations are attempts to extract specific types of
  135.          information from a particular set.  A query names the domain
  136.          name of interest and describes the type of resource information
  137.          that is desired.  For example, the ARPA Internet uses some of
  138.          its domain names to identify hosts; queries for address
  139.          resources return ARPA Internet host addresses.  However, to
  140.          preserve the generality of the domain mechanism, domain names
  141.          are not required to have a one-to-one correspondence with host
  142.          names, host addresses, or any other type of information.
  143.  
  144.          NAME SERVERS are server programs which hold information about
  145.          the domain tree's structure and set information.  A name server
  146.          may cache structure or set information about any part of the
  147.          domain tree, but in general a particular name server has
  148.          complete information about a subset of the domain space, and
  149.          pointers to other name servers that can be used to lead to
  150.          information from any part of the domain tree.  Name servers
  151.          know the parts of the domain tree for which they have complete
  152.          information; these parts are called ZONEs; a name server is an
  153.          AUTHORITY for these parts of the name space.
  154.  
  155.          RESOLVERS are programs that extract information from name
  156.          servers in response to user requests.  Resolvers must be able
  157.          to access at least one name server and use that name server's
  158.          information to answer a query directly, or pursue the query
  159.          using referrals to other name servers.  A resolver will
  160.          typically be a system routine that is directly accessible to
  161.          user programs; hence no protocol is necessary between the
  162.          resolver and the user program.
  163.  
  164.       These three components roughly correspond to the three layers or
  165.       views of the domain system:
  166.  
  167.          From the user's point of view, the domain system is accessed
  168.          through simple procedure or OS calls to resolvers.  The domain
  169.          space consists of a single tree and the user can request
  170.          information from any section of the tree.
  171.  
  172.          From the resolver's point of view, the domain system is
  173.          composed of an unknown number of name servers.  Each name
  174.          server has one or more pieces of the whole domain tree's data,
  175.  
  176.  
  177.  
  178. Mockapetris                                                     [Page 3]
  179.  
  180.  
  181. RFC 882                                                    November 1983
  182.                                   Domain Names - Concepts and Facilities
  183.  
  184.  
  185.          but the resolver views each of these databases as essentially
  186.          static.
  187.  
  188.          From a name server's point of view, the domain system consists
  189.          of separate sets of local information called zones.  The name
  190.          server has local copies of some of the zones.  The name server
  191.          must periodically refresh its zones from master copies in local
  192.          files or foreign name servers.  The name server must
  193.          concurrently process queries that arrive from resolvers using
  194.          the local zones.
  195.  
  196.       In the interests of performance, these layers blur a bit.  For
  197.       example, resolvers on the same machine as a name server may share
  198.       a database and may also introduce foreign information for use in
  199.       later queries.  This cached information is treated differently
  200.       from the authoritative data in zones.
  201.  
  202.    Database model
  203.  
  204.       The organization of the domain system derives from some
  205.       assumptions about the needs and usage patterns of its user
  206.       community and is designed to avoid many of the the complicated
  207.       problems found in general purpose database systems.
  208.  
  209.       The assumptions are:
  210.  
  211.          The size of the total database will initially be proportional
  212.          to the number of hosts using the system, but will eventually
  213.          grow to be proportional to the number of users on those hosts
  214.          as mailboxes and other information are added to the domain
  215.          system.
  216.  
  217.          Most of the data in the system will change very slowly (e.g.,
  218.          mailbox bindings, host addresses), but that the system should
  219.          be able to deal with subsets that change more rapidly (on the
  220.          order of minutes).
  221.  
  222.          The administrative boundaries used to distribute responsibility
  223.          for the database will usually correspond to organizations that
  224.          have one or more hosts.  Each organization that has
  225.          responsibility for a particular set of domains will provide
  226.          redundant name servers, either on the organization's own hosts
  227.          or other hosts that the organization arranges to use.
  228.  
  229.          Clients of the domain system should be able to identify trusted
  230.          name servers they prefer to use before accepting referrals to
  231.          name servers outside of this "trusted" set.
  232.  
  233.          Access to information is more critical than instantaneous
  234.  
  235.  
  236. Mockapetris                                                     [Page 4]
  237.  
  238.  
  239. RFC 882                                                    November 1983
  240.                                   Domain Names - Concepts and Facilities
  241.  
  242.  
  243.          updates or guarantees of consistency.  Hence the update process
  244.          allows updates to percolate out though the users of the domain
  245.          system rather than guaranteeing that all copies are
  246.          simultaneously updated.  When updates are unavailable due to
  247.          network or host failure, the usual course is to believe old
  248.          information while continuing efforts to update it.  The general
  249.          model is that copies are distributed with timeouts for
  250.          refreshing.  The distributor sets the timeout value and the
  251.          recipient of the distribution is responsible for performing the
  252.          refresh.  In special situations, very short intervals can be
  253.          specified, or the owner can prohibit copies.
  254.  
  255.          Some users will wish to access the database via datagrams;
  256.          others will prefer virtual circuits.  The domain system is
  257.          designed so that simple queries and responses can use either
  258.          style, although refreshing operations need the reliability of
  259.          virtual circuits.  The same overall message format is used for
  260.          all communication.  The domain system does not assume any
  261.          special properties of the communications system, and hence
  262.          could be used with any datagram or virtual circuit protocol.
  263.  
  264.          In any system that has a distributed database, a particular
  265.          name server may be presented with a query that can only be
  266.          answered by some other server.  The two general approaches to
  267.          dealing with this problem are "recursive", in which the first
  268.          server pursues the query for the client at another server, and
  269.          "iterative", in which the server refers the client to another
  270.          server and lets the client pursue the query.  Both approaches
  271.          have advantages and disadvantages, but the iterative approach
  272.          is preferred for the datagram style of access.  The domain
  273.          system requires implementation of the iterative approach, but
  274.          allows the recursive approach as an option.  The optional
  275.          recursive style is discussed in [14], and omitted from further
  276.          discussion in this memo.
  277.  
  278.       The domain system assumes that all data originates in master files
  279.       scattered through the hosts that use the domain system.  These
  280.       master files are updated by local system administrators.  Master
  281.       files are text files that are read by a local name server, and
  282.       hence become available to users of the domain system.  A standard
  283.       format for these files is given in [14].
  284.  
  285.       The standard format allows these files to be exchanged between
  286.       hosts (via FTP, mail, or some other mechanism); this facility is
  287.       useful when an organization wants a domain, but doesn't want to
  288.       support a name server.  The organization can maintain the master
  289.       files locally using a text editor, transfer them to a foreign host
  290.       which runs a name server, and then arrange with the system
  291.       administrator of the name server to get the files loaded.
  292.  
  293.  
  294. Mockapetris                                                     [Page 5]
  295.  
  296.  
  297. RFC 882                                                    November 1983
  298.                                   Domain Names - Concepts and Facilities
  299.  
  300.  
  301.       Each host's name servers and resolvers are configured by a local
  302.       system administrator.  For a name server, this configuration data
  303.       includes the identity of local master files and instructions on
  304.       which non-local master files are to be loaded from foreign
  305.       servers.  The name server uses the master files or copies to load
  306.       its zones.  For resolvers, the configuration data identifies the
  307.       name servers which should be the primary sources of information.
  308.  
  309.       The domain system defines procedures for accessing the data and
  310.       for referrals to other name servers.  The domain system also
  311.       defines procedures for caching retrieved data and for periodic
  312.       refreshing of data defined by the system administrator.
  313.  
  314.       The system administrators provide:
  315.  
  316.          The definition of zone boundaries
  317.  
  318.          Master files of data
  319.  
  320.          Updates to master files
  321.  
  322.          Statements of the refresh policies desired
  323.  
  324.       The domain system provides:
  325.  
  326.          Standard formats for resource data
  327.  
  328.          Standard methods for querying the database
  329.  
  330.          Standard methods for name servers to refresh local data from
  331.          foreign name servers
  332.  
  333. DOMAIN NAME SPACE
  334.  
  335.    Name space specifications and terminology
  336.  
  337.       The domain name space is a tree structure.  Each node and leaf on
  338.       the tree corresponds to a resource set (which may be empty).  Each
  339.       node and leaf has an associated label.  Labels are NOT guaranteed
  340.       to be unique, with the exception of the root node, which has a
  341.       null label.  The domain name of a node or leaf is the path from
  342.       the root of the tree to the node or leaf.  By convention, the
  343.       labels that compose a domain name are read left to right, from the
  344.       most specific (lowest) to the least specific (highest).
  345.  
  346.       Internally, programs that manipulate domain names represent them
  347.       as sequences of labels, where each label is a length octet
  348.       followed by an octet string.  Because all domain names end at the
  349.       root, which has a null string for a label, these internal
  350.  
  351.  
  352. Mockapetris                                                     [Page 6]
  353.  
  354.  
  355. RFC 882                                                    November 1983
  356.                                   Domain Names - Concepts and Facilities
  357.  
  358.  
  359.       representations can use a length byte of zero to terminate a
  360.       domain name.  When domain names are printed, labels in a path are
  361.       separated by dots (".").  The root label and its associated dot
  362.       are omitted from printed domain names, but the root can be named
  363.       by a null domain name (" " in this memo).
  364.  
  365.       To simplify implementations, the total number of octets that
  366.       represent label octets and label lengths is limited to 255.  Thus
  367.       a printed domain name can be up to 254 characters.
  368.  
  369.       A special label is defined that matches any other label.  This
  370.       label is the asterisk or "*".  An asterisk matches a single label.
  371.       Thus *.ARPA matches FOO.ARPA, but does not match FOO.BAR.ARPA.
  372.       The asterisk is mainly used to create default resource records at
  373.       the boundary between protocol families, and requires prudence in
  374.       its use.
  375.  
  376.       A domain is identified by a domain name, and consists of that part
  377.       of the domain name space that is at or below the domain name which
  378.       specifies the domain.  A domain is a subdomain of another domain
  379.       if it is contained within that domain.  This relationship can be
  380.       tested by seeing if the subdomain's name has the containing
  381.       domain's name as the right part of its name.  For example, A.B.C.D
  382.       is a subdomain of B.C.D, C.D, D, and " ".
  383.  
  384.       This tree structure is intended to parallel the administrative
  385.       organization and delegation of authority.  Potentially, each node
  386.       or leaf on the tree can create new subdomains ad infinitum.  In
  387.       practice, this delegation can be limited by the administrator of
  388.       the name servers that manage the domain space and resource data.
  389.  
  390.       The following figure shows an example of a domain name space.
  391.  
  392.                                    |                            
  393.                 +------------------+------------------+         
  394.                 |                  |                  |         
  395.               COLORS            FLAVORS             TRUTH       
  396.                 |                  |                            
  397.           +-----+-----+            |                            
  398.           |     |     |         NATURAL                         
  399.          RED  BLUE  GREEN          |                            
  400.                                    |                            
  401.                    +---------------+---------------+            
  402.                    |               |               |            
  403.                CHOCOLATE        VANILLA        STRAWBERRY       
  404.  
  405.       In this example, the root domain has three immediate subdomains:
  406.       COLORS, FLAVORS, and TRUTH.  The FLAVORS domain has one immediate
  407.       subdomain named NATURAL.FLAVORS.  All of the leaves are also
  408.  
  409.  
  410. Mockapetris                                                     [Page 7]
  411.  
  412.  
  413. RFC 882                                                    November 1983
  414.                                   Domain Names - Concepts and Facilities
  415.  
  416.  
  417.       domains.  This domain tree has the names " "(the root), COLORS,
  418.       RED.COLORS, BLUE.COLORS, GREEN.COLORS, FLAVORS, NATURAL.FLAVORS,
  419.       CHOCOLATE.NATURAL.FLAVORS, VANILLA.NATURAL.FLAVORS,
  420.       STRAWBERRY.NATURAL.FLAVORS, and TRUTH.  If we wished to add a new
  421.       domain of ARTIFICIAL under FLAVORS, FLAVORS would typically be the
  422.       administrative entity that would decide; if we wished to create
  423.       CHIP and MOCHA names under CHOCOLATE, CHOCOLATE.NATURAL.FLAVORS
  424.       would typically be the appropriate administrative entity.
  425.  
  426.    Resource set information
  427.  
  428.       A domain name identifies a set of resource information.  The set
  429.       of resource information associated with a particular name is
  430.       composed of separate resource records (RRs).
  431.  
  432.       Each resource record has the following major components:
  433.  
  434.          The domain name which identifies resource set that holds this
  435.          record, and hence the "owner" of the information.  For example,
  436.          a RR that specifies a host address has a domain name the
  437.          specifies the host having that address.  Thus F.ISI.ARPA might
  438.          be the owner of a RR which specified an address field of
  439.          10.2.0.52.  Since name servers typically store their resource
  440.          information in tree structures paralleling the organization of
  441.          the domain space, this information can usually be stored
  442.          implicitly in the database; however it is always included in
  443.          each resource record carried in a message.
  444.  
  445.          Other information used to manage the RR, such as length fields,
  446.          timeouts, etc.  This information is omitted in much of this
  447.          memo, but is discussed in [14].
  448.  
  449.          A resource type field that specifies the type of the resource
  450.          in this resource record.  Types refer to abstract resources
  451.          such as host addresses or mail delivery agents.  The type field
  452.          is two octets long and uses an encoding that is standard
  453.          throughout the domain name system.
  454.  
  455.          A class field identifies the format of the resource data, such
  456.          as the ARPA Internet format (IN) or the Computer Science
  457.          Network format (CSNET), for certain RR types (such as address
  458.          data).  Note that while the class may separate different
  459.          protocol families, networks, etc. it does not do so in all
  460.          cases.  For example, the IN class uses 32 bit IP addresses
  461.          exclusively, but the CSNET class uses 32 bit IP addresses, X.25
  462.          addresses, and phone numbers.  Thus the class field should be
  463.          used as a guide for interpreting the resource data.  The class
  464.          field is two octets long and uses an encoding that is standard
  465.          throughout the domain name system.
  466.  
  467.  
  468. Mockapetris                                                     [Page 8]
  469.  
  470.  
  471. RFC 882                                                    November 1983
  472.                                   Domain Names - Concepts and Facilities
  473.  
  474.  
  475.          Resource data that describes the resource.  The format of this
  476.          data can be determined given the type and class fields, but
  477.          always starts with a two octet length field that allows a name
  478.          server or resolver to determine the boundaries of the resource
  479.          data in any transaction, even if it cannot "understand" the
  480.          resource data itself.  Thus name servers and resolvers can hold
  481.          and pass on records which they cannot interpret.  The format of
  482.          the internal data is restricted only by the maximum length of
  483.          65535 octets; for example the host address record might specify
  484.          a fixed 32 bit number for one class, and a variable length list
  485.          of addresses in another class.
  486.  
  487.       While the class field in effect partitions the resource data in
  488.       the domain name system into separate parallel sections according
  489.       to class, services can span class boundaries if they use
  490.       compatible resource data formats.  For example, the domain name
  491.       system uses compatible formats for structure information, and the
  492.       mail data decouples mail agent identification from details of how
  493.       to contact the agent (e.g. host addresses).
  494.  
  495.       This memo uses the following types in its examples:
  496.  
  497.          A     - the host address associated with the domain name
  498.  
  499.          MF    - identifies a mail forwarder for the domain
  500.  
  501.          MD    - identifies a mail destination for the domain
  502.  
  503.          NS    - the authoritative name server for the domain
  504.  
  505.          SOA   - identifies the start of a zone of authority
  506.  
  507.          CNAME - identifies the canonical name of an alias
  508.  
  509.       This memo uses the following classes in its examples:
  510.  
  511.          IN - the ARPA Internet system
  512.  
  513.          CS - the CSNET system
  514.  
  515.       The first type of resource record holds a host name to host
  516.       address binding.  Its fields are:
  517.  
  518.   +--------+--------+--------+--------------//----------------------+
  519.   |<owner> |   A    | <class>| <class specific address>information  |
  520.   +--------+--------+--------+--------------//----------------------+
  521.  
  522.  
  523.  
  524.  
  525.  
  526. Mockapetris                                                     [Page 9]
  527.  
  528.  
  529. RFC 882                                                    November 1983
  530.                                   Domain Names - Concepts and Facilities
  531.  
  532.  
  533.       The content of the class specific information varies according to
  534.       the value in the CLASS field; for the ARPA Internet, it is the 32
  535.       bit ARPA Internet address of the host, for the CSNET it might be
  536.       the phone number of the host.  For example, F.ISI.ARPA might have
  537.       two A records of the form:
  538.  
  539.        +----------+--------+--------+----------------------------+
  540.        |F.ISI.ARPA|   A    |   IN   |          10.2.0.52         |
  541.        +----------+--------+--------+----------------------------+
  542.                                   and
  543.        +----------+--------+--------+----------------------------+
  544.        |F.ISI.ARPA|   A    |   CS   |         213-822-2112       |
  545.        +----------+--------+--------+----------------------------+
  546.  
  547.       Note that the data formats for the A type are class dependent, and
  548.       the Internet address and phone number formats shown above are for
  549.       purposes of illustration only.  The actual data formats are
  550.       specified in [14].  For example, CS class data for type A records
  551.       might actually be a list of Internet addresses, phone numbers and
  552.       TELENET addresses.
  553.  
  554.       The mail forwarder (MF) and mail delivery (MD) records have the
  555.       following format:
  556.  
  557.         +--------+--------+--------+----------------------------+
  558.         |<owner> | MD/MF  | <class>|       <domain name>        |
  559.         +--------+--------+--------+----------------------------+
  560.  
  561.       The <domain name> field is a domain name of the host that will
  562.       handle mail; note that this domain name may be completely
  563.       different from the domain name which names the resource record.
  564.       For example, F.ISI.ARPA might have two records of the form:
  565.  
  566.        +----------+--------+--------+----------------------------+
  567.        |F.ISI.ARPA|  MD    |   IN   |         F.ISI.ARPA         |
  568.        +----------+--------+--------+----------------------------+
  569.                                   and
  570.        +----------+--------+--------+----------------------------+
  571.        |F.ISI.ARPA|  MF    |   IN   |         B.ISI.ARPA         |
  572.        +----------+--------+--------+----------------------------+
  573.  
  574.       These records mean that mail for F.ISI.ARPA can either be
  575.       delivered to the host F.ISI.ARPA or forwarded to B.ISI.ARPA, which
  576.       will accept responsibility for its eventual delivery.  In
  577.       principle, an additional name lookup is required to map the domain
  578.       name of the host to the appropriate address, in practice this
  579.       information is usually returned in the response to the mail query.
  580.  
  581.       The SOA and NS types of resource records are used to define limits
  582.  
  583.  
  584. Mockapetris                                                    [Page 10]
  585.  
  586.  
  587. RFC 882                                                    November 1983
  588.                                   Domain Names - Concepts and Facilities
  589.  
  590.  
  591.       of authority.  The domain name given by the owner field of a SOA
  592.       record is the start of a zone; the domain name given by the owner
  593.       field of a NS record identifies a point in the name space where
  594.       authority has been delegated, and hence marks the zone boundary.
  595.       Except in the case where a name server delegates authority to
  596.       itself, the SOA identifies the top limit of authority, and NS
  597.       records define the first name outside of a zone.  These resource
  598.       records have a standard format for all of the name space:
  599.  
  600.       +----------+--------+--------+-----------------------------+
  601.       | <owner>  |   SOA  | <class>|       <domain name, etc>    |
  602.       +----------+--------+--------+-----------------------------+
  603.                                     
  604.       +----------+--------+--------+-----------------------------+
  605.       | <owner>  |   NS   | <class>|       <domain name>         |
  606.       +----------+--------+--------+-----------------------------+
  607.  
  608.       The SOA record marks the start of a zone when it is present in a
  609.       database; the NS record both marks the end of a zone started by an
  610.       SOA (if a higher SOA is present) and also points to a name server
  611.       that has a copy of the zone specified by the <owner. field of the
  612.       NS record.
  613.  
  614.       The <domain name, etc> in the SOA record specifies the original
  615.       source of the information in the zone and other information used
  616.       by name servers to organize their activities.  SOA records are
  617.       never cached (otherwise they would create false zones); they can
  618.       only be created in special name server maintenance operations.
  619.  
  620.       The NS record says that a name server which is authoritative for
  621.       records of the given CLASS can be found at <domain name>.
  622.  
  623.    Queries
  624.  
  625.       Queries to a name server must include a domain name which
  626.       identifies the target resource set (QNAME), and the type and class
  627.       of desired resource records.  The type and class fields in a query
  628.       can include any of the corresponding type and class fields that
  629.       are defined for resource records; in addition, the query type
  630.       (QTYPE) and query class (QCLASS) fields may contain special values
  631.       that match more than one of the corresponding fields in RRs.
  632.  
  633.       For example, the QTYPE field may contain:
  634.  
  635.          MAILA - matches all mail agent RRs (e.g. MD and MF).
  636.  
  637.          *     - matches any RR type.
  638.  
  639.  
  640.  
  641.  
  642. Mockapetris                                                    [Page 11]
  643.  
  644.  
  645. RFC 882                                                    November 1983
  646.                                   Domain Names - Concepts and Facilities
  647.  
  648.  
  649.       The QCLASS field may contain:
  650.  
  651.          *    - matches any RR class.
  652.  
  653.       Using the query domain name, QTYPE, and QCLASS, the name server
  654.       looks for matching RRs.  In addition to relevant records, the name
  655.       server may return RRs that point toward a name server that has the
  656.       desired information or RRs that are expected to be useful in
  657.       interpreting the relevant RRs.  For example a name server that
  658.       doesn't have the requested information may know a name server that
  659.       does; a name server that returns a domain name in a relevant RR
  660.       may also return the RR that binds that domain name to an address.
  661.  
  662.       Note that the QCLASS=* construct requires special interpretation
  663.       regarding authority.  Since a name server may not know all of the
  664.       classes available in the domain system, it can never know if it is
  665.       authoritative for all classes.  Hence responses to QCLASS=*
  666.       queries can never be authoritative.
  667.  
  668.    Example space
  669.  
  670.       For purposes of exposition, the following name space is used for
  671.       the remainder of this memo:
  672.  
  673.                                     |                            
  674.                  +------------------+------------------+         
  675.                  |                  |                  |         
  676.                 DDN               ARPA               CSNET       
  677.                  |                  |                  |         
  678.            +-----+-----+            |            +-----+-----+   
  679.            |     |     |            |            |           |   
  680.           JCS  ARMY  NAVY           |           UDEL        UCI  
  681.                                     |                            
  682.            +--------+---------------+---------------+--------+   
  683.            |        |               |               |        |   
  684.           DTI      MIT             ISI             UDEL     NBS  
  685.                     |               |                            
  686.                 +---+---+       +---+---+                        
  687.                 |       |       |   |   |                        
  688.                DMS     AI       A   B   F                        
  689.  
  690.  
  691.  
  692.  
  693.  
  694.  
  695.  
  696.  
  697.  
  698.  
  699.  
  700. Mockapetris                                                    [Page 12]
  701.  
  702.  
  703. RFC 882                                                    November 1983
  704.                                   Domain Names - Concepts and Facilities
  705.  
  706.  
  707. NAME SERVERS
  708.  
  709.    Introduction
  710.  
  711.       Name servers store a distributed database consisting of the
  712.       structure of the domain name space, the resource sets associated
  713.       with domain names, and other information used to coordinate
  714.       actions between name servers.
  715.  
  716.       In general, a name server will be an authority for all or part of
  717.       a particular domain.  The region covered by this authority is
  718.       called a zone.  Name servers may be responsible for no
  719.       authoritative data, and hence have no zones, or may have several
  720.       zones.  When a name server has multiple zones, the zones may have
  721.       no common borders or zones may be contiguous.
  722.  
  723.       While administrators should not construct overlapping zones, and
  724.       name servers must defend against overlapping zones, overlapping is
  725.       regarded as a non-fatal flaw in the database.  Hence the measures
  726.       taken to protect against it are omitted for the remainder of this
  727.       memo.  A detailed discussion can be found in [14].
  728.  
  729.       When presented with a query for a domain name over which it has
  730.       authority, a name server returns the desired resource information
  731.       or an indication that the query refers to a domain name or
  732.       resource that does not exist.  If a name server is presented with
  733.       a query for a domain name that is not within its authority, it may
  734.       have the desired information, but it will also return a response
  735.       that points toward an authoritative name server.  If a name server
  736.       is not an authority for a query, it can never return a negative
  737.       response.
  738.  
  739.       There is no requirement that a name server for a domain reside in
  740.       a host which has a name in the same domain, although this will
  741.       usually be the case.  There is also no restriction on the number
  742.       of name servers that can have authority over a particular domain;
  743.       most domains will have redundant authoritative name servers.  The
  744.       assumption is that different authoritative copies are identical,
  745.       even though inconsistencies are possible as updates are made.
  746.  
  747.       Name server functions are designed to allow for very simple
  748.       implementations of name servers.  The simplest name server has a
  749.       static set of information and uses datagrams to receive queries
  750.       and return responses.
  751.  
  752.       More sophisticated name server implementations can improve the
  753.       performance of their clients by caching information from other
  754.       domains.  Although this information can be acquired in a number of
  755.       ways, the normal method is to store the information acquired by a
  756.  
  757.  
  758. Mockapetris                                                    [Page 13]
  759.  
  760.  
  761. RFC 882                                                    November 1983
  762.                                   Domain Names - Concepts and Facilities
  763.  
  764.  
  765.       resolver when the resolver consults other name servers.  In a
  766.       sophisticated host, the resolver and name server will coordinate
  767.       their actions and use a shared database.  This cooperation
  768.       requires the incorporation of a time-to-live (TTL) field in all
  769.       cached resource records.  Caching is discussed in the resolver
  770.       section of this memo; this section is devoted to the actions of a
  771.       name servers that don't cache.
  772.  
  773.       In order to free simple name servers of the requirement of
  774.       managing these timeouts, simple name servers should only contain
  775.       resource records that are expected to remain constant over very
  776.       long periods or resource records for which the name server is an
  777.       authority.  In the following discussion, the TTL field is assumed
  778.       to be stored in the resource record but is omitted in descriptions
  779.       of databases and responses in the interest of clarity.
  780.  
  781.    Authority and administrative control of domains
  782.  
  783.       Although we want to have the potential of delegating the
  784.       privileges of name space management at every node, we don't want
  785.       such delegation to be required.
  786.  
  787.       Hence we introduce the concept of authority.  Authority is vested
  788.       in name servers.  A name server has authority over all of its
  789.       domain until it delegates authority for a subdomain to some other
  790.       name server.
  791.  
  792.       Any administrative entity that wishes to establish its own domain
  793.       must provide a name server, and have that server accepted by the
  794.       parent name server (i.e. the name server that has authority over
  795.       the place in the domain name space that will hold the new domain).
  796.       While the principles of authority allow acceptance to be at the
  797.       discretion of parent name servers, the following criteria are used
  798.       by the root, and are recommended to all name servers because they
  799.       are responsible for their children's actions:
  800.  
  801.          1.  It must register with the parent administrator of domains.
  802.  
  803.          2.  It must identify a responsible person.
  804.  
  805.          3.  In must provide redundant name servers.
  806.  
  807.       The domain name must be registered with the administrator to avoid
  808.       name conflicts and to make the domain related information
  809.       available to other domains.  The central administrator may have
  810.       further requirements, and a domain is not registered until the
  811.       central administrator agrees that all requirements are met.
  812.  
  813.       There must be a responsible person associated with each domain to
  814.  
  815.  
  816. Mockapetris                                                    [Page 14]
  817.  
  818.  
  819. RFC 882                                                    November 1983
  820.                                   Domain Names - Concepts and Facilities
  821.  
  822.  
  823.       be a contact point for questions about the domain, to verify and
  824.       update the domain related information, and to resolve any problems
  825.       (e.g., protocol violations) with hosts in the domain.
  826.  
  827.       The domain must provide redundant (i.e., two or more) name servers
  828.       to provide the name to address resolution service.  These name
  829.       servers must be accessible from outside the domain (as well as
  830.       inside) and must resolve names for at least all the hosts in the
  831.       domain.
  832.  
  833.       Once the central administrator is satisfied, he will communicate
  834.       the existence to the appropriate administrators of other domains
  835.       so that they can incorporate NS records for the new name server
  836.       into their databases.
  837.  
  838.    Name server logic
  839.  
  840.       The processing steps that a name server performs in responding to
  841.       a query are conceptually simple, although implementations may have
  842.       internal databases that are quite complex.
  843.  
  844.       For purposes of explanation, we assume that the query consists of
  845.       a type QTYPE, a class QCLASS, and a domain name QNAME; we assume
  846.       that the name server stores its RRs in sets where each set has all
  847.       of the RRs for a particular domain.  Note that this database
  848.       structure and the following algorithms are meant to illustrate one
  849.       possible implementation, rather than a specification of how all
  850.       servers must be implemented.
  851.  
  852.       The following notation is used:
  853.  
  854.       ord(DOMAIN-NAME)     returns the number of labels in DOMAIN-NAME.
  855.  
  856.       findset(DOMAIN-NAME) returns a pointer to the set of stored RRs
  857.                            for DOMAIN-NAME, or NULL if there is no such
  858.                            information.
  859.  
  860.       set(POINTER)         refers to a set located previously by
  861.                            findset, where POINTER is the value returned
  862.                            by findset.
  863.  
  864.       relevant(QTYPE,TYPE) returns true if a RR of the specified TYPE is
  865.                            relevant to the specified QTYPE.  For
  866.                            example, relevant(MAILA,MF) is true and
  867.                            relevant(MAILA,NS) is false.
  868.  
  869.       right(NAME,NUMBER)   returns a domain name that is the rightmost
  870.                            NUMBER labels in the string NAME.
  871.  
  872.  
  873.  
  874. Mockapetris                                                    [Page 15]
  875.  
  876.  
  877. RFC 882                                                    November 1983
  878.                                   Domain Names - Concepts and Facilities
  879.  
  880.  
  881.       copy(RR)             copies the resource record specified by RR
  882.                            into the response.
  883.  
  884.       The name server code could be represented as the following
  885.       sequence of steps:
  886.  
  887.      {    find out whether the database makes this server          
  888.           authoritative for the domain name specified by QNAME   } 
  889.  
  890.      for i:=0 to ord(QNAME) { sequence through all nodes in QNAME }
  891.      do   begin                                                    
  892.           ptr:=findset(right(QNAME,i));                            
  893.           if ptr<>NULL                                             
  894.           then { there is domain data for this domain name }       
  895.                begin                                               
  896.                for all RRs in set(ptr)                             
  897.                do   if type(RR)=NS and class(RR)=QCLASS            
  898.                     then begin                                     
  899.                          auth=false;                               
  900.                          NSptr:=ptr                                
  901.                          end;                                      
  902.                for all RRs in set(ptr)                             
  903.                do   if type(RR)=SOA and class(RR)=QCLASS           
  904.                     then auth:=true                                
  905.                     end                                            
  906.                end;                                                
  907.            end;                                                    
  908.  
  909.       {    copy out authority search results }                     
  910.  
  911.       if auth                                                      
  912.       then { if authority check for domain found }                 
  913.            if ptr=null                                             
  914.            then return(Name error)                                 
  915.            else                                                    
  916.       else { if not authority, copy NS RRs }                       
  917.            for all RRs in set(nsptr)                               
  918.            do   if (type(RR)=NS and class(RR)=QCLASS)              
  919.                                  or                                
  920.                               (QCLASS=*)                           
  921.                 then copy(RR);                                     
  922.  
  923.       {    Copy all RRs that answer the question }                 
  924.  
  925.       for all RRs in set(ptr)                                      
  926.       do   if class(RR)=QCLASS and relevant(QTYPE,type(RR))        
  927.            then copy(RR);                                          
  928.  
  929.       The first section of the code (delimited by the for loop over all
  930.  
  931.  
  932. Mockapetris                                                    [Page 16]
  933.  
  934.  
  935. RFC 882                                                    November 1983
  936.                                   Domain Names - Concepts and Facilities
  937.  
  938.  
  939.       of the subnodes of QNAME) discovers whether the name server is
  940.       authoritative for the domain specified by QNAME.  It sequences
  941.       through all containing domains of QNAME, starting at the root.  If
  942.       it encounters a SOA it knows that the name server is authoritative
  943.       unless it finds a lower NS RR which delegates authority.  If the
  944.       name server is authoritative, it sets auth=true; if the name
  945.       server is not authoritative, it sets NSptr to point to the set
  946.       which contains the NS RR closest to the domain specified by QNAME.
  947.  
  948.       The second section of the code reflects the result of the
  949.       authority search into the response.  If the name server is
  950.       authoritative, the code checks to see that the domain specified by
  951.       QNAME exists; if not, a name error is returned.  If the name
  952.       server is not authoritative, the code copies the RRs for a closer
  953.       name server into the response.
  954.  
  955.       The last section of the code copies all relevant RRs into the
  956.       response.
  957.  
  958.       Note that this code is not meant as an actual implementation and
  959.       is incomplete in several aspects.  For example, it doesn't deal
  960.       with providing additional information, wildcards, QCLASS=*, or
  961.       with overlapping zones.  The first two of these issues are dealt
  962.       with in the following discussions, the remaining issues are
  963.       discussed in [14].
  964.  
  965.    Additional information
  966.  
  967.       When a resolver returns information to a user program, the
  968.       returned information will often lead to a second query.  For
  969.       example, if a mailer asks a resolver for the appropriate mail
  970.       agent for a particular domain name, the name server queried by the
  971.       resolver returns a domain name that identifies the agent.  In
  972.       general, we would expect that the mailer would then request the
  973.       domain name to address binding for the mail agent, and a new name
  974.       server query would result.
  975.  
  976.       To avoid this duplication of effort, name servers return
  977.       additional information with a response which satisfies the
  978.       anticipated query.  This information is kept in a separate section
  979.       of the response.  Name servers are required to complete the
  980.       appropriate additional information if such information is
  981.       available, but the requestor should not depend on the presence of
  982.       the information since the name server may not have it.  If the
  983.       resolver caches the additional information, it can respond to the
  984.       second query without an additional network transaction.
  985.  
  986.       The appropriate information is defined in [14], but generally
  987.  
  988.  
  989.  
  990. Mockapetris                                                    [Page 17]
  991.  
  992.  
  993. RFC 882                                                    November 1983
  994.                                   Domain Names - Concepts and Facilities
  995.  
  996.  
  997.       consists of host to address bindings for domain names in returned
  998.       RRs.
  999.  
  1000.    Aliases and canonical names
  1001.  
  1002.       In existing systems, hosts and other resources often have several
  1003.       names that identify the same resource.  For example, under current
  1004.       ARPA Internet naming support, USC-ISIF and ISIF both identify the
  1005.       same host.  Similarly, in the case of mailboxes, many
  1006.       organizations provide many names that actually go to the same
  1007.       mailbox; for example Mockapetris@ISIF, Mockapetris@ISIB, etc., all
  1008.       go to the same mailbox (although the mechanism behind this is
  1009.       somewhat complicated).
  1010.  
  1011.       Most of these systems have a notion that one of the equivalent set
  1012.       of names is the canonical name and all others are aliases.
  1013.  
  1014.       The domain system provides a similar feature using the canonical
  1015.       name (CNAME) RR.  When a name server fails to find a desired RR in
  1016.       a set associated with some domain name, it checks to see if the
  1017.       resource set contains a CNAME record with a matching class.  If
  1018.       so, the name server includes the CNAME record in the response, and
  1019.       continues the query at the domain name specified in the data field
  1020.       of the CNAME record.
  1021.  
  1022.       Suppose a name server was processing a query with QNAME=ISIF.ARPA,
  1023.       QTYPE=A, and QCLASS=IN, and had the following resource records:
  1024.  
  1025.             ISIF.ARPA     CNAME   IN     F.ISI.ARPA         
  1026.             F.ISI.ARPA    A       IN     10.2.0.52          
  1027.  
  1028.       Both of these RRs would be returned in the response.
  1029.  
  1030.       In the above example, because ISIF.ARPA has no RRs other than the
  1031.       CNAME RR, the resources associated with ISIF.ARPA will appear to
  1032.       be exactly those associated with F.ISI.ARPA for the IN CLASS.
  1033.       Since the CNAME is effective only when the search fails, a CNAME
  1034.       can also be used to construct defaults.  For example, suppose the
  1035.       name server had the following set of RRs:
  1036.  
  1037.             F.ISI.ARPA    A       IN     10.2.0.52          
  1038.             F.ISI.ARPA    MD      IN     F.ISI.ARPA         
  1039.             XXXX.ARPA     CNAME   IN     F.ISI.ARPA         
  1040.             XXXX.ARPA     MF      IN     A.ISI.ARPA         
  1041.  
  1042.       Using this database, type A queries for XXXX.ARPA would return the
  1043.       XXXX.ARPA CNAME RR and the F.ISI.ARPA A RR, but MAILA or MF
  1044.       queries to XXXX.ARPA would return the XXXX.ARPA MF RR without any
  1045.       information from F.ISI.ARPA.  This structure might be used to send
  1046.  
  1047.  
  1048. Mockapetris                                                    [Page 18]
  1049.  
  1050.  
  1051. RFC 882                                                    November 1983
  1052.                                   Domain Names - Concepts and Facilities
  1053.  
  1054.  
  1055.       mail addressed to XXXX.ARPA to A.ISI.ARPA and to direct TELNET for
  1056.       XXXX.ARPA to F.ISI.ARPA.
  1057.  
  1058.    Wildcards
  1059.  
  1060.       In certain cases, an administrator may wish to associate default
  1061.       resource information for all or part of a domain.  For example,
  1062.       the CSNET domain administrator may wish to establish IN class mail
  1063.       forwarding for all hosts in the CSNET domain without IN
  1064.       capability.  In such a case, the domain system provides a special
  1065.       label "*" that matches any other label.  Note that "*" matches
  1066.       only a single label, and not zero or more than one label.  Note
  1067.       also that the "*" is distinct from the "*" values for QCLASS and
  1068.       QTYPE.
  1069.  
  1070.       The semantics of "*" depend upon whether it appears in a query
  1071.       domain name (QNAME) or in a RR in a database.
  1072.  
  1073.          When an "*" is used in a QNAME, it can only match a "*" in a
  1074.          resource record.
  1075.  
  1076.          When "*" appears in a RR in a database, it can never override
  1077.          an existing exact match.  For example, if a name server
  1078.          received a query for the domain UDEL.CSNET, and had appropriate
  1079.          RRs for both UDEL.CSNET and *.CSNET, the UDEL.CSNET RRs would
  1080.          be used and the *.CSNET RRs would be ignored.  If a query to
  1081.          the same database specified FOO.CSNET, the *.CSNET RR would be
  1082.          used, but the corresponding labels from the QNAME would replace
  1083.          the "*".  Thus the FOO.CSNET query would match the *.CSNET RR
  1084.          and return a RR for FOO.CSNET rather than *.CSNET.
  1085.  
  1086.          RRs containing "*" labels are copied exactly when zones are
  1087.          transfered via name server maintenance operations.
  1088.  
  1089.       These semantics are easily implemented by having the name server
  1090.       first search for an exact match for a query, and then replacing
  1091.       the leftmost label with a "*" and trying again, repeating the
  1092.       process until all labels became "*" or the search succeeded.
  1093.  
  1094.       TYPE=* in RRs is prohibited.  If it were to be allowed, the
  1095.       requestor would have no way of interpreting the data in the RR
  1096.       because this data is type dependent.
  1097.  
  1098.       CLASS=* is also prohibited.  Similar effects can be achieved using
  1099.       QCLASS=*, and allowing both QCLASS=* and CLASS=* leads to
  1100.       complexities without apparent benefit.
  1101.  
  1102.  
  1103.  
  1104.  
  1105.  
  1106. Mockapetris                                                    [Page 19]
  1107.  
  1108.  
  1109. RFC 882                                                    November 1983
  1110.                                   Domain Names - Concepts and Facilities
  1111.  
  1112.  
  1113.    A scenario
  1114.  
  1115.       In our sample domain space, suppose we wanted separate
  1116.       administrative control for the root, DDN, ARPA, CSNET, MIT and ISI
  1117.       domains.  We might allocate name servers as follows:
  1118.  
  1119.                                    |(B.ISI.ARPA)                  
  1120.                                    |(UDEL.CSNET)                  
  1121.                 +------------------+------------------+           
  1122.                 |                  |                  |           
  1123.                DDN               ARPA               CSNET         
  1124.                 |(JCS.DDN)         |(F.ISI.ARPA)      |(UDEL.ARPA)
  1125.           +-----+-----+            |(A.ISI.ARPA)+-----+-----+     
  1126.           |     |     |            |            |           |     
  1127.          JCS  ARMY  NAVY           |           UDEL        UCI    
  1128.                                    |                              
  1129.           +--------+---------------+---------------+--------+     
  1130.           |        |               |               |        |     
  1131.          DTI      MIT             ISI             UDEL     NBS    
  1132.                    |(AI.MIT.ARPA)  |(F.ISI.ARPA)                  
  1133.                +---+---+       +---+---+                          
  1134.                |       |       |   |   |                          
  1135.               DMS     AI       A   B   F                          
  1136.  
  1137.       In this example the authoritative name server is shown in
  1138.       parentheses at the point in the domain tree at which is assumes
  1139.       control.
  1140.  
  1141.       Thus the root name servers are on B.ISI.ARPA and UDEL.CSNET, the
  1142.       DDN name server is on JCS.DDN, the CSNET domain server is on
  1143.       UDEL.ARPA, etc.
  1144.  
  1145.       In an actual system, all domains should have redundant name
  1146.       servers, but in this example only the ARPA domain has redundant
  1147.       servers A.ISI.ARPA and F.ISI.ARPA.  (The B.ISI.ARPA and UDEL.CSNET
  1148.       name servers happen to be not redundant because they handle
  1149.       different classes.)  The F.ISI.ARPA name server has authority over
  1150.       the ARPA domain, but delegates authority over the MIT.ARPA domain
  1151.       to the name server on AI.MIT.ARPA.  The A.ISI.ARPA name server
  1152.       also has authority over the ARPA domain, but delegates both the
  1153.       ISI.ARPA and MIT.ARPA domains to other name servers.
  1154.  
  1155.  
  1156.  
  1157.  
  1158.  
  1159.  
  1160.  
  1161.  
  1162.  
  1163.  
  1164. Mockapetris                                                    [Page 20]
  1165.  
  1166.  
  1167. RFC 882                                                    November 1983
  1168.                                   Domain Names - Concepts and Facilities
  1169.  
  1170.  
  1171.    B.ISI.ARPA Name server for " "
  1172.  
  1173.       B.ISI.ARPA has the root name server for the IN class.  Its
  1174.       database might contain:
  1175.  
  1176.             Domain        Resource Record                   
  1177.  
  1178.             " "           SOA     IN     A.ISI.ARPA         
  1179.             DDN           NS      IN     JCS.DDN            
  1180.             ARPA          NS      IN     F.ISI.ARPA         
  1181.             CSNET         NS      IN     UDEL.ARPA          
  1182.             " "           NS      IN     B.ISI.ARPA         
  1183.             " "           NS      CS     UDEL.CSNET         
  1184.                                     
  1185.             JCS.DDN       A       IN     9.0.0.1            
  1186.             F.ISI.ARPA    A       IN     10.2.0.52          
  1187.             UDEL.CSNET    A       CS     302-555-0000       
  1188.             UDEL.ARPA     A       IN     10.0.0.96          
  1189.  
  1190.       The SOA record for the root is necessary so that the name server
  1191.       knows that it is authoritative for the root domain for class IN.
  1192.       The contents of the SOA resource record point back to A.ISI.ARPA
  1193.       and denote that the master data for the zone of authority is
  1194.       originally from this host.  The first three NS records denote
  1195.       delegation of authority.  The NS root entry for the B.ISI.ARPA
  1196.       name server is necessary so that this name server knows about
  1197.       itself, and can respond correctly to a query for NS information
  1198.       about the root (for which it is an authority).  The root entry for
  1199.       class CS denotes that UDEL.CSNET is the authoritative name server
  1200.       for the CS class root.  UDEL.CSNET and UDEL.ARPA may or may not
  1201.       refer to the same name server; from this information it is
  1202.       impossible to tell.
  1203.  
  1204.       If this name server was sent a query specifying QTYPE=MAILA,
  1205.       QCLASS=IN, QNAME=F.ISI.ARPA, it would begin processing (using the
  1206.       previous algorithm) by determining that it was not an authority
  1207.       for F.ISI.ARPA.  The test would note that it had authority at " ",
  1208.       but would also note that the authority was delegated at ARPA and
  1209.       never reestablished via another SOA.  Thus the response would
  1210.       return the NS record for the domain ARPA.
  1211.  
  1212.       Any queries presented to this server with QCLASS=CS would result
  1213.       in the UDEL.CSNET NS record being returned in the response.
  1214.  
  1215.  
  1216.  
  1217.  
  1218.  
  1219.  
  1220.  
  1221.  
  1222. Mockapetris                                                    [Page 21]
  1223.  
  1224.  
  1225. RFC 882                                                    November 1983
  1226.                                   Domain Names - Concepts and Facilities
  1227.  
  1228.  
  1229.    F.ISI.ARPA Name server for ARPA and ISI.ARPA
  1230.  
  1231.       In the same domain space, the F.ISI.ARPA database for the domains
  1232.       ARPA and ISI.ARPA might be:
  1233.  
  1234.             Domain        Resource Record                   
  1235.  
  1236.             " "           NS      IN     B.ISI.ARPA         
  1237.             " "           NS      CS     CSNET.UDEL         
  1238.             ARPA          SOA     IN     B.ISI.ARPA         
  1239.             ARPA          NS      IN     A.ISI.ARPA         
  1240.             ARPA          NS      IN     F.ISI.ARPA         
  1241.             MIT.ARPA      NS      IN     AI.MIT.ARPA        
  1242.             ISI.ARPA      SOA     IN     F.ISI.ARPA         
  1243.             ISI.ARPA      NS      IN     F.ISI.ARPA         
  1244.  
  1245.             A.ISI.ARPA    MD      IN     A.ISI.ARPA         
  1246.             ISI.ARPA      MD      IN     F.ISI.ARPA         
  1247.             A.ISI.ARPA    MF      IN     F.ISI.ARPA         
  1248.             B.ISI.ARPA    MD      IN     B.ISI.ARPA         
  1249.             B.ISI.ARPA    MF      IN     F.ISI.ARPA         
  1250.             F.ISI.ARPA    MD      IN     F.ISI.ARPA         
  1251.             F.ISI.ARPA    MF      IN     A.ISI.ARPA         
  1252.             DTI.ARPA      MD      IN     DTI.ARPA           
  1253.             NBS.ARPA      MD      IN     NBS.ARPA           
  1254.             UDEL.ARPA     MD      IN     UDEL.ARPA          
  1255.  
  1256.             A.ISI.ARPA    A       IN     10.1.0.32          
  1257.             F.ISI.ARPA    A       IN     10.2.0.52          
  1258.             B.ISI.ARPA    A       IN     10.3.0.52          
  1259.             DTI.ARPA      A       IN     10.0.0.12          
  1260.             AI.MIT.ARPA   A       IN     10.2.0.6           
  1261.             DMS.MIT.ARPA  A       IN     10.1.0.6           
  1262.             NBS.ARPA      A       IN     10.0.0.19          
  1263.             UDEL.ARPA     A       IN     10.0.0.96          
  1264.  
  1265.       For the IN class, the SOA RR for ARPA denotes that this name
  1266.       server is authoritative for the domain ARPA, and that the master
  1267.       file for this authority is stored on B.ISI.ARPA.  This zone
  1268.       extends to ISI.ARPA, where the database delegates authority back
  1269.       to this name server in another zone, and doesn't include the
  1270.       domain MIT.ARPA, which is served by a name server on AI.MIT.ARPA.
  1271.  
  1272.       This name server is not authoritative for any data in the CS
  1273.       class.  It has a pointer to the root server for CS data which
  1274.       could be use to resolve CS class queries.
  1275.  
  1276.       Suppose this name server received a query of the form
  1277.       QNAME=A.ISI.ARPA, QTYPE=A, and QCLASS=IN.  The authority search
  1278.  
  1279.  
  1280. Mockapetris                                                    [Page 22]
  1281.  
  1282.  
  1283. RFC 882                                                    November 1983
  1284.                                   Domain Names - Concepts and Facilities
  1285.  
  1286.  
  1287.       would notice the NS record for " ", its SOA at ARPA, a delegation
  1288.       at ISI.ARPA, and the reassumption of authority at ISI.ARPA.  Hence
  1289.       it would know that it was an authority for this query.  It would
  1290.       then find the A record for A.ISI.ARPA, and return a datagram
  1291.       containing this record.
  1292.  
  1293.       Another query might be QNAME=B.ISI.ARPA, QTYPE=MAILA, QCLASS=*.
  1294.       In this case the name server would know that it cannot be
  1295.       authoritative because of the "*" value of QCLASS, and would look
  1296.       for records for domain B.ISI.ARPA that match.  Assuming that the
  1297.       name server performs the additional record inclusion mentioned in
  1298.       the name server algorithm, the returned datagram would include:
  1299.  
  1300.             ISI.ARPA      NS      IN     F.ISI.ARPA         
  1301.             " "           NS      CS     UDEL.CSNET         
  1302.             B.ISI.ARPA    MD      IN     B.ISI.ARPA         
  1303.             B.ISI.ARPA    MF      IN     F.ISI.ARPA         
  1304.             B.ISI.ARPA    A       IN     10.3.0.52          
  1305.             F.ISI.ARPA    A       IN     10.2.0.52          
  1306.  
  1307.       If the query were QNAME=DMS.MIT.ARPA, QTYPE=MAILA, QCLASS=IN, the
  1308.       name server would discover that AI.MIT.ARPA was the authoritative
  1309.       name server and return the following:
  1310.  
  1311.             MIT.ARPA      NS      IN     AI.MIT.ARPA        
  1312.             AI.MIT.ARPA   A       IN     10.2.0.6           
  1313.  
  1314.       In this case, the requestor is directed to seek information from
  1315.       the MIT.ARPA domain name server residing on AI.MIT.ARPA.
  1316.  
  1317.  
  1318.  
  1319.  
  1320.  
  1321.  
  1322.  
  1323.  
  1324.  
  1325.  
  1326.  
  1327.  
  1328.  
  1329.  
  1330.  
  1331.  
  1332.  
  1333.  
  1334.  
  1335.  
  1336.  
  1337.  
  1338. Mockapetris                                                    [Page 23]
  1339.  
  1340.  
  1341. RFC 882                                                    November 1983
  1342.                                   Domain Names - Concepts and Facilities
  1343.  
  1344.  
  1345.    UDEL.ARPA and UDEL.CSNET name server
  1346.  
  1347.       In the previous discussion of the sample domain, we stated that
  1348.       UDEL.CSNET and UDEL.ARPA might be the same name server.  In this
  1349.       example, we assume that this is the case.  As such, the name
  1350.       server is an authority for the root for class CS, and an authority
  1351.       for the CSNET domain for class IN.
  1352.  
  1353.       This name server deals with mail forwarding between the ARPA
  1354.       Internet and CSNET systems.  Its RRs illustrate one approach to
  1355.       solving this problem.  The name server has the following resource
  1356.       records:
  1357.  
  1358.             " "           SOA     CS     UDEL.CSNET         
  1359.             " "           NS      CS     UDEL.CSNET         
  1360.             " "           NS      IN     B.ISI.ARPA         
  1361.             CSNET         SOA     IN     UDEL.ARPA          
  1362.             CSNET         NS      IN     UDEL.ARPA          
  1363.             ARPA          NS      IN     A.ISI.ARPA         
  1364.  
  1365.             *.CSNET       MF      IN     UDEL.ARPA          
  1366.             UDEL.CSNET    MD      CS     UDEL.CSNET         
  1367.             UCI.CSNET     MD      CS     UCI.CSNET          
  1368.             UDEL.ARPA     MD      IN     UDEL.ARPA          
  1369.  
  1370.             B.ISI.ARPA    A       IN     10.3.0.52          
  1371.             UDEL.ARPA     A       IN     10.0.0.96          
  1372.             UDEL.CSNET    A       CS     302-555-0000       
  1373.             UCI.CSNET     A       CS     714-555-0000       
  1374.  
  1375.       Suppose this name server received a query of the form
  1376.       QNAME=UCI.CSNET, QTYPE=MAILA, and QCLASS=IN.  The name server
  1377.       would discover it was authoritative for the CSNET domain under
  1378.       class IN, but would find no explicit mail data for UCI.CSNET.
  1379.       However, using the *.CSNET record, it would construct a reply:
  1380.  
  1381.             UCI.CSNET     MF      IN     UDEL.ARPA          
  1382.             UDEL.ARPA     A       IN     10.0.0.96          
  1383.  
  1384.       If this name server received a query of the form QNAME=UCI.CSNET,
  1385.       QTYPE=MAILA, and QCLASS=CS, the name server would return:
  1386.  
  1387.             UCI.CSNET     MD      CS     UCI.CSNET          
  1388.             UCI.CSNET     A       CS     714-555-0000       
  1389.  
  1390.       Note that although this scheme allows for forwarding of all mail
  1391.       addressed as <anything>.CSNET, it doesn't help with names that
  1392.       have more than two components, e.g. A.B.CSNET.  Although this
  1393.       problem could be "fixed" by a series of MF entries for *.*.CSNET,
  1394.  
  1395.  
  1396. Mockapetris                                                    [Page 24]
  1397.  
  1398.  
  1399. RFC 882                                                    November 1983
  1400.                                   Domain Names - Concepts and Facilities
  1401.  
  1402.  
  1403.       *.*.*.CSNET, etc, a more tasteful solution would be to introduce a
  1404.       cleverer pattern matching algorithm in the CSNET name server.
  1405.  
  1406.    Summary of requirements for name servers
  1407.  
  1408.       The requirements for a name server are as follows:
  1409.  
  1410.          1. It must be recognized by its parent.
  1411.  
  1412.          2. It must have complete resource information for all domain
  1413.             names for which it is the authority.
  1414.  
  1415.          3. It must periodically refresh authoritative information from
  1416.             a master file or name server which holds the master.
  1417.  
  1418.          4. If it caches information it must also handle TTL management
  1419.             for that information.
  1420.  
  1421.          5. It must answer simple queries.
  1422.  
  1423.    Inverse queries
  1424.  
  1425.       Name servers may also support inverse queries that map a
  1426.       particular resource to a domain name or domain names that have
  1427.       that resource.  For example, while a query might map a domain name
  1428.       to a host address, the corresponding inverse query might map the
  1429.       address back to the domain name.
  1430.  
  1431.       Implementation of this service is optional in a name server, but
  1432.       all name servers must at least be able to understand an inverse
  1433.       query message and return an error response.
  1434.  
  1435.       The domain system cannot guarantee the completeness or uniqueness
  1436.       of inverse queries because the domain system is organized by
  1437.       domain name rather than by host address or any other resource
  1438.       type.  In general, a resolver or other program that wishes to
  1439.       guarantee that an inverse query will work must use a name server
  1440.       that is known to have the appropriate data, or ask all name
  1441.       servers in a domain of interest.
  1442.  
  1443.       For example, if a resolver wishes to perform an inverse query for
  1444.       an arbitrary host on the ARPA Internet, it must consult a set of
  1445.       name servers sufficient to know that all IN data was considered.
  1446.       In practice, a single inverse query to a name server that has a
  1447.       fairly comprehensive database should satisfy the vast majority of
  1448.       inverse queries.
  1449.  
  1450.       A detailed discussion of inverse queries is contained in [14].
  1451.  
  1452.  
  1453.  
  1454. Mockapetris                                                    [Page 25]
  1455.  
  1456.  
  1457. RFC 882                                                    November 1983
  1458.                                   Domain Names - Concepts and Facilities
  1459.  
  1460.  
  1461.    Completion services
  1462.  
  1463.       Some existing systems provide the ability to complete partial
  1464.       specifications of arguments.  The general principle is that the
  1465.       user types the first few characters of the argument and then hits
  1466.       an escape character to prompt the system to complete the rest.
  1467.       Some completion systems require that the user type enough of the
  1468.       argument to be unique; others do not.
  1469.  
  1470.       Other systems allow the user to specify one argument and ask the
  1471.       system to fill in other arguments.  For example, many mail systems
  1472.       allow the user to specify a username without a host for local mail
  1473.       delivery.
  1474.  
  1475.       The domain system defines name server completion transactions that
  1476.       perform the analogous service for the domain system.
  1477.       Implementation of this service is optional in a name server, but
  1478.       all name servers must at least be able to understand a completion
  1479.       request and return an error response.
  1480.  
  1481.       When a resolver wishes to request a completion, it sends a name
  1482.       server a message that sets QNAME to the partial string, QTYPE to
  1483.       the type of resource desired, and QCLASS to the desired class.
  1484.       The completion request also includes a RR for the target domain.
  1485.       The target domain RR identifies the preferred location of the
  1486.       resource.  In completion requests, QNAME must still have a null
  1487.       label to terminate the name, but its presence is ignored.  Note
  1488.       that a completion request is not a query, but shares some of the
  1489.       same field formats.
  1490.  
  1491.       For example, a completion request might contain QTYPE=A, QNAME=B,
  1492.       QCLASS=IN and a RR for ISI.ARPA.  This request asks for completion
  1493.       for a resource whose name begins with "B" and is "close" to
  1494.       ISI.ARPA.  This might be a typical shorthand used in the ISI
  1495.       community which uses "B" as a way of referring to B.ISI.ARPA.
  1496.  
  1497.       The first step in processing a completion request is to look for a
  1498.       "whole label" match.  When the name server receives the request
  1499.       mentioned above, it looks at all records that are of type A, class
  1500.       IN, and whose domain name starts (on the left) with the labels of
  1501.       QNAME, in this case, "B".  If multiple records match, the name
  1502.       server selects those whose domain names match (from the right) the
  1503.       most labels of the preferred domain name.  If there are still
  1504.       multiple candidates, the name server selects the records that have
  1505.       the shortest (in terms of octets in the name) domain name.  If
  1506.       several records remain, then the name server returns them all.
  1507.  
  1508.       If no records are found in the previous algorithm, the name server
  1509.       assumes that the rightmost label in QNAME is not complete, and
  1510.  
  1511.  
  1512. Mockapetris                                                    [Page 26]
  1513.  
  1514.  
  1515. RFC 882                                                    November 1983
  1516.                                   Domain Names - Concepts and Facilities
  1517.  
  1518.  
  1519.       looks for records that match but require addition of characters to
  1520.       the rightmost label of QNAME.  For example, the previous search
  1521.       would not match BB.ARPA to B, but this search would.  If multiple
  1522.       hits are found, the same discarding strategy is followed.
  1523.  
  1524.       A detailed discussion of completion can be found in [14].
  1525.  
  1526. RESOLVERS
  1527.  
  1528.    Introduction
  1529.  
  1530.       Resolvers are programs that interface user programs to domain name
  1531.       servers.  In the simplest case, a resolver receives a request from
  1532.       a user program (e.g. mail programs, TELNET, FTP) in the form of a
  1533.       subroutine call, system call etc., and returns the desired
  1534.       information in a form compatible with the local host's data
  1535.       formats.
  1536.  
  1537.       Because a resolver may need to consult several name servers, the
  1538.       amount of time that a resolver will take to complete can vary.
  1539.       This variance is part of the justification for the split between
  1540.       name servers and resolvers; name servers may use datagrams and
  1541.       have a response time that is essentially equal to network delay
  1542.       plus a short service time, while resolvers may take an essentially
  1543.       indeterminate amount of time.
  1544.  
  1545.       We expect to see two types of resolvers: simple resolvers that can
  1546.       chain through multiple name servers when required, and more
  1547.       complicated resolvers that cache resource records for use in
  1548.       future queries.
  1549.  
  1550.    Simple resolvers
  1551.  
  1552.       A simple resolver needs the following capabilities:
  1553.  
  1554.       1. It must know how to access a name server, and should know the
  1555.          authoritative name server for the host that it services.
  1556.  
  1557.       2. It must know the protocol capabilities for its clients so that
  1558.          it can set the class fields of the queries it sends to return
  1559.          information that is useful to its clients.  If the resolver
  1560.          serves a client that has multiple protocol capabilities, it
  1561.          should be able to support the preferences of the client.
  1562.  
  1563.          The resolver for a multiple protocol client can either collect
  1564.          information for all classes using the * class value, or iterate
  1565.          on the classes supported by the client.  Note that in either
  1566.          case, the resolver must understand the preferences of the host.
  1567.          For example, the host that supports both CSNET and ARPA
  1568.  
  1569.  
  1570. Mockapetris                                                    [Page 27]
  1571.  
  1572.  
  1573. RFC 882                                                    November 1983
  1574.                                   Domain Names - Concepts and Facilities
  1575.  
  1576.  
  1577.          Internet protocols might prefer mail delivery (MD) to mail
  1578.          forwarding (MF), regardless of protocol, or might prefer one
  1579.          protocol regardless of whether MD or MF is required.  Care is
  1580.          required to prevent loops.
  1581.  
  1582.       3. The resolver must be capable of chaining through multiple name
  1583.          servers to get to an authoritative name server for any query.
  1584.          The resolver should guard against loops in referrals; a simple
  1585.          policy is to discard referrals that don't match more of the
  1586.          query name than the referring name server, and also to avoid
  1587.          querying the same name server twice (This test should be done
  1588.          using addresses of name servers instead of domain names to
  1589.          avoid problems when a name server has multiple domain names or
  1590.          errors are present in aliases).
  1591.  
  1592.       4. The resolver must be able to try alternate name servers when a
  1593.          name server doesn't respond.
  1594.  
  1595.       5. The resolver must be able to communicate different failure
  1596.          conditions to its client.  These failure conditions include
  1597.          unknown domain name, unknown resource for a know domain name,
  1598.          and inability to access any of the authoritative name servers
  1599.          for a domain.
  1600.  
  1601.       6. If the resolver uses datagrams for queries, it must recover
  1602.          from lost and duplicate datagrams.
  1603.  
  1604.    Resolvers with cache management
  1605.  
  1606.       Caching provides a tool for improving the performance of name
  1607.       service, but also is a potential source of incorrect results.  For
  1608.       example, a database might cache information that is later changed
  1609.       in the authoritative name servers.  While this problem can't be
  1610.       eliminated without eliminating caching, it can be reduced to an
  1611.       infrequent problem through the use of timeouts.
  1612.  
  1613.       When name servers return resource records, each record has an
  1614.       associated time-to-live (TTL) field.  This field is expressed in
  1615.       seconds, and has 16 bits of significance.
  1616.  
  1617.       When a resolver caches a returned resource record it must also
  1618.       remember the TTL field.  The resolver must discard the record when
  1619.       the equivalent amount of time has passed.  If the resolver shares
  1620.       a database with a name server, it must decrement the TTL field of
  1621.       imported records periodically rather than simply deleting the
  1622.       record.  This strategy is necessary to avoid exporting a resource
  1623.       record whose TTL field doesn't reflect the amount of time that the
  1624.       resource record has been cached.  Of course, the resolver should
  1625.  
  1626.  
  1627.  
  1628. Mockapetris                                                    [Page 28]
  1629.  
  1630.  
  1631. RFC 882                                                    November 1983
  1632.                                   Domain Names - Concepts and Facilities
  1633.  
  1634.  
  1635.       not decrement the TTL fields of records for which the associated
  1636.       name server is an authority.
  1637.  
  1638.  
  1639.  
  1640.  
  1641.  
  1642.  
  1643.  
  1644.  
  1645.  
  1646.  
  1647.  
  1648.  
  1649.  
  1650.  
  1651.  
  1652.  
  1653.  
  1654.  
  1655.  
  1656.  
  1657.  
  1658.  
  1659.  
  1660.  
  1661.  
  1662.  
  1663.  
  1664.  
  1665.  
  1666.  
  1667.  
  1668.  
  1669.  
  1670.  
  1671.  
  1672.  
  1673.  
  1674.  
  1675.  
  1676.  
  1677.  
  1678.  
  1679.  
  1680.  
  1681.  
  1682.  
  1683.  
  1684.  
  1685.  
  1686. Mockapetris                                                    [Page 29]
  1687.  
  1688.  
  1689. RFC 882                                                    November 1983
  1690.                                   Domain Names - Concepts and Facilities
  1691.  
  1692.  
  1693. Appendix 1 - Domain Name Syntax Specification
  1694.  
  1695.    The preferred syntax of domain names is given by the following BNF
  1696.    rules.  Adherence to this syntax will result in fewer problems with
  1697.    many applications that use domain names (e.g., mail, TELNET).  Note
  1698.    that some applications described in [14] use domain names containing
  1699.    binary information and hence do not follow this syntax.
  1700.  
  1701.       <domain> ::=  <subdomain> | " "
  1702.  
  1703.       <subdomain> ::=  <label> | <subdomain> "." <label>
  1704.  
  1705.       <label> ::= <letter> [ [ <ldh-str> ] <let-dig> ]
  1706.  
  1707.       <ldh-str> ::= <let-dig-hyp> | <let-dig-hyp> <ldh-str>
  1708.  
  1709.       <let-dig-hyp> ::= <let-dig> | "-"
  1710.  
  1711.       <let-dig> ::= <letter> | <digit>
  1712.  
  1713.       <letter> ::= any one of the 52 alphabetic characters A through Z
  1714.       in upper case and a through z in lower case
  1715.  
  1716.       <digit> ::= any one of the ten digits 0 through 9
  1717.  
  1718.    Note that while upper and lower case letters are allowed in domain
  1719.    names no significance is attached to the case.  That is, two names
  1720.    with the same spelling but different case are to be treated as if
  1721.    identical.
  1722.  
  1723.    The labels must follow the rules for ARPANET host names.  They must
  1724.    start with a letter, end with a letter or digit, and have as interior
  1725.    characters only letters, digits, and hyphen.  There are also some
  1726.    restrictions on the length.  Labels must be 63 characters or less.
  1727.  
  1728.    For example, the following strings identify hosts in the ARPA
  1729.    Internet:
  1730.  
  1731.       F.ISI.ARPA     LINKABIT-DCN5.ARPA     UCL-TAC.ARPA
  1732.  
  1733.  
  1734.  
  1735.  
  1736.  
  1737.  
  1738.  
  1739.  
  1740.  
  1741.  
  1742.  
  1743.  
  1744. Mockapetris                                                    [Page 30]
  1745.  
  1746.  
  1747. RFC 882                                                    November 1983
  1748.                                   Domain Names - Concepts and Facilities
  1749.  
  1750.  
  1751. REFERENCES and BIBLIOGRAPHY
  1752.  
  1753.    [1]  E. Feinler, K. Harrenstien, Z. Su, and V. White, "DOD Internet
  1754.         Host Table Specification", RFC 810, Network Information Center,
  1755.         SRI International, March 1982.
  1756.  
  1757.    [2]  J. Postel, "Computer Mail Meeting Notes", RFC 805,
  1758.         USC/Information Sciences Institute, February 1982.
  1759.  
  1760.    [3]  Z. Su, and J. Postel, "The Domain Naming Convention for Internet
  1761.         User Applications", RFC 819, Network Information Center, SRI
  1762.         International, August 1982.
  1763.  
  1764.    [4]  Z. Su, "A Distributed System for Internet Name Service",
  1765.         RFC 830, Network Information Center, SRI International,
  1766.         October 1982.
  1767.  
  1768.    [5]  K. Harrenstien, and V. White, "NICNAME/WHOIS", RFC 812, Network
  1769.         Information Center, SRI International, March 1982.
  1770.  
  1771.    [6]  M. Solomon, L. Landweber, and D. Neuhengen, "The CSNET Name
  1772.         Server", Computer Networks, vol 6, nr 3, July 1982.
  1773.  
  1774.    [7]  K. Harrenstien, "NAME/FINGER", RFC 742, Network Information
  1775.         Center, SRI International, December 1977.
  1776.  
  1777.    [8]  J. Postel, "Internet Name Server", IEN 116, USC/Information
  1778.         Sciences Institute, August 1979.
  1779.  
  1780.    [9]  K. Harrenstien, V. White, and E. Feinler, "Hostnames Server",
  1781.         RFC 811, Network Information Center, SRI International,
  1782.         March 1982.
  1783.  
  1784.    [10] J. Postel, "Transmission Control Protocol", RFC 793,
  1785.         USC/Information Sciences Institute, September 1981.
  1786.  
  1787.    [11] J. Postel, "User Datagram Protocol", RFC 768, USC/Information
  1788.         Sciences Institute, August 1980.
  1789.  
  1790.    [12] J. Postel, "Simple Mail Transfer Protocol", RFC 821,
  1791.         USC/Information Sciences Institute, August 1980.
  1792.  
  1793.    [13] J. Reynolds, and J. Postel, "Assigned Numbers", RFC 870,
  1794.         USC/Information Sciences Institute, October 1983.
  1795.  
  1796.    [14] P. Mockapetris, "Domain Names - Implementation and
  1797.         Specification", RFC 883, USC/Information Sciences Institute,
  1798.         November 1983.
  1799.  
  1800.  
  1801.  
  1802. Mockapetris                                                    [Page 31]
  1803.  
  1804.  
  1805.  
  1806.  
  1807.  
  1808.  
  1809.