Annotation of 43BSD/etc/named/doc/rfc882.lpr, revision 1.1.1.1

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

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.