rfc1034.txt
上传用户:horngjaan
上传日期:2009-12-12
资源大小:2882k
文件大小:123k
源码类别:

Email服务器

开发平台:

C#

  1. Network Working Group                                     P. Mockapetris
  2. Request for Comments: 1034                                           ISI
  3. Obsoletes: RFCs 882, 883, 973                              November 1987
  4.                  DOMAIN NAMES - CONCEPTS AND FACILITIES
  5. 1. STATUS OF THIS MEMO
  6. This RFC is an introduction to the Domain Name System (DNS), and omits
  7. many details which can be found in a companion RFC, "Domain Names -
  8. Implementation and Specification" [RFC-1035].  That RFC assumes that the
  9. reader is familiar with the concepts discussed in this memo.
  10. A subset of DNS functions and data types constitute an official
  11. protocol.  The official protocol includes standard queries and their
  12. responses and most of the Internet class data formats (e.g., host
  13. addresses).
  14. However, the domain system is intentionally extensible.  Researchers are
  15. continuously proposing, implementing and experimenting with new data
  16. types, query types, classes, functions, etc.  Thus while the components
  17. of the official protocol are expected to stay essentially unchanged and
  18. operate as a production service, experimental behavior should always be
  19. expected in extensions beyond the official protocol.  Experimental or
  20. obsolete features are clearly marked in these RFCs, and such information
  21. should be used with caution.
  22. The reader is especially cautioned not to depend on the values which
  23. appear in examples to be current or complete, since their purpose is
  24. primarily pedagogical.  Distribution of this memo is unlimited.
  25. 2. INTRODUCTION
  26. This RFC introduces domain style names, their use for Internet mail and
  27. host address support, and the protocols and servers used to implement
  28. domain name facilities.
  29. 2.1. The history of domain names
  30. The impetus for the development of the domain system was growth in the
  31. Internet:
  32.    - Host name to address mappings were maintained by the Network
  33.      Information Center (NIC) in a single file (HOSTS.TXT) which
  34.      was FTPed by all hosts [RFC-952, RFC-953].  The total network
  35. Mockapetris                                                     [Page 1]
  36. RFC 1034             Domain Concepts and Facilities        November 1987
  37.      bandwidth consumed in distributing a new version by this
  38.      scheme is proportional to the square of the number of hosts in
  39.      the network, and even when multiple levels of FTP are used,
  40.      the outgoing FTP load on the NIC host is considerable.
  41.      Explosive growth in the number of hosts didn't bode well for
  42.      the future.
  43.    - The network population was also changing in character.  The
  44.      timeshared hosts that made up the original ARPANET were being
  45.      replaced with local networks of workstations.  Local
  46.      organizations were administering their own names and
  47.      addresses, but had to wait for the NIC to change HOSTS.TXT to
  48.      make changes visible to the Internet at large.  Organizations
  49.      also wanted some local structure on the name space.
  50.    - The applications on the Internet were getting more
  51.      sophisticated and creating a need for general purpose name
  52.      service.
  53. The result was several ideas about name spaces and their management
  54. [IEN-116, RFC-799, RFC-819, RFC-830].  The proposals varied, but a
  55. common thread was the idea of a hierarchical name space, with the
  56. hierarchy roughly corresponding to organizational structure, and names
  57. using "."  as the character to mark the boundary between hierarchy
  58. levels.  A design using a distributed database and generalized resources
  59. was described in [RFC-882, RFC-883].  Based on experience with several
  60. implementations, the system evolved into the scheme described in this
  61. memo.
  62. The terms "domain" or "domain name" are used in many contexts beyond the
  63. DNS described here.  Very often, the term domain name is used to refer
  64. to a name with structure indicated by dots, but no relation to the DNS.
  65. This is particularly true in mail addressing [Quarterman 86].
  66. 2.2. DNS design goals
  67. The design goals of the DNS influence its structure.  They are:
  68.    - The primary goal is a consistent name space which will be used
  69.      for referring to resources.  In order to avoid the problems
  70.      caused by ad hoc encodings, names should not be required to
  71.      contain network identifiers, addresses, routes, or similar
  72.      information as part of the name.
  73.    - The sheer size of the database and frequency of updates
  74.      suggest that it must be maintained in a distributed manner,
  75.      with local caching to improve performance.  Approaches that
  76. Mockapetris                                                     [Page 2]
  77. RFC 1034             Domain Concepts and Facilities        November 1987
  78.      attempt to collect a consistent copy of the entire database
  79.      will become more and more expensive and difficult, and hence
  80.      should be avoided.  The same principle holds for the structure
  81.      of the name space, and in particular mechanisms for creating
  82.      and deleting names; these should also be distributed.
  83.    - Where there tradeoffs between the cost of acquiring data, the
  84.      speed of updates, and the accuracy of caches, the source of
  85.      the data should control the tradeoff.
  86.    - The costs of implementing such a facility dictate that it be
  87.      generally useful, and not restricted to a single application.
  88.      We should be able to use names to retrieve host addresses,
  89.      mailbox data, and other as yet undetermined information.  All
  90.      data associated with a name is tagged with a type, and queries
  91.      can be limited to a single type.
  92.    - Because we want the name space to be useful in dissimilar
  93.      networks and applications, we provide the ability to use the
  94.      same name space with different protocol families or
  95.      management.  For example, host address formats differ between
  96.      protocols, though all protocols have the notion of address.
  97.      The DNS tags all data with a class as well as the type, so
  98.      that we can allow parallel use of different formats for data
  99.      of type address.
  100.    - We want name server transactions to be independent of the
  101.      communications system that carries them.  Some systems may
  102.      wish to use datagrams for queries and responses, and only
  103.      establish virtual circuits for transactions that need the
  104.      reliability (e.g., database updates, long transactions); other
  105.      systems will use virtual circuits exclusively.
  106.    - The system should be useful across a wide spectrum of host
  107.      capabilities.  Both personal computers and large timeshared
  108.      hosts should be able to use the system, though perhaps in
  109.      different ways.
  110. 2.3. Assumptions about usage
  111. The organization of the domain system derives from some assumptions
  112. about the needs and usage patterns of its user community and is designed
  113. to avoid many of the the complicated problems found in general purpose
  114. database systems.
  115. The assumptions are:
  116.    - The size of the total database will initially be proportional
  117. Mockapetris                                                     [Page 3]
  118. RFC 1034             Domain Concepts and Facilities        November 1987
  119.      to the number of hosts using the system, but will eventually
  120.      grow to be proportional to the number of users on those hosts
  121.      as mailboxes and other information are added to the domain
  122.      system.
  123.    - Most of the data in the system will change very slowly (e.g.,
  124.      mailbox bindings, host addresses), but that the system should
  125.      be able to deal with subsets that change more rapidly (on the
  126.      order of seconds or minutes).
  127.    - The administrative boundaries used to distribute
  128.      responsibility for the database will usually correspond to
  129.      organizations that have one or more hosts.  Each organization
  130.      that has responsibility for a particular set of domains will
  131.      provide redundant name servers, either on the organization's
  132.      own hosts or other hosts that the organization arranges to
  133.      use.
  134.    - Clients of the domain system should be able to identify
  135.      trusted name servers they prefer to use before accepting
  136.      referrals to name servers outside of this "trusted" set.
  137.    - Access to information is more critical than instantaneous
  138.      updates or guarantees of consistency.  Hence the update
  139.      process allows updates to percolate out through the users of
  140.      the domain system rather than guaranteeing that all copies are
  141.      simultaneously updated.  When updates are unavailable due to
  142.      network or host failure, the usual course is to believe old
  143.      information while continuing efforts to update it.  The
  144.      general model is that copies are distributed with timeouts for
  145.      refreshing.  The distributor sets the timeout value and the
  146.      recipient of the distribution is responsible for performing
  147.      the refresh.  In special situations, very short intervals can
  148.      be specified, or the owner can prohibit copies.
  149.    - In any system that has a distributed database, a particular
  150.      name server may be presented with a query that can only be
  151.      answered by some other server.  The two general approaches to
  152.      dealing with this problem are "recursive", in which the first
  153.      server pursues the query for the client at another server, and
  154.      "iterative", in which the server refers the client to another
  155.      server and lets the client pursue the query.  Both approaches
  156.      have advantages and disadvantages, but the iterative approach
  157.      is preferred for the datagram style of access.  The domain
  158.      system requires implementation of the iterative approach, but
  159.      allows the recursive approach as an option.
  160. Mockapetris                                                     [Page 4]
  161. RFC 1034             Domain Concepts and Facilities        November 1987
  162. The domain system assumes that all data originates in master files
  163. scattered through the hosts that use the domain system.  These master
  164. files are updated by local system administrators.  Master files are text
  165. files that are read by a local name server, and hence become available
  166. through the name servers to users of the domain system.  The user
  167. programs access name servers through standard programs called resolvers.
  168. The standard format of master files allows them to be exchanged between
  169. hosts (via FTP, mail, or some other mechanism); this facility is useful
  170. when an organization wants a domain, but doesn't want to support a name
  171. server.  The organization can maintain the master files locally using a
  172. text editor, transfer them to a foreign host which runs a name server,
  173. and then arrange with the system administrator of the name server to get
  174. the files loaded.
  175. Each host's name servers and resolvers are configured by a local system
  176. administrator [RFC-1033].  For a name server, this configuration data
  177. includes the identity of local master files and instructions on which
  178. non-local master files are to be loaded from foreign servers.  The name
  179. server uses the master files or copies to load its zones.  For
  180. resolvers, the configuration data identifies the name servers which
  181. should be the primary sources of information.
  182. The domain system defines procedures for accessing the data and for
  183. referrals to other name servers.  The domain system also defines
  184. procedures for caching retrieved data and for periodic refreshing of
  185. data defined by the system administrator.
  186. The system administrators provide:
  187.    - The definition of zone boundaries.
  188.    - Master files of data.
  189.    - Updates to master files.
  190.    - Statements of the refresh policies desired.
  191. The domain system provides:
  192.    - Standard formats for resource data.
  193.    - Standard methods for querying the database.
  194.    - Standard methods for name servers to refresh local data from
  195.      foreign name servers.
  196. Mockapetris                                                     [Page 5]
  197. RFC 1034             Domain Concepts and Facilities        November 1987
  198. 2.4. Elements of the DNS
  199. The DNS has three major components:
  200.    - The DOMAIN NAME SPACE and RESOURCE RECORDS, which are
  201.      specifications for a tree structured name space and data
  202.      associated with the names.  Conceptually, each node and leaf
  203.      of the domain name space tree names a set of information, and
  204.      query operations are attempts to extract specific types of
  205.      information from a particular set.  A query names the domain
  206.      name of interest and describes the type of resource
  207.      information that is desired.  For example, the Internet
  208.      uses some of its domain names to identify hosts; queries for
  209.      address resources return Internet host addresses.
  210.    - NAME SERVERS are server programs which hold information about
  211.      the domain tree's structure and set information.  A name
  212.      server may cache structure or set information about any part
  213.      of the domain tree, but in general a particular name server
  214.      has complete information about a subset of the domain space,
  215.      and pointers to other name servers that can be used to lead to
  216.      information from any part of the domain tree.  Name servers
  217.      know the parts of the domain tree for which they have complete
  218.      information; a name server is said to be an AUTHORITY for
  219.      these parts of the name space.  Authoritative information is
  220.      organized into units called ZONEs, and these zones can be
  221.      automatically distributed to the name servers which provide
  222.      redundant service for the data in a zone.
  223.    - RESOLVERS are programs that extract information from name
  224.      servers in response to client requests.  Resolvers must be
  225.      able to access at least one name server and use that name
  226.      server's information to answer a query directly, or pursue the
  227.      query using referrals to other name servers.  A resolver will
  228.      typically be a system routine that is directly accessible to
  229.      user programs; hence no protocol is necessary between the
  230.      resolver and the user program.
  231. These three components roughly correspond to the three layers or views
  232. of the domain system:
  233.    - From the user's point of view, the domain system is accessed
  234.      through a simple procedure or OS call to a local resolver.
  235.      The domain space consists of a single tree and the user can
  236.      request information from any section of the tree.
  237.    - From the resolver's point of view, the domain system is
  238.      composed of an unknown number of name servers.  Each name
  239. Mockapetris                                                     [Page 6]
  240. RFC 1034             Domain Concepts and Facilities        November 1987
  241.      server has one or more pieces of the whole domain tree's data,
  242.      but the resolver views each of these databases as essentially
  243.      static.
  244.    - From a name server's point of view, the domain system consists
  245.      of separate sets of local information called zones.  The name
  246.      server has local copies of some of the zones.  The name server
  247.      must periodically refresh its zones from master copies in
  248.      local files or foreign name servers.  The name server must
  249.      concurrently process queries that arrive from resolvers.
  250. In the interests of performance, implementations may couple these
  251. functions.  For example, a resolver on the same machine as a name server
  252. might share a database consisting of the the zones managed by the name
  253. server and the cache managed by the resolver.
  254. 3. DOMAIN NAME SPACE and RESOURCE RECORDS
  255. 3.1. Name space specifications and terminology
  256. The domain name space is a tree structure.  Each node and leaf on the
  257. tree corresponds to a resource set (which may be empty).  The domain
  258. system makes no distinctions between the uses of the interior nodes and
  259. leaves, and this memo uses the term "node" to refer to both.
  260. Each node has a label, which is zero to 63 octets in length.  Brother
  261. nodes may not have the same label, although the same label can be used
  262. for nodes which are not brothers.  One label is reserved, and that is
  263. the null (i.e., zero length) label used for the root.
  264. The domain name of a node is the list of the labels on the path from the
  265. node to the root of the tree.  By convention, the labels that compose a
  266. domain name are printed or read left to right, from the most specific
  267. (lowest, farthest from the root) to the least specific (highest, closest
  268. to the root).
  269. Internally, programs that manipulate domain names should represent them
  270. as sequences of labels, where each label is a length octet followed by
  271. an octet string.  Because all domain names end at the root, which has a
  272. null string for a label, these internal representations can use a length
  273. byte of zero to terminate a domain name.
  274. By convention, domain names can be stored with arbitrary case, but
  275. domain name comparisons for all present domain functions are done in a
  276. case-insensitive manner, assuming an ASCII character set, and a high
  277. order zero bit.  This means that you are free to create a node with
  278. label "A" or a node with label "a", but not both as brothers; you could
  279. refer to either using "a" or "A".  When you receive a domain name or
  280. Mockapetris                                                     [Page 7]
  281. RFC 1034             Domain Concepts and Facilities        November 1987
  282. label, you should preserve its case.  The rationale for this choice is
  283. that we may someday need to add full binary domain names for new
  284. services; existing services would not be changed.
  285. When a user needs to type a domain name, the length of each label is
  286. omitted and the labels are separated by dots (".").  Since a complete
  287. domain name ends with the root label, this leads to a printed form which
  288. ends in a dot.  We use this property to distinguish between:
  289.    - a character string which represents a complete domain name
  290.      (often called "absolute").  For example, "poneria.ISI.EDU."
  291.    - a character string that represents the starting labels of a
  292.      domain name which is incomplete, and should be completed by
  293.      local software using knowledge of the local domain (often
  294.      called "relative").  For example, "poneria" used in the
  295.      ISI.EDU domain.
  296. Relative names are either taken relative to a well known origin, or to a
  297. list of domains used as a search list.  Relative names appear mostly at
  298. the user interface, where their interpretation varies from
  299. implementation to implementation, and in master files, where they are
  300. relative to a single origin domain name.  The most common interpretation
  301. uses the root "." as either the single origin or as one of the members
  302. of the search list, so a multi-label relative name is often one where
  303. the trailing dot has been omitted to save typing.
  304. To simplify implementations, the total number of octets that represent a
  305. domain name (i.e., the sum of all label octets and label lengths) is
  306. limited to 255.
  307. A domain is identified by a domain name, and consists of that part of
  308. the domain name space that is at or below the domain name which
  309. specifies the domain.  A domain is a subdomain of another domain if it
  310. is contained within that domain.  This relationship can be tested by
  311. seeing if the subdomain's name ends with the containing domain's name.
  312. For example, A.B.C.D is a subdomain of B.C.D, C.D, D, and " ".
  313. 3.2. Administrative guidelines on use
  314. As a matter of policy, the DNS technical specifications do not mandate a
  315. particular tree structure or rules for selecting labels; its goal is to
  316. be as general as possible, so that it can be used to build arbitrary
  317. applications.  In particular, the system was designed so that the name
  318. space did not have to be organized along the lines of network
  319. boundaries, name servers, etc.  The rationale for this is not that the
  320. name space should have no implied semantics, but rather that the choice
  321. of implied semantics should be left open to be used for the problem at
  322. Mockapetris                                                     [Page 8]
  323. RFC 1034             Domain Concepts and Facilities        November 1987
  324. hand, and that different parts of the tree can have different implied
  325. semantics.  For example, the IN-ADDR.ARPA domain is organized and
  326. distributed by network and host address because its role is to translate
  327. from network or host numbers to names; NetBIOS domains [RFC-1001, RFC-
  328. 1002] are flat because that is appropriate for that application.
  329. However, there are some guidelines that apply to the "normal" parts of
  330. the name space used for hosts, mailboxes, etc., that will make the name
  331. space more uniform, provide for growth, and minimize problems as
  332. software is converted from the older host table.  The political
  333. decisions about the top levels of the tree originated in RFC-920.
  334. Current policy for the top levels is discussed in [RFC-1032].  MILNET
  335. conversion issues are covered in [RFC-1031].
  336. Lower domains which will eventually be broken into multiple zones should
  337. provide branching at the top of the domain so that the eventual
  338. decomposition can be done without renaming.  Node labels which use
  339. special characters, leading digits, etc., are likely to break older
  340. software which depends on more restrictive choices.
  341. 3.3. Technical guidelines on use
  342. Before the DNS can be used to hold naming information for some kind of
  343. object, two needs must be met:
  344.    - A convention for mapping between object names and domain
  345.      names.  This describes how information about an object is
  346.      accessed.
  347.    - RR types and data formats for describing the object.
  348. These rules can be quite simple or fairly complex.  Very often, the
  349. designer must take into account existing formats and plan for upward
  350. compatibility for existing usage.  Multiple mappings or levels of
  351. mapping may be required.
  352. For hosts, the mapping depends on the existing syntax for host names
  353. which is a subset of the usual text representation for domain names,
  354. together with RR formats for describing host addresses, etc.  Because we
  355. need a reliable inverse mapping from address to host name, a special
  356. mapping for addresses into the IN-ADDR.ARPA domain is also defined.
  357. For mailboxes, the mapping is slightly more complex.  The usual mail
  358. address <local-part>@<mail-domain> is mapped into a domain name by
  359. converting <local-part> into a single label (regardles of dots it
  360. contains), converting <mail-domain> into a domain name using the usual
  361. text format for domain names (dots denote label breaks), and
  362. concatenating the two to form a single domain name.  Thus the mailbox
  363. Mockapetris                                                     [Page 9]
  364. RFC 1034             Domain Concepts and Facilities        November 1987
  365. HOSTMASTER@SRI-NIC.ARPA is represented as a domain name by
  366. HOSTMASTER.SRI-NIC.ARPA.  An appreciation for the reasons behind this
  367. design also must take into account the scheme for mail exchanges [RFC-
  368. 974].
  369. The typical user is not concerned with defining these rules, but should
  370. understand that they usually are the result of numerous compromises
  371. between desires for upward compatibility with old usage, interactions
  372. between different object definitions, and the inevitable urge to add new
  373. features when defining the rules.  The way the DNS is used to support
  374. some object is often more crucial than the restrictions inherent in the
  375. DNS.
  376. 3.4. Example name space
  377. The following figure shows a part of the current domain name space, and
  378. is used in many examples in this RFC.  Note that the tree is a very
  379. small subset of the actual name space.
  380.                                    |
  381.                                    |
  382.              +---------------------+------------------+
  383.              |                     |                  |
  384.             MIL                   EDU                ARPA
  385.              |                     |                  |
  386.              |                     |                  |
  387.        +-----+-----+               |     +------+-----+-----+
  388.        |     |     |               |     |      |           |
  389.       BRL  NOSC  DARPA             |  IN-ADDR  SRI-NIC     ACC
  390.                                    |
  391.        +--------+------------------+---------------+--------+
  392.        |        |                  |               |        |
  393.       UCI      MIT                 |              UDEL     YALE
  394.                 |                 ISI
  395.                 |                  |
  396.             +---+---+              |
  397.             |       |              |
  398.            LCS  ACHILLES  +--+-----+-----+--------+
  399.             |             |  |     |     |        |
  400.             XX            A  C   VAXA  VENERA Mockapetris
  401. In this example, the root domain has three immediate subdomains: MIL,
  402. EDU, and ARPA.  The LCS.MIT.EDU domain has one immediate subdomain named
  403. XX.LCS.MIT.EDU.  All of the leaves are also domains.
  404. 3.5. Preferred name syntax
  405. The DNS specifications attempt to be as general as possible in the rules
  406. Mockapetris                                                    [Page 10]
  407. RFC 1034             Domain Concepts and Facilities        November 1987
  408. for constructing domain names.  The idea is that the name of any
  409. existing object can be expressed as a domain name with minimal changes.
  410. However, when assigning a domain name for an object, the prudent user
  411. will select a name which satisfies both the rules of the domain system
  412. and any existing rules for the object, whether these rules are published
  413. or implied by existing programs.
  414. For example, when naming a mail domain, the user should satisfy both the
  415. rules of this memo and those in RFC-822.  When creating a new host name,
  416. the old rules for HOSTS.TXT should be followed.  This avoids problems
  417. when old software is converted to use domain names.
  418. The following syntax will result in fewer problems with many
  419. applications that use domain names (e.g., mail, TELNET).
  420. <domain> ::= <subdomain> | " "
  421. <subdomain> ::= <label> | <subdomain> "." <label>
  422. <label> ::= <letter> [ [ <ldh-str> ] <let-dig> ]
  423. <ldh-str> ::= <let-dig-hyp> | <let-dig-hyp> <ldh-str>
  424. <let-dig-hyp> ::= <let-dig> | "-"
  425. <let-dig> ::= <letter> | <digit>
  426. <letter> ::= any one of the 52 alphabetic characters A through Z in
  427. upper case and a through z in lower case
  428. <digit> ::= any one of the ten digits 0 through 9
  429. Note that while upper and lower case letters are allowed in domain
  430. names, no significance is attached to the case.  That is, two names with
  431. the same spelling but different case are to be treated as if identical.
  432. The labels must follow the rules for ARPANET host names.  They must
  433. start with a letter, end with a letter or digit, and have as interior
  434. characters only letters, digits, and hyphen.  There are also some
  435. restrictions on the length.  Labels must be 63 characters or less.
  436. For example, the following strings identify hosts in the Internet:
  437. A.ISI.EDU  XX.LCS.MIT.EDU  SRI-NIC.ARPA
  438. 3.6. Resource Records
  439. A domain name identifies a node.  Each node has a set of resource
  440. Mockapetris                                                    [Page 11]
  441. RFC 1034             Domain Concepts and Facilities        November 1987
  442. information, which may be empty.  The set of resource information
  443. associated with a particular name is composed of separate resource
  444. records (RRs).  The order of RRs in a set is not significant, and need
  445. not be preserved by name servers, resolvers, or other parts of the DNS.
  446. When we talk about a specific RR, we assume it has the following:
  447. owner           which is the domain name where the RR is found.
  448. type            which is an encoded 16 bit value that specifies the type
  449.                 of the resource in this resource record.  Types refer to
  450.                 abstract resources.
  451.                 This memo uses the following types:
  452.                 A               a host address
  453.                 CNAME           identifies the canonical name of an
  454.                                 alias
  455.                 HINFO           identifies the CPU and OS used by a host
  456.                 MX              identifies a mail exchange for the
  457.                                 domain.  See [RFC-974 for details.
  458.                 NS
  459.                 the authoritative name server for the domain
  460.                 PTR
  461.                 a pointer to another part of the domain name space
  462.                 SOA
  463.                 identifies the start of a zone of authority]
  464. class           which is an encoded 16 bit value which identifies a
  465.                 protocol family or instance of a protocol.
  466.                 This memo uses the following classes:
  467.                 IN              the Internet system
  468.                 CH              the Chaos system
  469. TTL             which is the time to live of the RR.  This field is a 32
  470.                 bit integer in units of seconds, an is primarily used by
  471.                 resolvers when they cache RRs.  The TTL describes how
  472.                 long a RR can be cached before it should be discarded.
  473. Mockapetris                                                    [Page 12]
  474. RFC 1034             Domain Concepts and Facilities        November 1987
  475. RDATA           which is the type and sometimes class dependent data
  476.                 which describes the resource:
  477.                 A               For the IN class, a 32 bit IP address
  478.                                 For the CH class, a domain name followed
  479.                                 by a 16 bit octal Chaos address.
  480.                 CNAME           a domain name.
  481.                 MX              a 16 bit preference value (lower is
  482.                                 better) followed by a host name willing
  483.                                 to act as a mail exchange for the owner
  484.                                 domain.
  485.                 NS              a host name.
  486.                 PTR             a domain name.
  487.                 SOA             several fields.
  488. The owner name is often implicit, rather than forming an integral part
  489. of the RR.  For example, many name servers internally form tree or hash
  490. structures for the name space, and chain RRs off nodes.  The remaining
  491. RR parts are the fixed header (type, class, TTL) which is consistent for
  492. all RRs, and a variable part (RDATA) that fits the needs of the resource
  493. being described.
  494. The meaning of the TTL field is a time limit on how long an RR can be
  495. kept in a cache.  This limit does not apply to authoritative data in
  496. zones; it is also timed out, but by the refreshing policies for the
  497. zone.  The TTL is assigned by the administrator for the zone where the
  498. data originates.  While short TTLs can be used to minimize caching, and
  499. a zero TTL prohibits caching, the realities of Internet performance
  500. suggest that these times should be on the order of days for the typical
  501. host.  If a change can be anticipated, the TTL can be reduced prior to
  502. the change to minimize inconsistency during the change, and then
  503. increased back to its former value following the change.
  504. The data in the RDATA section of RRs is carried as a combination of
  505. binary strings and domain names.  The domain names are frequently used
  506. as "pointers" to other data in the DNS.
  507. 3.6.1. Textual expression of RRs
  508. RRs are represented in binary form in the packets of the DNS protocol,
  509. and are usually represented in highly encoded form when stored in a name
  510. server or resolver.  In this memo, we adopt a style similar to that used
  511. Mockapetris                                                    [Page 13]
  512. RFC 1034             Domain Concepts and Facilities        November 1987
  513. in master files in order to show the contents of RRs.  In this format,
  514. most RRs are shown on a single line, although continuation lines are
  515. possible using parentheses.
  516. The start of the line gives the owner of the RR.  If a line begins with
  517. a blank, then the owner is assumed to be the same as that of the
  518. previous RR.  Blank lines are often included for readability.
  519. Following the owner, we list the TTL, type, and class of the RR.  Class
  520. and type use the mnemonics defined above, and TTL is an integer before
  521. the type field.  In order to avoid ambiguity in parsing, type and class
  522. mnemonics are disjoint, TTLs are integers, and the type mnemonic is
  523. always last. The IN class and TTL values are often omitted from examples
  524. in the interests of clarity.
  525. The resource data or RDATA section of the RR are given using knowledge
  526. of the typical representation for the data.
  527. For example, we might show the RRs carried in a message as:
  528.     ISI.EDU.        MX      10 VENERA.ISI.EDU.
  529.                     MX      10 VAXA.ISI.EDU.
  530.     VENERA.ISI.EDU. A       128.9.0.32
  531.                     A       10.1.0.52
  532.     VAXA.ISI.EDU.   A       10.2.0.27
  533.                     A       128.9.0.33
  534. The MX RRs have an RDATA section which consists of a 16 bit number
  535. followed by a domain name.  The address RRs use a standard IP address
  536. format to contain a 32 bit internet address.
  537. This example shows six RRs, with two RRs at each of three domain names.
  538. Similarly we might see:
  539.     XX.LCS.MIT.EDU. IN      A       10.0.0.44
  540.                     CH      A       MIT.EDU. 2420
  541. This example shows two addresses for XX.LCS.MIT.EDU, each of a different
  542. class.
  543. 3.6.2. Aliases and canonical names
  544. In existing systems, hosts and other resources often have several names
  545. that identify the same resource.  For example, the names C.ISI.EDU and
  546. USC-ISIC.ARPA both identify the same host.  Similarly, in the case of
  547. mailboxes, many organizations provide many names that actually go to the
  548. same mailbox; for example Mockapetris@C.ISI.EDU, Mockapetris@B.ISI.EDU,
  549. Mockapetris                                                    [Page 14]
  550. RFC 1034             Domain Concepts and Facilities        November 1987
  551. and PVM@ISI.EDU all go to the same mailbox (although the mechanism
  552. behind this is somewhat complicated).
  553. Most of these systems have a notion that one of the equivalent set of
  554. names is the canonical or primary name and all others are aliases.
  555. The domain system provides such a feature using the canonical name
  556. (CNAME) RR.  A CNAME RR identifies its owner name as an alias, and
  557. specifies the corresponding canonical name in the RDATA section of the
  558. RR.  If a CNAME RR is present at a node, no other data should be
  559. present; this ensures that the data for a canonical name and its aliases
  560. cannot be different.  This rule also insures that a cached CNAME can be
  561. used without checking with an authoritative server for other RR types.
  562. CNAME RRs cause special action in DNS software.  When a name server
  563. fails to find a desired RR in the resource set associated with the
  564. domain name, it checks to see if the resource set consists of a CNAME
  565. record with a matching class.  If so, the name server includes the CNAME
  566. record in the response and restarts the query at the domain name
  567. specified in the data field of the CNAME record.  The one exception to
  568. this rule is that queries which match the CNAME type are not restarted.
  569. For example, suppose a name server was processing a query with for USC-
  570. ISIC.ARPA, asking for type A information, and had the following resource
  571. records:
  572.     USC-ISIC.ARPA   IN      CNAME   C.ISI.EDU
  573.     C.ISI.EDU       IN      A       10.0.0.52
  574. Both of these RRs would be returned in the response to the type A query,
  575. while a type CNAME or * query should return just the CNAME.
  576. Domain names in RRs which point at another name should always point at
  577. the primary name and not the alias.  This avoids extra indirections in
  578. accessing information.  For example, the address to name RR for the
  579. above host should be:
  580.     52.0.0.10.IN-ADDR.ARPA  IN      PTR     C.ISI.EDU
  581. rather than pointing at USC-ISIC.ARPA.  Of course, by the robustness
  582. principle, domain software should not fail when presented with CNAME
  583. chains or loops; CNAME chains should be followed and CNAME loops
  584. signalled as an error.
  585. 3.7. Queries
  586. Queries are messages which may be sent to a name server to provoke a
  587. Mockapetris                                                    [Page 15]
  588. RFC 1034             Domain Concepts and Facilities        November 1987
  589. response.  In the Internet, queries are carried in UDP datagrams or over
  590. TCP connections.  The response by the name server either answers the
  591. question posed in the query, refers the requester to another set of name
  592. servers, or signals some error condition.
  593. In general, the user does not generate queries directly, but instead
  594. makes a request to a resolver which in turn sends one or more queries to
  595. name servers and deals with the error conditions and referrals that may
  596. result.  Of course, the possible questions which can be asked in a query
  597. does shape the kind of service a resolver can provide.
  598. DNS queries and responses are carried in a standard message format.  The
  599. message format has a header containing a number of fixed fields which
  600. are always present, and four sections which carry query parameters and
  601. RRs.
  602. The most important field in the header is a four bit field called an
  603. opcode which separates different queries.  Of the possible 16 values,
  604. one (standard query) is part of the official protocol, two (inverse
  605. query and status query) are options, one (completion) is obsolete, and
  606. the rest are unassigned.
  607. The four sections are:
  608. Question        Carries the query name and other query parameters.
  609. Answer          Carries RRs which directly answer the query.
  610. Authority       Carries RRs which describe other authoritative servers.
  611.                 May optionally carry the SOA RR for the authoritative
  612.                 data in the answer section.
  613. Additional      Carries RRs which may be helpful in using the RRs in the
  614.                 other sections.
  615. Note that the content, but not the format, of these sections varies with
  616. header opcode.
  617. 3.7.1. Standard queries
  618. A standard query specifies a target domain name (QNAME), query type
  619. (QTYPE), and query class (QCLASS) and asks for RRs which match.  This
  620. type of query makes up such a vast majority of DNS queries that we use
  621. the term "query" to mean standard query unless otherwise specified.  The
  622. QTYPE and QCLASS fields are each 16 bits long, and are a superset of
  623. defined types and classes.
  624. Mockapetris                                                    [Page 16]
  625. RFC 1034             Domain Concepts and Facilities        November 1987
  626. The QTYPE field may contain:
  627. <any type>      matches just that type. (e.g., A, PTR).
  628. AXFR            special zone transfer QTYPE.
  629. MAILB           matches all mail box related RRs (e.g. MB and MG).
  630. *               matches all RR types.
  631. The QCLASS field may contain:
  632. <any class>     matches just that class (e.g., IN, CH).
  633. *               matches aLL RR classes.
  634. Using the query domain name, QTYPE, and QCLASS, the name server looks
  635. for matching RRs.  In addition to relevant records, the name server may
  636. return RRs that point toward a name server that has the desired
  637. information or RRs that are expected to be useful in interpreting the
  638. relevant RRs.  For example, a name server that doesn't have the
  639. requested information may know a name server that does; a name server
  640. that returns a domain name in a relevant RR may also return the RR that
  641. binds that domain name to an address.
  642. For example, a mailer tying to send mail to Mockapetris@ISI.EDU might
  643. ask the resolver for mail information about ISI.EDU, resulting in a
  644. query for QNAME=ISI.EDU, QTYPE=MX, QCLASS=IN.  The response's answer
  645. section would be:
  646.     ISI.EDU.        MX      10 VENERA.ISI.EDU.
  647.                     MX      10 VAXA.ISI.EDU.
  648. while the additional section might be:
  649.     VAXA.ISI.EDU.   A       10.2.0.27
  650.                     A       128.9.0.33
  651.     VENERA.ISI.EDU. A       10.1.0.52
  652.                     A       128.9.0.32
  653. Because the server assumes that if the requester wants mail exchange
  654. information, it will probably want the addresses of the mail exchanges
  655. soon afterward.
  656. Note that the QCLASS=* construct requires special interpretation
  657. regarding authority.  Since a particular name server may not know all of
  658. the classes available in the domain system, it can never know if it is
  659. authoritative for all classes.  Hence responses to QCLASS=* queries can
  660. Mockapetris                                                    [Page 17]
  661. RFC 1034             Domain Concepts and Facilities        November 1987
  662. never be authoritative.
  663. 3.7.2. Inverse queries (Optional)
  664. Name servers may also support inverse queries that map a particular
  665. resource to a domain name or domain names that have that resource.  For
  666. example, while a standard query might map a domain name to a SOA RR, the
  667. corresponding inverse query might map the SOA RR back to the domain
  668. name.
  669. Implementation of this service is optional in a name server, but all
  670. name servers must at least be able to understand an inverse query
  671. message and return a not-implemented error response.
  672. The domain system cannot guarantee the completeness or uniqueness of
  673. inverse queries because the domain system is organized by domain name
  674. rather than by host address or any other resource type.  Inverse queries
  675. are primarily useful for debugging and database maintenance activities.
  676. Inverse queries may not return the proper TTL, and do not indicate cases
  677. where the identified RR is one of a set (for example, one address for a
  678. host having multiple addresses).  Therefore, the RRs returned in inverse
  679. queries should never be cached.
  680. Inverse queries are NOT an acceptable method for mapping host addresses
  681. to host names; use the IN-ADDR.ARPA domain instead.
  682. A detailed discussion of inverse queries is contained in [RFC-1035].
  683. 3.8. Status queries (Experimental)
  684. To be defined.
  685. 3.9. Completion queries (Obsolete)
  686. The optional completion services described in RFCs 882 and 883 have been
  687. deleted.  Redesigned services may become available in the future, or the
  688. opcodes may be reclaimed for other use.
  689. 4. NAME SERVERS
  690. 4.1. Introduction
  691. Name servers are the repositories of information that make up the domain
  692. database.  The database is divided up into sections called zones, which
  693. are distributed among the name servers.  While name servers can have
  694. several optional functions and sources of data, the essential task of a
  695. name server is to answer queries using data in its zones.  By design,
  696. Mockapetris                                                    [Page 18]
  697. RFC 1034             Domain Concepts and Facilities        November 1987
  698. name servers can answer queries in a simple manner; the response can
  699. always be generated using only local data, and either contains the
  700. answer to the question or a referral to other name servers "closer" to
  701. the desired information.
  702. A given zone will be available from several name servers to insure its
  703. availability in spite of host or communication link failure.  By
  704. administrative fiat, we require every zone to be available on at least
  705. two servers, and many zones have more redundancy than that.
  706. A given name server will typically support one or more zones, but this
  707. gives it authoritative information about only a small section of the
  708. domain tree.  It may also have some cached non-authoritative data about
  709. other parts of the tree.  The name server marks its responses to queries
  710. so that the requester can tell whether the response comes from
  711. authoritative data or not.
  712. 4.2. How the database is divided into zones
  713. The domain database is partitioned in two ways: by class, and by "cuts"
  714. made in the name space between nodes.
  715. The class partition is simple.  The database for any class is organized,
  716. delegated, and maintained separately from all other classes.  Since, by
  717. convention, the name spaces are the same for all classes, the separate
  718. classes can be thought of as an array of parallel namespace trees.  Note
  719. that the data attached to nodes will be different for these different
  720. parallel classes.  The most common reasons for creating a new class are
  721. the necessity for a new data format for existing types or a desire for a
  722. separately managed version of the existing name space.
  723. Within a class, "cuts" in the name space can be made between any two
  724. adjacent nodes.  After all cuts are made, each group of connected name
  725. space is a separate zone.  The zone is said to be authoritative for all
  726. names in the connected region.  Note that the "cuts" in the name space
  727. may be in different places for different classes, the name servers may
  728. be different, etc.
  729. These rules mean that every zone has at least one node, and hence domain
  730. name, for which it is authoritative, and all of the nodes in a
  731. particular zone are connected.  Given, the tree structure, every zone
  732. has a highest node which is closer to the root than any other node in
  733. the zone.  The name of this node is often used to identify the zone.
  734. It would be possible, though not particularly useful, to partition the
  735. name space so that each domain name was in a separate zone or so that
  736. all nodes were in a single zone.  Instead, the database is partitioned
  737. at points where a particular organization wants to take over control of
  738. Mockapetris                                                    [Page 19]
  739. RFC 1034             Domain Concepts and Facilities        November 1987
  740. a subtree.  Once an organization controls its own zone it can
  741. unilaterally change the data in the zone, grow new tree sections
  742. connected to the zone, delete existing nodes, or delegate new subzones
  743. under its zone.
  744. If the organization has substructure, it may want to make further
  745. internal partitions to achieve nested delegations of name space control.
  746. In some cases, such divisions are made purely to make database
  747. maintenance more convenient.
  748. 4.2.1. Technical considerations
  749. The data that describes a zone has four major parts:
  750.    - Authoritative data for all nodes within the zone.
  751.    - Data that defines the top node of the zone (can be thought of
  752.      as part of the authoritative data).
  753.    - Data that describes delegated subzones, i.e., cuts around the
  754.      bottom of the zone.
  755.    - Data that allows access to name servers for subzones
  756.      (sometimes called "glue" data).
  757. All of this data is expressed in the form of RRs, so a zone can be
  758. completely described in terms of a set of RRs.  Whole zones can be
  759. transferred between name servers by transferring the RRs, either carried
  760. in a series of messages or by FTPing a master file which is a textual
  761. representation.
  762. The authoritative data for a zone is simply all of the RRs attached to
  763. all of the nodes from the top node of the zone down to leaf nodes or
  764. nodes above cuts around the bottom edge of the zone.
  765. Though logically part of the authoritative data, the RRs that describe
  766. the top node of the zone are especially important to the zone's
  767. management.  These RRs are of two types: name server RRs that list, one
  768. per RR, all of the servers for the zone, and a single SOA RR that
  769. describes zone management parameters.
  770. The RRs that describe cuts around the bottom of the zone are NS RRs that
  771. name the servers for the subzones.  Since the cuts are between nodes,
  772. these RRs are NOT part of the authoritative data of the zone, and should
  773. be exactly the same as the corresponding RRs in the top node of the
  774. subzone.  Since name servers are always associated with zone boundaries,
  775. NS RRs are only found at nodes which are the top node of some zone.  In
  776. the data that makes up a zone, NS RRs are found at the top node of the
  777. Mockapetris                                                    [Page 20]
  778. RFC 1034             Domain Concepts and Facilities        November 1987
  779. zone (and are authoritative) and at cuts around the bottom of the zone
  780. (where they are not authoritative), but never in between.
  781. One of the goals of the zone structure is that any zone have all the
  782. data required to set up communications with the name servers for any
  783. subzones.  That is, parent zones have all the information needed to
  784. access servers for their children zones.  The NS RRs that name the
  785. servers for subzones are often not enough for this task since they name
  786. the servers, but do not give their addresses.  In particular, if the
  787. name of the name server is itself in the subzone, we could be faced with
  788. the situation where the NS RRs tell us that in order to learn a name
  789. server's address, we should contact the server using the address we wish
  790. to learn.  To fix this problem, a zone contains "glue" RRs which are not
  791. part of the authoritative data, and are address RRs for the servers.
  792. These RRs are only necessary if the name server's name is "below" the
  793. cut, and are only used as part of a referral response.
  794. 4.2.2. Administrative considerations
  795. When some organization wants to control its own domain, the first step
  796. is to identify the proper parent zone, and get the parent zone's owners
  797. to agree to the delegation of control.  While there are no particular
  798. technical constraints dealing with where in the tree this can be done,
  799. there are some administrative groupings discussed in [RFC-1032] which
  800. deal with top level organization, and middle level zones are free to
  801. create their own rules.  For example, one university might choose to use
  802. a single zone, while another might choose to organize by subzones
  803. dedicated to individual departments or schools.  [RFC-1033] catalogs
  804. available DNS software an discusses administration procedures.
  805. Once the proper name for the new subzone is selected, the new owners
  806. should be required to demonstrate redundant name server support.  Note
  807. that there is no requirement that the servers for a zone reside in a
  808. host which has a name in that domain.  In many cases, a zone will be
  809. more accessible to the internet at large if its servers are widely
  810. distributed rather than being within the physical facilities controlled
  811. by the same organization that manages the zone.  For example, in the
  812. current DNS, one of the name servers for the United Kingdom, or UK
  813. domain, is found in the US.  This allows US hosts to get UK data without
  814. using limited transatlantic bandwidth.
  815. As the last installation step, the delegation NS RRs and glue RRs
  816. necessary to make the delegation effective should be added to the parent
  817. zone.  The administrators of both zones should insure that the NS and
  818. glue RRs which mark both sides of the cut are consistent and remain so.
  819. 4.3. Name server internals
  820. Mockapetris                                                    [Page 21]
  821. RFC 1034             Domain Concepts and Facilities        November 1987
  822. 4.3.1. Queries and responses
  823. The principal activity of name servers is to answer standard queries.
  824. Both the query and its response are carried in a standard message format
  825. which is described in [RFC-1035].  The query contains a QTYPE, QCLASS,
  826. and QNAME, which describe the types and classes of desired information
  827. and the name of interest.
  828. The way that the name server answers the query depends upon whether it
  829. is operating in recursive mode or not:
  830.    - The simplest mode for the server is non-recursive, since it
  831.      can answer queries using only local information: the response
  832.      contains an error, the answer, or a referral to some other
  833.      server "closer" to the answer.  All name servers must
  834.      implement non-recursive queries.
  835.    - The simplest mode for the client is recursive, since in this
  836.      mode the name server acts in the role of a resolver and
  837.      returns either an error or the answer, but never referrals.
  838.      This service is optional in a name server, and the name server
  839.      may also choose to restrict the clients which can use
  840.      recursive mode.
  841. Recursive service is helpful in several situations:
  842.    - a relatively simple requester that lacks the ability to use
  843.      anything other than a direct answer to the question.
  844.    - a request that needs to cross protocol or other boundaries and
  845.      can be sent to a server which can act as intermediary.
  846.    - a network where we want to concentrate the cache rather than
  847.      having a separate cache for each client.
  848. Non-recursive service is appropriate if the requester is capable of
  849. pursuing referrals and interested in information which will aid future
  850. requests.
  851. The use of recursive mode is limited to cases where both the client and
  852. the name server agree to its use.  The agreement is negotiated through
  853. the use of two bits in query and response messages:
  854.    - The recursion available, or RA bit, is set or cleared by a
  855.      name server in all responses.  The bit is true if the name
  856.      server is willing to provide recursive service for the client,
  857.      regardless of whether the client requested recursive service.
  858.      That is, RA signals availability rather than use.
  859. Mockapetris                                                    [Page 22]
  860. RFC 1034             Domain Concepts and Facilities        November 1987
  861.    - Queries contain a bit called recursion desired or RD.  This
  862.      bit specifies specifies whether the requester wants recursive
  863.      service for this query.  Clients may request recursive service
  864.      from any name server, though they should depend upon receiving
  865.      it only from servers which have previously sent an RA, or
  866.      servers which have agreed to provide service through private
  867.      agreement or some other means outside of the DNS protocol.
  868. The recursive mode occurs when a query with RD set arrives at a server
  869. which is willing to provide recursive service; the client can verify
  870. that recursive mode was used by checking that both RA and RD are set in
  871. the reply.  Note that the name server should never perform recursive
  872. service unless asked via RD, since this interferes with trouble shooting
  873. of name servers and their databases.
  874. If recursive service is requested and available, the recursive response
  875. to a query will be one of the following:
  876.    - The answer to the query, possibly preface by one or more CNAME
  877.      RRs that specify aliases encountered on the way to an answer.
  878.    - A name error indicating that the name does not exist.  This
  879.      may include CNAME RRs that indicate that the original query
  880.      name was an alias for a name which does not exist.
  881.    - A temporary error indication.
  882. If recursive service is not requested or is not available, the non-
  883. recursive response will be one of the following:
  884.    - An authoritative name error indicating that the name does not
  885.      exist.
  886.    - A temporary error indication.
  887.    - Some combination of:
  888.      RRs that answer the question, together with an indication
  889.      whether the data comes from a zone or is cached.
  890.      A referral to name servers which have zones which are closer
  891.      ancestors to the name than the server sending the reply.
  892.    - RRs that the name server thinks will prove useful to the
  893.      requester.
  894. Mockapetris                                                    [Page 23]
  895. RFC 1034             Domain Concepts and Facilities        November 1987
  896. 4.3.2. Algorithm
  897. The actual algorithm used by the name server will depend on the local OS
  898. and data structures used to store RRs.  The following algorithm assumes
  899. that the RRs are organized in several tree structures, one for each
  900. zone, and another for the cache:
  901.    1. Set or clear the value of recursion available in the response
  902.       depending on whether the name server is willing to provide
  903.       recursive service.  If recursive service is available and
  904.       requested via the RD bit in the query, go to step 5,
  905.       otherwise step 2.
  906.    2. Search the available zones for the zone which is the nearest
  907.       ancestor to QNAME.  If such a zone is found, go to step 3,
  908.       otherwise step 4.
  909.    3. Start matching down, label by label, in the zone.  The
  910.       matching process can terminate several ways:
  911.          a. If the whole of QNAME is matched, we have found the
  912.             node.
  913.             If the data at the node is a CNAME, and QTYPE doesn't
  914.             match CNAME, copy the CNAME RR into the answer section
  915.             of the response, change QNAME to the canonical name in
  916.             the CNAME RR, and go back to step 1.
  917.             Otherwise, copy all RRs which match QTYPE into the
  918.             answer section and go to step 6.
  919.          b. If a match would take us out of the authoritative data,
  920.             we have a referral.  This happens when we encounter a
  921.             node with NS RRs marking cuts along the bottom of a
  922.             zone.
  923.             Copy the NS RRs for the subzone into the authority
  924.             section of the reply.  Put whatever addresses are
  925.             available into the additional section, using glue RRs
  926.             if the addresses are not available from authoritative
  927.             data or the cache.  Go to step 4.
  928.          c. If at some label, a match is impossible (i.e., the
  929.             corresponding label does not exist), look to see if a
  930.             the "*" label exists.
  931.             If the "*" label does not exist, check whether the name
  932.             we are looking for is the original QNAME in the query
  933. Mockapetris                                                    [Page 24]
  934. RFC 1034             Domain Concepts and Facilities        November 1987
  935.             or a name we have followed due to a CNAME.  If the name
  936.             is original, set an authoritative name error in the
  937.             response and exit.  Otherwise just exit.
  938.             If the "*" label does exist, match RRs at that node
  939.             against QTYPE.  If any match, copy them into the answer
  940.             section, but set the owner of the RR to be QNAME, and
  941.             not the node with the "*" label.  Go to step 6.
  942.    4. Start matching down in the cache.  If QNAME is found in the
  943.       cache, copy all RRs attached to it that match QTYPE into the
  944.       answer section.  If there was no delegation from
  945.       authoritative data, look for the best one from the cache, and
  946.       put it in the authority section.  Go to step 6.
  947.    5. Using the local resolver or a copy of its algorithm (see
  948.       resolver section of this memo) to answer the query.  Store
  949.       the results, including any intermediate CNAMEs, in the answer
  950.       section of the response.
  951.    6. Using local data only, attempt to add other RRs which may be
  952.       useful to the additional section of the query.  Exit.
  953. 4.3.3. Wildcards
  954. In the previous algorithm, special treatment was given to RRs with owner
  955. names starting with the label "*".  Such RRs are called wildcards.
  956. Wildcard RRs can be thought of as instructions for synthesizing RRs.
  957. When the appropriate conditions are met, the name server creates RRs
  958. with an owner name equal to the query name and contents taken from the
  959. wildcard RRs.
  960. This facility is most often used to create a zone which will be used to
  961. forward mail from the Internet to some other mail system.  The general
  962. idea is that any name in that zone which is presented to server in a
  963. query will be assumed to exist, with certain properties, unless explicit
  964. evidence exists to the contrary.  Note that the use of the term zone
  965. here, instead of domain, is intentional; such defaults do not propagate
  966. across zone boundaries, although a subzone may choose to achieve that
  967. appearance by setting up similar defaults.
  968. The contents of the wildcard RRs follows the usual rules and formats for
  969. RRs.  The wildcards in the zone have an owner name that controls the
  970. query names they will match.  The owner name of the wildcard RRs is of
  971. the form "*.<anydomain>", where <anydomain> is any domain name.
  972. <anydomain> should not contain other * labels, and should be in the
  973. authoritative data of the zone.  The wildcards potentially apply to
  974. descendants of <anydomain>, but not to <anydomain> itself.  Another way
  975. Mockapetris                                                    [Page 25]
  976. RFC 1034             Domain Concepts and Facilities        November 1987
  977. to look at this is that the "*" label always matches at least one whole
  978. label and sometimes more, but always whole labels.
  979. Wildcard RRs do not apply:
  980.    - When the query is in another zone.  That is, delegation cancels
  981.      the wildcard defaults.
  982.    - When the query name or a name between the wildcard domain and
  983.      the query name is know to exist.  For example, if a wildcard
  984.      RR has an owner name of "*.X", and the zone also contains RRs
  985.      attached to B.X, the wildcards would apply to queries for name
  986.      Z.X (presuming there is no explicit information for Z.X), but
  987.      not to B.X, A.B.X, or X.
  988. A * label appearing in a query name has no special effect, but can be
  989. used to test for wildcards in an authoritative zone; such a query is the
  990. only way to get a response containing RRs with an owner name with * in
  991. it.  The result of such a query should not be cached.
  992. Note that the contents of the wildcard RRs are not modified when used to
  993. synthesize RRs.
  994. To illustrate the use of wildcard RRs, suppose a large company with a
  995. large, non-IP/TCP, network wanted to create a mail gateway.  If the
  996. company was called X.COM, and IP/TCP capable gateway machine was called
  997. A.X.COM, the following RRs might be entered into the COM zone:
  998.     X.COM           MX      10      A.X.COM
  999.     *.X.COM         MX      10      A.X.COM
  1000.     A.X.COM         A       1.2.3.4
  1001.     A.X.COM         MX      10      A.X.COM
  1002.     *.A.X.COM       MX      10      A.X.COM
  1003. This would cause any MX query for any domain name ending in X.COM to
  1004. return an MX RR pointing at A.X.COM.  Two wildcard RRs are required
  1005. since the effect of the wildcard at *.X.COM is inhibited in the A.X.COM
  1006. subtree by the explicit data for A.X.COM.  Note also that the explicit
  1007. MX data at X.COM and A.X.COM is required, and that none of the RRs above
  1008. would match a query name of XX.COM.
  1009. 4.3.4. Negative response caching (Optional)
  1010. The DNS provides an optional service which allows name servers to
  1011. distribute, and resolvers to cache, negative results with TTLs.  For
  1012. Mockapetris                                                    [Page 26]
  1013. RFC 1034             Domain Concepts and Facilities        November 1987
  1014. example, a name server can distribute a TTL along with a name error
  1015. indication, and a resolver receiving such information is allowed to
  1016. assume that the name does not exist during the TTL period without
  1017. consulting authoritative data.  Similarly, a resolver can make a query
  1018. with a QTYPE which matches multiple types, and cache the fact that some
  1019. of the types are not present.
  1020. This feature can be particularly important in a system which implements
  1021. naming shorthands that use search lists beacuse a popular shorthand,
  1022. which happens to require a suffix toward the end of the search list,
  1023. will generate multiple name errors whenever it is used.
  1024. The method is that a name server may add an SOA RR to the additional
  1025. section of a response when that response is authoritative.  The SOA must
  1026. be that of the zone which was the source of the authoritative data in
  1027. the answer section, or name error if applicable.  The MINIMUM field of
  1028. the SOA controls the length of time that the negative result may be
  1029. cached.
  1030. Note that in some circumstances, the answer section may contain multiple
  1031. owner names.  In this case, the SOA mechanism should only be used for
  1032. the data which matches QNAME, which is the only authoritative data in
  1033. this section.
  1034. Name servers and resolvers should never attempt to add SOAs to the
  1035. additional section of a non-authoritative response, or attempt to infer
  1036. results which are not directly stated in an authoritative response.
  1037. There are several reasons for this, including: cached information isn't
  1038. usually enough to match up RRs and their zone names, SOA RRs may be
  1039. cached due to direct SOA queries, and name servers are not required to
  1040. output the SOAs in the authority section.
  1041. This feature is optional, although a refined version is expected to
  1042. become part of the standard protocol in the future.  Name servers are
  1043. not required to add the SOA RRs in all authoritative responses, nor are
  1044. resolvers required to cache negative results.  Both are recommended.
  1045. All resolvers and recursive name servers are required to at least be
  1046. able to ignore the SOA RR when it is present in a response.
  1047. Some experiments have also been proposed which will use this feature.
  1048. The idea is that if cached data is known to come from a particular zone,
  1049. and if an authoritative copy of the zone's SOA is obtained, and if the
  1050. zone's SERIAL has not changed since the data was cached, then the TTL of
  1051. the cached data can be reset to the zone MINIMUM value if it is smaller.
  1052. This usage is mentioned for planning purposes only, and is not
  1053. recommended as yet.
  1054. Mockapetris                                                    [Page 27]
  1055. RFC 1034             Domain Concepts and Facilities        November 1987
  1056. 4.3.5. Zone maintenance and transfers
  1057. Part of the job of a zone administrator is to maintain the zones at all
  1058. of the name servers which are authoritative for the zone.  When the
  1059. inevitable changes are made, they must be distributed to all of the name
  1060. servers.  While this distribution can be accomplished using FTP or some
  1061. other ad hoc procedure, the preferred method is the zone transfer part
  1062. of the DNS protocol.
  1063. The general model of automatic zone transfer or refreshing is that one
  1064. of the name servers is the master or primary for the zone.  Changes are
  1065. coordinated at the primary, typically by editing a master file for the
  1066. zone.  After editing, the administrator signals the master server to
  1067. load the new zone.  The other non-master or secondary servers for the
  1068. zone periodically check for changes (at a selectable interval) and
  1069. obtain new zone copies when changes have been made.
  1070. To detect changes, secondaries just check the SERIAL field of the SOA
  1071. for the zone.  In addition to whatever other changes are made, the
  1072. SERIAL field in the SOA of the zone is always advanced whenever any
  1073. change is made to the zone.  The advancing can be a simple increment, or
  1074. could be based on the write date and time of the master file, etc.  The
  1075. purpose is to make it possible to determine which of two copies of a
  1076. zone is more recent by comparing serial numbers.  Serial number advances
  1077. and comparisons use sequence space arithmetic, so there is a theoretic
  1078. limit on how fast a zone can be updated, basically that old copies must
  1079. die out before the serial number covers half of its 32 bit range.  In
  1080. practice, the only concern is that the compare operation deals properly
  1081. with comparisons around the boundary between the most positive and most
  1082. negative 32 bit numbers.
  1083. The periodic polling of the secondary servers is controlled by
  1084. parameters in the SOA RR for the zone, which set the minimum acceptable
  1085. polling intervals.  The parameters are called REFRESH, RETRY, and
  1086. EXPIRE.  Whenever a new zone is loaded in a secondary, the secondary
  1087. waits REFRESH seconds before checking with the primary for a new serial.
  1088. If this check cannot be completed, new checks are started every RETRY
  1089. seconds.  The check is a simple query to the primary for the SOA RR of
  1090. the zone.  If the serial field in the secondary's zone copy is equal to
  1091. the serial returned by the primary, then no changes have occurred, and
  1092. the REFRESH interval wait is restarted.  If the secondary finds it
  1093. impossible to perform a serial check for the EXPIRE interval, it must
  1094. assume that its copy of the zone is obsolete an discard it.
  1095. When the poll shows that the zone has changed, then the secondary server
  1096. must request a zone transfer via an AXFR request for the zone.  The AXFR
  1097. may cause an error, such as refused, but normally is answered by a
  1098. sequence of response messages.  The first and last messages must contain
  1099. Mockapetris                                                    [Page 28]
  1100. RFC 1034             Domain Concepts and Facilities        November 1987
  1101. the data for the top authoritative node of the zone.  Intermediate
  1102. messages carry all of the other RRs from the zone, including both
  1103. authoritative and non-authoritative RRs.  The stream of messages allows
  1104. the secondary to construct a copy of the zone.  Because accuracy is
  1105. essential, TCP or some other reliable protocol must be used for AXFR
  1106. requests.
  1107. Each secondary server is required to perform the following operations
  1108. against the master, but may also optionally perform these operations
  1109. against other secondary servers.  This strategy can improve the transfer
  1110. process when the primary is unavailable due to host downtime or network
  1111. problems, or when a secondary server has better network access to an
  1112. "intermediate" secondary than to the primary.
  1113. 5. RESOLVERS
  1114. 5.1. Introduction
  1115. Resolvers are programs that interface user programs to domain name
  1116. servers.  In the simplest case, a resolver receives a request from a
  1117. user program (e.g., mail programs, TELNET, FTP) in the form of a
  1118. subroutine call, system call etc., and returns the desired information
  1119. in a form compatible with the local host's data formats.
  1120. The resolver is located on the same machine as the program that requests
  1121. the resolver's services, but it may need to consult name servers on
  1122. other hosts.  Because a resolver may need to consult several name
  1123. servers, or may have the requested information in a local cache, the
  1124. amount of time that a resolver will take to complete can vary quite a
  1125. bit, from milliseconds to several seconds.
  1126. A very important goal of the resolver is to eliminate network delay and
  1127. name server load from most requests by answering them from its cache of
  1128. prior results.  It follows that caches which are shared by multiple
  1129. processes, users, machines, etc., are more efficient than non-shared
  1130. caches.
  1131. 5.2. Client-resolver interface
  1132. 5.2.1. Typical functions
  1133. The client interface to the resolver is influenced by the local host's
  1134. conventions, but the typical resolver-client interface has three
  1135. functions:
  1136.    1. Host name to host address translation.
  1137.       This function is often defined to mimic a previous HOSTS.TXT
  1138. Mockapetris                                                    [Page 29]
  1139. RFC 1034             Domain Concepts and Facilities        November 1987
  1140.       based function.  Given a character string, the caller wants
  1141.       one or more 32 bit IP addresses.  Under the DNS, it
  1142.       translates into a request for type A RRs.  Since the DNS does
  1143.       not preserve the order of RRs, this function may choose to
  1144.       sort the returned addresses or select the "best" address if
  1145.       the service returns only one choice to the client.  Note that
  1146.       a multiple address return is recommended, but a single
  1147.       address may be the only way to emulate prior HOSTS.TXT
  1148.       services.
  1149.    2. Host address to host name translation
  1150.       This function will often follow the form of previous
  1151.       functions.  Given a 32 bit IP address, the caller wants a
  1152.       character string.  The octets of the IP address are reversed,
  1153.       used as name components, and suffixed with "IN-ADDR.ARPA".  A
  1154.       type PTR query is used to get the RR with the primary name of
  1155.       the host.  For example, a request for the host name
  1156.       corresponding to IP address 1.2.3.4 looks for PTR RRs for
  1157.       domain name "4.3.2.1.IN-ADDR.ARPA".
  1158.    3. General lookup function
  1159.       This function retrieves arbitrary information from the DNS,
  1160.       and has no counterpart in previous systems.  The caller
  1161.       supplies a QNAME, QTYPE, and QCLASS, and wants all of the
  1162.       matching RRs.  This function will often use the DNS format
  1163.       for all RR data instead of the local host's, and returns all
  1164.       RR content (e.g., TTL) instead of a processed form with local
  1165.       quoting conventions.
  1166. When the resolver performs the indicated function, it usually has one of
  1167. the following results to pass back to the client:
  1168.    - One or more RRs giving the requested data.
  1169.      In this case the resolver returns the answer in the
  1170.      appropriate format.
  1171.    - A name error (NE).
  1172.      This happens when the referenced name does not exist.  For
  1173.      example, a user may have mistyped a host name.
  1174.    - A data not found error.
  1175.      This happens when the referenced name exists, but data of the
  1176.      appropriate type does not.  For example, a host address
  1177. Mockapetris                                                    [Page 30]
  1178. RFC 1034             Domain Concepts and Facilities        November 1987
  1179.      function applied to a mailbox name would return this error
  1180.      since the name exists, but no address RR is present.
  1181. It is important to note that the functions for translating between host
  1182. names and addresses may combine the "name error" and "data not found"
  1183. error conditions into a single type of error return, but the general
  1184. function should not.  One reason for this is that applications may ask
  1185. first for one type of information about a name followed by a second
  1186. request to the same name for some other type of information; if the two
  1187. errors are combined, then useless queries may slow the application.
  1188. 5.2.2. Aliases
  1189. While attempting to resolve a particular request, the resolver may find
  1190. that the name in question is an alias.  For example, the resolver might
  1191. find that the name given for host name to address translation is an
  1192. alias when it finds the CNAME RR.  If possible, the alias condition
  1193. should be signalled back from the resolver to the client.
  1194. In most cases a resolver simply restarts the query at the new name when
  1195. it encounters a CNAME.  However, when performing the general function,
  1196. the resolver should not pursue aliases when the CNAME RR matches the
  1197. query type.  This allows queries which ask whether an alias is present.
  1198. For example, if the query type is CNAME, the user is interested in the
  1199. CNAME RR itself, and not the RRs at the name it points to.
  1200. Several special conditions can occur with aliases.  Multiple levels of
  1201. aliases should be avoided due to their lack of efficiency, but should
  1202. not be signalled as an error.  Alias loops and aliases which point to
  1203. non-existent names should be caught and an error condition passed back
  1204. to the client.
  1205. 5.2.3. Temporary failures
  1206. In a less than perfect world, all resolvers will occasionally be unable
  1207. to resolve a particular request.  This condition can be caused by a
  1208. resolver which becomes separated from the rest of the network due to a
  1209. link failure or gateway problem, or less often by coincident failure or
  1210. unavailability of all servers for a particular domain.
  1211. It is essential that this sort of condition should not be signalled as a
  1212. name or data not present error to applications.  This sort of behavior
  1213. is annoying to humans, and can wreak havoc when mail systems use the
  1214. DNS.
  1215. While in some cases it is possible to deal with such a temporary problem
  1216. by blocking the request indefinitely, this is usually not a good choice,
  1217. particularly when the client is a server process that could move on to
  1218. Mockapetris                                                    [Page 31]
  1219. RFC 1034             Domain Concepts and Facilities        November 1987
  1220. other tasks.  The recommended solution is to always have temporary
  1221. failure as one of the possible results of a resolver function, even
  1222. though this may make emulation of existing HOSTS.TXT functions more
  1223. difficult.
  1224. 5.3. Resolver internals
  1225. Every resolver implementation uses slightly different algorithms, and
  1226. typically spends much more logic dealing with errors of various sorts
  1227. than typical occurances.  This section outlines a recommended basic
  1228. strategy for resolver operation, but leaves details to [RFC-1035].
  1229. 5.3.1. Stub resolvers
  1230. One option for implementing a resolver is to move the resolution
  1231. function out of the local machine and into a name server which supports
  1232. recursive queries.  This can provide an easy method of providing domain
  1233. service in a PC which lacks the resources to perform the resolver
  1234. function, or can centralize the cache for a whole local network or
  1235. organization.
  1236. All that the remaining stub needs is a list of name server addresses
  1237. that will perform the recursive requests.  This type of resolver
  1238. presumably needs the information in a configuration file, since it
  1239. probably lacks the sophistication to locate it in the domain database.
  1240. The user also needs to verify that the listed servers will perform the
  1241. recursive service; a name server is free to refuse to perform recursive
  1242. services for any or all clients.  The user should consult the local
  1243. system administrator to find name servers willing to perform the
  1244. service.
  1245. This type of service suffers from some drawbacks.  Since the recursive
  1246. requests may take an arbitrary amount of time to perform, the stub may
  1247. have difficulty optimizing retransmission intervals to deal with both
  1248. lost UDP packets and dead servers; the name server can be easily
  1249. overloaded by too zealous a stub if it interprets retransmissions as new
  1250. requests.  Use of TCP may be an answer, but TCP may well place burdens
  1251. on the host's capabilities which are similar to those of a real
  1252. resolver.
  1253. 5.3.2. Resources
  1254. In addition to its own resources, the resolver may also have shared
  1255. access to zones maintained by a local name server.  This gives the
  1256. resolver the advantage of more rapid access, but the resolver must be
  1257. careful to never let cached information override zone data.  In this
  1258. discussion the term "local information" is meant to mean the union of
  1259. the cache and such shared zones, with the understanding that
  1260. Mockapetris                                                    [Page 32]
  1261. RFC 1034             Domain Concepts and Facilities        November 1987
  1262. authoritative data is always used in preference to cached data when both
  1263. are present.
  1264. The following resolver algorithm assumes that all functions have been
  1265. converted to a general lookup function, and uses the following data
  1266. structures to represent the state of a request in progress in the
  1267. resolver:
  1268. SNAME           the domain name we are searching for.
  1269. STYPE           the QTYPE of the search request.
  1270. SCLASS          the QCLASS of the search request.
  1271. SLIST           a structure which describes the name servers and the
  1272.                 zone which the resolver is currently trying to query.
  1273.                 This structure keeps track of the resolver's current
  1274.                 best guess about which name servers hold the desired
  1275.                 information; it is updated when arriving information
  1276.                 changes the guess.  This structure includes the
  1277.                 equivalent of a zone name, the known name servers for
  1278.                 the zone, the known addresses for the name servers, and
  1279.                 history information which can be used to suggest which
  1280.                 server is likely to be the best one to try next.  The
  1281.                 zone name equivalent is a match count of the number of
  1282.                 labels from the root down which SNAME has in common with
  1283.                 the zone being queried; this is used as a measure of how
  1284.                 "close" the resolver is to SNAME.
  1285. SBELT           a "safety belt" structure of the same form as SLIST,
  1286.                 which is initialized from a configuration file, and
  1287.                 lists servers which should be used when the resolver
  1288.                 doesn't have any local information to guide name server
  1289.                 selection.  The match count will be -1 to indicate that
  1290.                 no labels are known to match.
  1291. CACHE           A structure which stores the results from previous
  1292.                 responses.  Since resolvers are responsible for
  1293.                 discarding old RRs whose TTL has expired, most
  1294.                 implementations convert the interval specified in
  1295.                 arriving RRs to some sort of absolute time when the RR
  1296.                 is stored in the cache.  Instead of counting the TTLs
  1297.                 down individually, the resolver just ignores or discards
  1298.                 old RRs when it runs across them in the course of a
  1299.                 search, or discards them during periodic sweeps to
  1300.                 reclaim the memory consumed by old RRs.
  1301. Mockapetris                                                    [Page 33]
  1302. RFC 1034             Domain Concepts and Facilities        November 1987
  1303. 5.3.3. Algorithm
  1304. The top level algorithm has four steps:
  1305.    1. See if the answer is in local information, and if so return
  1306.       it to the client.
  1307.    2. Find the best servers to ask.
  1308.    3. Send them queries until one returns a response.
  1309.    4. Analyze the response, either:
  1310.          a. if the response answers the question or contains a name
  1311.             error, cache the data as well as returning it back to
  1312.             the client.
  1313.          b. if the response contains a better delegation to other
  1314.             servers, cache the delegation information, and go to
  1315.             step 2.
  1316.          c. if the response shows a CNAME and that is not the
  1317.             answer itself, cache the CNAME, change the SNAME to the
  1318.             canonical name in the CNAME RR and go to step 1.
  1319.          d. if the response shows a servers failure or other
  1320.             bizarre contents, delete the server from the SLIST and
  1321.             go back to step 3.
  1322. Step 1 searches the cache for the desired data. If the data is in the
  1323. cache, it is assumed to be good enough for normal use.  Some resolvers
  1324. have an option at the user interface which will force the resolver to
  1325. ignore the cached data and consult with an authoritative server.  This
  1326. is not recommended as the default.  If the resolver has direct access to
  1327. a name server's zones, it should check to see if the desired data is
  1328. present in authoritative form, and if so, use the authoritative data in
  1329. preference to cached data.
  1330. Step 2 looks for a name server to ask for the required data.  The
  1331. general strategy is to look for locally-available name server RRs,
  1332. starting at SNAME, then the parent domain name of SNAME, the
  1333. grandparent, and so on toward the root.  Thus if SNAME were
  1334. Mockapetris.ISI.EDU, this step would look for NS RRs for
  1335. Mockapetris.ISI.EDU, then ISI.EDU, then EDU, and then . (the root).
  1336. These NS RRs list the names of hosts for a zone at or above SNAME.  Copy
  1337. the names into SLIST.  Set up their addresses using local data.  It may
  1338. be the case that the addresses are not available.  The resolver has many
  1339. choices here; the best is to start parallel resolver processes looking
  1340. Mockapetris                                                    [Page 34]
  1341. RFC 1034             Domain Concepts and Facilities        November 1987
  1342. for the addresses while continuing onward with the addresses which are
  1343. available.  Obviously, the design choices and options are complicated
  1344. and a function of the local host's capabilities.  The recommended
  1345. priorities for the resolver designer are:
  1346.    1. Bound the amount of work (packets sent, parallel processes
  1347.       started) so that a request can't get into an infinite loop or
  1348.       start off a chain reaction of requests or queries with other
  1349.       implementations EVEN IF SOMEONE HAS INCORRECTLY CONFIGURED
  1350.       SOME DATA.
  1351.    2. Get back an answer if at all possible.
  1352.    3. Avoid unnecessary transmissions.
  1353.    4. Get the answer as quickly as possible.
  1354. If the search for NS RRs fails, then the resolver initializes SLIST from
  1355. the safety belt SBELT.  The basic idea is that when the resolver has no
  1356. idea what servers to ask, it should use information from a configuration
  1357. file that lists several servers which are expected to be helpful.
  1358. Although there are special situations, the usual choice is two of the
  1359. root servers and two of the servers for the host's domain.  The reason
  1360. for two of each is for redundancy.  The root servers will provide
  1361. eventual access to all of the domain space.  The two local servers will
  1362. allow the resolver to continue to resolve local names if the local
  1363. network becomes isolated from the internet due to gateway or link
  1364. failure.
  1365. In addition to the names and addresses of the servers, the SLIST data
  1366. structure can be sorted to use the best servers first, and to insure
  1367. that all addresses of all servers are used in a round-robin manner.  The
  1368. sorting can be a simple function of preferring addresses on the local
  1369. network over others, or may involve statistics from past events, such as
  1370. previous response times and batting averages.
  1371. Step 3 sends out queries until a response is received.  The strategy is
  1372. to cycle around all of the addresses for all of the servers with a
  1373. timeout between each transmission.  In practice it is important to use
  1374. all addresses of a multihomed host, and too aggressive a retransmission
  1375. policy actually slows response when used by multiple resolvers
  1376. contending for the same name server and even occasionally for a single
  1377. resolver.  SLIST typically contains data values to control the timeouts
  1378. and keep track of previous transmissions.
  1379. Step 4 involves analyzing responses.  The resolver should be highly
  1380. paranoid in its parsing of responses.  It should also check that the
  1381. response matches the query it sent using the ID field in the response.
  1382. Mockapetris                                                    [Page 35]
  1383. RFC 1034             Domain Concepts and Facilities        November 1987
  1384. The ideal answer is one from a server authoritative for the query which
  1385. either gives the required data or a name error.  The data is passed back
  1386. to the user and entered in the cache for future use if its TTL is
  1387. greater than zero.
  1388. If the response shows a delegation, the resolver should check to see
  1389. that the delegation is "closer" to the answer than the servers in SLIST
  1390. are.  This can be done by comparing the match count in SLIST with that
  1391. computed from SNAME and the NS RRs in the delegation.  If not, the reply
  1392. is bogus and should be ignored.  If the delegation is valid the NS
  1393. delegation RRs and any address RRs for the servers should be cached.
  1394. The name servers are entered in the SLIST, and the search is restarted.
  1395. If the response contains a CNAME, the search is restarted at the CNAME
  1396. unless the response has the data for the canonical name or if the CNAME
  1397. is the answer itself.
  1398. Details and implementation hints can be found in [RFC-1035].
  1399. 6. A SCENARIO
  1400. In our sample domain space, suppose we wanted separate administrative
  1401. control for the root, MIL, EDU, MIT.EDU and ISI.EDU zones.  We might
  1402. allocate name servers as follows:
  1403.                                    |(C.ISI.EDU,SRI-NIC.ARPA
  1404.                                    | A.ISI.EDU)
  1405.              +---------------------+------------------+
  1406.              |                     |                  |
  1407.             MIL                   EDU                ARPA
  1408.              |(SRI-NIC.ARPA,       |(SRI-NIC.ARPA,    |
  1409.              | A.ISI.EDU           | C.ISI.EDU)       |
  1410.        +-----+-----+               |     +------+-----+-----+
  1411.        |     |     |               |     |      |           |
  1412.       BRL  NOSC  DARPA             |  IN-ADDR  SRI-NIC     ACC
  1413.                                    |
  1414.        +--------+------------------+---------------+--------+
  1415.        |        |                  |               |        |
  1416.       UCI      MIT                 |              UDEL     YALE
  1417.                 |(XX.LCS.MIT.EDU, ISI
  1418.                 |ACHILLES.MIT.EDU) |(VAXA.ISI.EDU,VENERA.ISI.EDU,
  1419.             +---+---+              | A.ISI.EDU)
  1420.             |       |              |
  1421.            LCS   ACHILLES +--+-----+-----+--------+
  1422.             |             |  |     |     |        |
  1423.             XX            A  C   VAXA  VENERA Mockapetris
  1424. Mockapetris                                                    [Page 36]
  1425. RFC 1034             Domain Concepts and Facilities        November 1987
  1426. In this example, the authoritative name server is shown in parentheses
  1427. at the point in the domain tree at which is assumes control.
  1428. Thus the root name servers are on C.ISI.EDU, SRI-NIC.ARPA, and
  1429. A.ISI.EDU.  The MIL domain is served by SRI-NIC.ARPA and A.ISI.EDU.  The
  1430. EDU domain is served by SRI-NIC.ARPA. and C.ISI.EDU.  Note that servers
  1431. may have zones which are contiguous or disjoint.  In this scenario,
  1432. C.ISI.EDU has contiguous zones at the root and EDU domains.  A.ISI.EDU
  1433. has contiguous zones at the root and MIL domains, but also has a non-
  1434. contiguous zone at ISI.EDU.
  1435. 6.1. C.ISI.EDU name server
  1436. C.ISI.EDU is a name server for the root, MIL, and EDU domains of the IN
  1437. class, and would have zones for these domains.  The zone data for the
  1438. root domain might be:
  1439.     .       IN      SOA     SRI-NIC.ARPA. HOSTMASTER.SRI-NIC.ARPA. (
  1440.                             870611          ;serial
  1441.                             1800            ;refresh every 30 min
  1442.                             300             ;retry every 5 min
  1443.                             604800          ;expire after a week
  1444.                             86400)          ;minimum of a day
  1445.                     NS      A.ISI.EDU.
  1446.                     NS      C.ISI.EDU.
  1447.                     NS      SRI-NIC.ARPA.
  1448.     MIL.    86400   NS      SRI-NIC.ARPA.
  1449.             86400   NS      A.ISI.EDU.
  1450.     EDU.    86400   NS      SRI-NIC.ARPA.
  1451.             86400   NS      C.ISI.EDU.
  1452.     SRI-NIC.ARPA.   A       26.0.0.73
  1453.                     A       10.0.0.51
  1454.                     MX      0 SRI-NIC.ARPA.
  1455.                     HINFO   DEC-2060 TOPS20
  1456.     ACC.ARPA.       A       26.6.0.65
  1457.                     HINFO   PDP-11/70 UNIX
  1458.                     MX      10 ACC.ARPA.
  1459.     USC-ISIC.ARPA.  CNAME   C.ISI.EDU.
  1460.     73.0.0.26.IN-ADDR.ARPA.  PTR    SRI-NIC.ARPA.
  1461.     65.0.6.26.IN-ADDR.ARPA.  PTR    ACC.ARPA.
  1462.     51.0.0.10.IN-ADDR.ARPA.  PTR    SRI-NIC.ARPA.
  1463.     52.0.0.10.IN-ADDR.ARPA.  PTR    C.ISI.EDU.
  1464. Mockapetris                                                    [Page 37]
  1465. RFC 1034             Domain Concepts and Facilities        November 1987
  1466.     103.0.3.26.IN-ADDR.ARPA. PTR    A.ISI.EDU.
  1467.     A.ISI.EDU. 86400 A      26.3.0.103
  1468.     C.ISI.EDU. 86400 A      10.0.0.52
  1469. This data is represented as it would be in a master file.  Most RRs are
  1470. single line entries; the sole exception here is the SOA RR, which uses
  1471. "(" to start a multi-line RR and ")" to show the end of a multi-line RR.
  1472. Since the class of all RRs in a zone must be the same, only the first RR
  1473. in a zone need specify the class.  When a name server loads a zone, it
  1474. forces the TTL of all authoritative RRs to be at least the MINIMUM field
  1475. of the SOA, here 86400 seconds, or one day.  The NS RRs marking
  1476. delegation of the MIL and EDU domains, together with the glue RRs for
  1477. the servers host addresses, are not part of the authoritative data in
  1478. the zone, and hence have explicit TTLs.
  1479. Four RRs are attached to the root node: the SOA which describes the root
  1480. zone and the 3 NS RRs which list the name servers for the root.  The
  1481. data in the SOA RR describes the management of the zone.  The zone data
  1482. is maintained on host SRI-NIC.ARPA, and the responsible party for the
  1483. zone is HOSTMASTER@SRI-NIC.ARPA.  A key item in the SOA is the 86400
  1484. second minimum TTL, which means that all authoritative data in the zone
  1485. has at least that TTL, although higher values may be explicitly
  1486. specified.
  1487. The NS RRs for the MIL and EDU domains mark the boundary between the
  1488. root zone and the MIL and EDU zones.  Note that in this example, the
  1489. lower zones happen to be supported by name servers which also support
  1490. the root zone.
  1491. The master file for the EDU zone might be stated relative to the origin
  1492. EDU.  The zone data for the EDU domain might be:
  1493.     EDU.  IN SOA SRI-NIC.ARPA. HOSTMASTER.SRI-NIC.ARPA. (
  1494.                             870729 ;serial
  1495.                             1800 ;refresh every 30 minutes
  1496.                             300 ;retry every 5 minutes
  1497.                             604800 ;expire after a week
  1498.                             86400 ;minimum of a day
  1499.                             )
  1500.                     NS SRI-NIC.ARPA.
  1501.                     NS C.ISI.EDU.
  1502.     UCI 172800 NS ICS.UCI
  1503.                     172800 NS ROME.UCI
  1504.     ICS.UCI 172800 A 192.5.19.1
  1505.     ROME.UCI 172800 A 192.5.19.31
  1506. Mockapetris                                                    [Page 38]
  1507. RFC 1034             Domain Concepts and Facilities        November 1987
  1508.     ISI 172800 NS VAXA.ISI
  1509.                     172800 NS A.ISI
  1510.                     172800 NS VENERA.ISI.EDU.
  1511.     VAXA.ISI 172800 A 10.2.0.27
  1512.                     172800 A 128.9.0.33
  1513.     VENERA.ISI.EDU. 172800 A 10.1.0.52
  1514.                     172800 A 128.9.0.32
  1515.     A.ISI 172800 A 26.3.0.103
  1516.     UDEL.EDU.  172800 NS LOUIE.UDEL.EDU.
  1517.                     172800 NS UMN-REI-UC.ARPA.
  1518.     LOUIE.UDEL.EDU. 172800 A 10.0.0.96
  1519.                     172800 A 192.5.39.3
  1520.     YALE.EDU.  172800 NS YALE.ARPA.
  1521.     YALE.EDU.  172800 NS YALE-BULLDOG.ARPA.
  1522.     MIT.EDU.  43200 NS XX.LCS.MIT.EDU.
  1523.                       43200 NS ACHILLES.MIT.EDU.
  1524.     XX.LCS.MIT.EDU.  43200 A 10.0.0.44
  1525.     ACHILLES.MIT.EDU. 43200 A 18.72.0.8
  1526. Note the use of relative names here.  The owner name for the ISI.EDU. is
  1527. stated using a relative name, as are two of the name server RR contents.
  1528. Relative and absolute domain names may be freely intermixed in a master
  1529. 6.2. Example standard queries
  1530. The following queries and responses illustrate name server behavior.
  1531. Unless otherwise noted, the queries do not have recursion desired (RD)
  1532. in the header.  Note that the answers to non-recursive queries do depend
  1533. on the server being asked, but do not depend on the identity of the
  1534. requester.
  1535. Mockapetris                                                    [Page 39]
  1536. RFC 1034             Domain Concepts and Facilities        November 1987
  1537. 6.2.1. QNAME=SRI-NIC.ARPA, QTYPE=A
  1538. The query would look like:
  1539.                +---------------------------------------------------+
  1540.     Header     | OPCODE=SQUERY                                     |
  1541.                +---------------------------------------------------+
  1542.     Question   | QNAME=SRI-NIC.ARPA., QCLASS=IN, QTYPE=A           |
  1543.                +---------------------------------------------------+
  1544.     Answer     | <empty>                                           |
  1545.                +---------------------------------------------------+
  1546.     Authority  | <empty>                                           |
  1547.                +---------------------------------------------------+
  1548.     Additional | <empty>                                           |
  1549.                +---------------------------------------------------+
  1550. The response from C.ISI.EDU would be:
  1551.                +---------------------------------------------------+
  1552.     Header     | OPCODE=SQUERY, RESPONSE, AA                       |
  1553.                +---------------------------------------------------+
  1554.     Question   | QNAME=SRI-NIC.ARPA., QCLASS=IN, QTYPE=A           |
  1555.                +---------------------------------------------------+
  1556.     Answer     | SRI-NIC.ARPA. 86400 IN A 26.0.0.73                |
  1557.                |               86400 IN A 10.0.0.51                |
  1558.                +---------------------------------------------------+
  1559.     Authority  | <empty>                                           |
  1560.                +---------------------------------------------------+
  1561.     Additional | <empty>                                           |
  1562.                +---------------------------------------------------+
  1563. The header of the response looks like the header of the query, except
  1564. that the RESPONSE bit is set, indicating that this message is a
  1565. response, not a query, and the Authoritative Answer (AA) bit is set
  1566. indicating that the address RRs in the answer section are from
  1567. authoritative data.  The question section of the response matches the
  1568. question section of the query.
  1569. Mockapetris                                                    [Page 40]
  1570. RFC 1034             Domain Concepts and Facilities        November 1987
  1571. If the same query was sent to some other server which was not
  1572. authoritative for SRI-NIC.ARPA, the response might be:
  1573.                +---------------------------------------------------+
  1574.     Header     | OPCODE=SQUERY,RESPONSE                            |
  1575.                +---------------------------------------------------+
  1576.     Question   | QNAME=SRI-NIC.ARPA., QCLASS=IN, QTYPE=A           |
  1577.                +---------------------------------------------------+
  1578.     Answer     | SRI-NIC.ARPA. 1777 IN A 10.0.0.51                 |
  1579.                |               1777 IN A 26.0.0.73                 |
  1580.                +---------------------------------------------------+
  1581.     Authority  | <empty>                                           |
  1582.                +---------------------------------------------------+
  1583.     Additional | <empty>                                           |
  1584.                +---------------------------------------------------+
  1585. This response is different from the previous one in two ways: the header
  1586. does not have AA set, and the TTLs are different.  The inference is that
  1587. the data did not come from a zone, but from a cache.  The difference
  1588. between the authoritative TTL and the TTL here is due to aging of the
  1589. data in a cache.  The difference in ordering of the RRs in the answer
  1590. section is not significant.
  1591. 6.2.2. QNAME=SRI-NIC.ARPA, QTYPE=*
  1592. A query similar to the previous one, but using a QTYPE of *, would
  1593. receive the following response from C.ISI.EDU:
  1594.                +---------------------------------------------------+
  1595.     Header     | OPCODE=SQUERY, RESPONSE, AA                       |
  1596.                +---------------------------------------------------+
  1597.     Question   | QNAME=SRI-NIC.ARPA., QCLASS=IN, QTYPE=*           |
  1598.                +---------------------------------------------------+
  1599.     Answer     | SRI-NIC.ARPA. 86400 IN  A     26.0.0.73           |
  1600.                |                         A     10.0.0.51           |
  1601.                |                         MX    0 SRI-NIC.ARPA.     |
  1602.                |                         HINFO DEC-2060 TOPS20     |
  1603.                +---------------------------------------------------+
  1604.     Authority  | <empty>                                           |
  1605.                +---------------------------------------------------+
  1606.     Additional | <empty>                                           |
  1607.                +---------------------------------------------------+
  1608. Mockapetris                                                    [Page 41]
  1609. RFC 1034             Domain Concepts and Facilities        November 1987
  1610. If a similar query was directed to two name servers which are not
  1611. authoritative for SRI-NIC.ARPA, the responses might be:
  1612.                +---------------------------------------------------+
  1613.     Header     | OPCODE=SQUERY, RESPONSE                           |
  1614.                +---------------------------------------------------+
  1615.     Question   | QNAME=SRI-NIC.ARPA., QCLASS=IN, QTYPE=*           |
  1616.                +---------------------------------------------------+
  1617.     Answer     | SRI-NIC.ARPA. 12345 IN     A       26.0.0.73      |
  1618.                |                            A       10.0.0.51      |
  1619.                +---------------------------------------------------+
  1620.     Authority  | <empty>                                           |
  1621.                +---------------------------------------------------+
  1622.     Additional | <empty>                                           |
  1623.                +---------------------------------------------------+
  1624. and
  1625.                +---------------------------------------------------+
  1626.     Header     | OPCODE=SQUERY, RESPONSE                           |
  1627.                +---------------------------------------------------+
  1628.     Question   | QNAME=SRI-NIC.ARPA., QCLASS=IN, QTYPE=*           |
  1629.                +---------------------------------------------------+
  1630.     Answer     | SRI-NIC.ARPA. 1290 IN HINFO  DEC-2060 TOPS20      |
  1631.                +---------------------------------------------------+
  1632.     Authority  | <empty>                                           |
  1633.                +---------------------------------------------------+
  1634.     Additional | <empty>                                           |
  1635.                +---------------------------------------------------+
  1636. Neither of these answers have AA set, so neither response comes from
  1637. authoritative data.  The different contents and different TTLs suggest
  1638. that the two servers cached data at different times, and that the first
  1639. server cached the response to a QTYPE=A query and the second cached the
  1640. response to a HINFO query.
  1641. Mockapetris                                                    [Page 42]
  1642. RFC 1034             Domain Concepts and Facilities        November 1987
  1643. 6.2.3. QNAME=SRI-NIC.ARPA, QTYPE=MX
  1644. This type of query might be result from a mailer trying to look up
  1645. routing information for the mail destination HOSTMASTER@SRI-NIC.ARPA.
  1646. The response from C.ISI.EDU would be:
  1647.                +---------------------------------------------------+
  1648.     Header     | OPCODE=SQUERY, RESPONSE, AA                       |
  1649.                +---------------------------------------------------+
  1650.     Question   | QNAME=SRI-NIC.ARPA., QCLASS=IN, QTYPE=MX          |
  1651.                +---------------------------------------------------+
  1652.     Answer     | SRI-NIC.ARPA. 86400 IN     MX      0 SRI-NIC.ARPA.|
  1653.                +---------------------------------------------------+
  1654.     Authority  | <empty>                                           |
  1655.                +---------------------------------------------------+
  1656.     Additional | SRI-NIC.ARPA. 86400 IN     A       26.0.0.73      |
  1657.                |                            A       10.0.0.51      |
  1658.                +---------------------------------------------------+
  1659. This response contains the MX RR in the answer section of the response.
  1660. The additional section contains the address RRs because the name server
  1661. at C.ISI.EDU guesses that the requester will need the addresses in order
  1662. to properly use the information carried by the MX.
  1663. 6.2.4. QNAME=SRI-NIC.ARPA, QTYPE=NS
  1664. C.ISI.EDU would reply to this query with:
  1665.                +---------------------------------------------------+
  1666.     Header     | OPCODE=SQUERY, RESPONSE, AA                       |
  1667.                +---------------------------------------------------+
  1668.     Question   | QNAME=SRI-NIC.ARPA., QCLASS=IN, QTYPE=NS          |
  1669.                +---------------------------------------------------+
  1670.     Answer     | <empty>                                           |
  1671.                +---------------------------------------------------+
  1672.     Authority  | <empty>                                           |
  1673.                +---------------------------------------------------+
  1674.     Additional | <empty>                                           |
  1675.                +---------------------------------------------------+
  1676. The only difference between the response and the query is the AA and
  1677. RESPONSE bits in the header.  The interpretation of this response is
  1678. that the server is authoritative for the name, and the name exists, but
  1679. no RRs of type NS are present there.
  1680. 6.2.5. QNAME=SIR-NIC.ARPA, QTYPE=A
  1681. If a user mistyped a host name, we might see this type of query.
  1682. Mockapetris                                                    [Page 43]
  1683. RFC 1034             Domain Concepts and Facilities        November 1987
  1684. C.ISI.EDU would answer it with:
  1685.                +---------------------------------------------------+
  1686.     Header     | OPCODE=SQUERY, RESPONSE, AA, RCODE=NE             |
  1687.                +---------------------------------------------------+
  1688.     Question   | QNAME=SIR-NIC.ARPA., QCLASS=IN, QTYPE=A           |
  1689.                +---------------------------------------------------+
  1690.     Answer     | <empty>                                           |
  1691.                +---------------------------------------------------+
  1692.     Authority  | . SOA SRI-NIC.ARPA. HOSTMASTER.SRI-NIC.ARPA.      |
  1693.                |       870611 1800 300 604800 86400                |
  1694.                +---------------------------------------------------+
  1695.     Additional | <empty>                                           |
  1696.                +---------------------------------------------------+
  1697. This response states that the name does not exist.  This condition is
  1698. signalled in the response code (RCODE) section of the header.
  1699. The SOA RR in the authority section is the optional negative caching
  1700. information which allows the resolver using this response to assume that
  1701. the name will not exist for the SOA MINIMUM (86400) seconds.
  1702. 6.2.6. QNAME=BRL.MIL, QTYPE=A
  1703. If this query is sent to C.ISI.EDU, the reply would be:
  1704.                +---------------------------------------------------+
  1705.     Header     | OPCODE=SQUERY, RESPONSE                           |
  1706.                +---------------------------------------------------+
  1707.     Question   | QNAME=BRL.MIL, QCLASS=IN, QTYPE=A                 |
  1708.                +---------------------------------------------------+
  1709.     Answer     | <empty>                                           |
  1710.                +---------------------------------------------------+
  1711.     Authority  | MIL.             86400 IN NS       SRI-NIC.ARPA.  |
  1712.                |                  86400    NS       A.ISI.EDU.     |
  1713.                +---------------------------------------------------+
  1714.     Additional | A.ISI.EDU.                A        26.3.0.103     |
  1715.                | SRI-NIC.ARPA.             A        26.0.0.73      |
  1716.                |                           A        10.0.0.51      |
  1717.                +---------------------------------------------------+
  1718. This response has an empty answer section, but is not authoritative, so
  1719. it is a referral.  The name server on C.ISI.EDU, realizing that it is
  1720. not authoritative for the MIL domain, has referred the requester to
  1721. servers on A.ISI.EDU and SRI-NIC.ARPA, which it knows are authoritative
  1722. for the MIL domain.
  1723. Mockapetris                                                    [Page 44]
  1724. RFC 1034             Domain Concepts and Facilities        November 1987
  1725. 6.2.7. QNAME=USC-ISIC.ARPA, QTYPE=A
  1726. The response to this query from A.ISI.EDU would be:
  1727.                +---------------------------------------------------+
  1728.     Header     | OPCODE=SQUERY, RESPONSE, AA                       |
  1729.                +---------------------------------------------------+
  1730.     Question   | QNAME=USC-ISIC.ARPA., QCLASS=IN, QTYPE=A          |
  1731.                +---------------------------------------------------+
  1732.     Answer     | USC-ISIC.ARPA. 86400 IN CNAME      C.ISI.EDU.     |
  1733.                | C.ISI.EDU.     86400 IN A          10.0.0.52      |
  1734.                +---------------------------------------------------+
  1735.     Authority  | <empty>                                           |
  1736.                +---------------------------------------------------+
  1737.     Additional | <empty>                                           |
  1738.                +---------------------------------------------------+
  1739. Note that the AA bit in the header guarantees that the data matching
  1740. QNAME is authoritative, but does not say anything about whether the data
  1741. for C.ISI.EDU is authoritative.  This complete reply is possible because
  1742. A.ISI.EDU happens to be authoritative for both the ARPA domain where
  1743. USC-ISIC.ARPA is found and the ISI.EDU domain where C.ISI.EDU data is
  1744. found.
  1745. If the same query was sent to C.ISI.EDU, its response might be the same
  1746. as shown above if it had its own address in its cache, but might also
  1747. be:
  1748. Mockapetris                                                    [Page 45]
  1749. RFC 1034             Domain Concepts and Facilities        November 1987
  1750.                +---------------------------------------------------+
  1751.     Header     | OPCODE=SQUERY, RESPONSE, AA                       |
  1752.                +---------------------------------------------------+
  1753.     Question   | QNAME=USC-ISIC.ARPA., QCLASS=IN, QTYPE=A          |
  1754.                +---------------------------------------------------+
  1755.     Answer     | USC-ISIC.ARPA.   86400 IN CNAME   C.ISI.EDU.      |
  1756.                +---------------------------------------------------+
  1757.     Authority  | ISI.EDU.        172800 IN NS      VAXA.ISI.EDU.   |
  1758.                |                           NS      A.ISI.EDU.      |
  1759.                |                           NS      VENERA.ISI.EDU. |
  1760.                +---------------------------------------------------+
  1761.     Additional | VAXA.ISI.EDU.   172800    A       10.2.0.27       |
  1762.                |                 172800    A       128.9.0.33      |
  1763.                | VENERA.ISI.EDU. 172800    A       10.1.0.52       |
  1764.                |                 172800    A       128.9.0.32      |
  1765.                | A.ISI.EDU.      172800    A       26.3.0.103      |
  1766.                +---------------------------------------------------+
  1767. This reply contains an authoritative reply for the alias USC-ISIC.ARPA,
  1768. plus a referral to the name servers for ISI.EDU.  This sort of reply
  1769. isn't very likely given that the query is for the host name of the name
  1770. server being asked, but would be common for other aliases.
  1771. 6.2.8. QNAME=USC-ISIC.ARPA, QTYPE=CNAME
  1772. If this query is sent to either A.ISI.EDU or C.ISI.EDU, the reply would
  1773. be:
  1774.                +---------------------------------------------------+
  1775.     Header     | OPCODE=SQUERY, RESPONSE, AA                       |
  1776.                +---------------------------------------------------+
  1777.     Question   | QNAME=USC-ISIC.ARPA., QCLASS=IN, QTYPE=A          |
  1778.                +---------------------------------------------------+
  1779.     Answer     | USC-ISIC.ARPA. 86400 IN CNAME      C.ISI.EDU.     |
  1780.                +---------------------------------------------------+
  1781.     Authority  | <empty>                                           |
  1782.                +---------------------------------------------------+
  1783.     Additional | <empty>                                           |
  1784.                +---------------------------------------------------+
  1785. Because QTYPE=CNAME, the CNAME RR itself answers the query, and the name
  1786. server doesn't attempt to look up anything for C.ISI.EDU.  (Except
  1787. possibly for the additional section.)
  1788. 6.3. Example resolution
  1789. The following examples illustrate the operations a resolver must perform
  1790. for its client.  We assume that the resolver is starting without a
  1791. Mockapetris                                                    [Page 46]
  1792. RFC 1034             Domain Concepts and Facilities        November 1987
  1793. cache, as might be the case after system boot.  We further assume that
  1794. the system is not one of the hosts in the data and that the host is
  1795. located somewhere on net 26, and that its safety belt (SBELT) data
  1796. structure has the following information:
  1797.     Match count = -1
  1798.     SRI-NIC.ARPA.   26.0.0.73       10.0.0.51
  1799.     A.ISI.EDU.      26.3.0.103
  1800. This information specifies servers to try, their addresses, and a match
  1801. count of -1, which says that the servers aren't very close to the
  1802. target.  Note that the -1 isn't supposed to be an accurate closeness
  1803. measure, just a value so that later stages of the algorithm will work.
  1804. The following examples illustrate the use of a cache, so each example
  1805. assumes that previous requests have completed.
  1806. 6.3.1. Resolve MX for ISI.EDU.
  1807. Suppose the first request to the resolver comes from the local mailer,
  1808. which has mail for PVM@ISI.EDU.  The mailer might then ask for type MX
  1809. RRs for the domain name ISI.EDU.
  1810. The resolver would look in its cache for MX RRs at ISI.EDU, but the
  1811. empty cache wouldn't be helpful.  The resolver would recognize that it
  1812. needed to query foreign servers and try to determine the best servers to
  1813. query.  This search would look for NS RRs for the domains ISI.EDU, EDU,
  1814. and the root.  These searches of the cache would also fail.  As a last
  1815. resort, the resolver would use the information from the SBELT, copying
  1816. it into its SLIST structure.
  1817. At this point the resolver would need to pick one of the three available
  1818. addresses to try.  Given that the resolver is on net 26, it should
  1819. choose either 26.0.0.73 or 26.3.0.103 as its first choice.  It would
  1820. then send off a query of the form:
  1821. Mockapetris                                                    [Page 47]
  1822. RFC 1034             Domain Concepts and Facilities        November 1987
  1823.                +---------------------------------------------------+
  1824.     Header     | OPCODE=SQUERY                                     |
  1825.                +---------------------------------------------------+
  1826.     Question   | QNAME=ISI.EDU., QCLASS=IN, QTYPE=MX               |
  1827.                +---------------------------------------------------+
  1828.     Answer     | <empty>                                           |
  1829.                +---------------------------------------------------+
  1830.     Authority  | <empty>                                           |
  1831.                +---------------------------------------------------+
  1832.     Additional | <empty>                                           |
  1833.                +---------------------------------------------------+
  1834. The resolver would then wait for a response to its query or a timeout.
  1835. If the timeout occurs, it would try different servers, then different
  1836. addresses of the same servers, lastly retrying addresses already tried.
  1837. It might eventually receive a reply from SRI-NIC.ARPA:
  1838.                +---------------------------------------------------+
  1839.     Header     | OPCODE=SQUERY, RESPONSE                           |
  1840.                +---------------------------------------------------+
  1841.     Question   | QNAME=ISI.EDU., QCLASS=IN, QTYPE=MX               |
  1842.                +---------------------------------------------------+
  1843.     Answer     | <empty>                                           |
  1844.                +---------------------------------------------------+
  1845.     Authority  | ISI.EDU.        172800 IN NS       VAXA.ISI.EDU.  |
  1846.                |                           NS       A.ISI.EDU.     |
  1847.                |                           NS       VENERA.ISI.EDU.|
  1848.                +---------------------------------------------------+
  1849.     Additional | VAXA.ISI.EDU.   172800    A        10.2.0.27      |
  1850.                |                 172800    A        128.9.0.33     |
  1851.                | VENERA.ISI.EDU. 172800    A        10.1.0.52      |
  1852.                |                 172800    A        128.9.0.32     |
  1853.                | A.ISI.EDU.      172800    A        26.3.0.103     |
  1854.                +---------------------------------------------------+
  1855. The resolver would notice that the information in the response gave a
  1856. closer delegation to ISI.EDU than its existing SLIST (since it matches
  1857. three labels).  The resolver would then cache the information in this
  1858. response and use it to set up a new SLIST:
  1859.     Match count = 3
  1860.     A.ISI.EDU.      26.3.0.103
  1861.     VAXA.ISI.EDU.   10.2.0.27       128.9.0.33
  1862.     VENERA.ISI.EDU. 10.1.0.52       128.9.0.32
  1863. A.ISI.EDU appears on this list as well as the previous one, but that is
  1864. purely coincidental.  The resolver would again start transmitting and
  1865. waiting for responses.  Eventually it would get an answer:
  1866. Mockapetris                                                    [Page 48]
  1867. RFC 1034             Domain Concepts and Facilities        November 1987
  1868.                +---------------------------------------------------+
  1869.     Header     | OPCODE=SQUERY, RESPONSE, AA                       |
  1870.                +---------------------------------------------------+
  1871.     Question   | QNAME=ISI.EDU., QCLASS=IN, QTYPE=MX               |
  1872.                +---------------------------------------------------+
  1873.     Answer     | ISI.EDU.                MX 10 VENERA.ISI.EDU.     |
  1874.                |                         MX 20 VAXA.ISI.EDU.       |
  1875.                +---------------------------------------------------+
  1876.     Authority  | <empty>                                           |
  1877.                +---------------------------------------------------+
  1878.     Additional | VAXA.ISI.EDU.   172800  A  10.2.0.27              |
  1879.                |                 172800  A  128.9.0.33             |
  1880.                | VENERA.ISI.EDU. 172800  A  10.1.0.52              |
  1881.                |                 172800  A  128.9.0.32             |
  1882.                +---------------------------------------------------+
  1883. The resolver would add this information to its cache, and return the MX
  1884. RRs to its client.
  1885. 6.3.2. Get the host name for address 26.6.0.65
  1886. The resolver would translate this into a request for PTR RRs for
  1887. 65.0.6.26.IN-ADDR.ARPA.  This information is not in the cache, so the
  1888. resolver would look for foreign servers to ask.  No servers would match,
  1889. so it would use SBELT again.  (Note that the servers for the ISI.EDU
  1890. domain are in the cache, but ISI.EDU is not an ancestor of
  1891. 65.0.6.26.IN-ADDR.ARPA, so the SBELT is used.)
  1892. Since this request is within the authoritative data of both servers in
  1893. SBELT, eventually one would return:
  1894. Mockapetris                                                    [Page 49]
  1895. RFC 1034             Domain Concepts and Facilities        November 1987
  1896.                +---------------------------------------------------+
  1897.     Header     | OPCODE=SQUERY, RESPONSE, AA                       |
  1898.                +---------------------------------------------------+
  1899.     Question   | QNAME=65.0.6.26.IN-ADDR.ARPA.,QCLASS=IN,QTYPE=PTR |
  1900.                +---------------------------------------------------+
  1901.     Answer     | 65.0.6.26.IN-ADDR.ARPA.    PTR     ACC.ARPA.      |
  1902.                +---------------------------------------------------+
  1903.     Authority  | <empty>                                           |
  1904.                +---------------------------------------------------+
  1905.     Additional | <empty>                                           |
  1906.                +---------------------------------------------------+
  1907. 6.3.3. Get the host address of poneria.ISI.EDU
  1908. This request would translate into a type A request for poneria.ISI.EDU.
  1909. The resolver would not find any cached data for this name, but would
  1910. find the NS RRs in the cache for ISI.EDU when it looks for foreign
  1911. servers to ask.  Using this data, it would construct a SLIST of the
  1912. form:
  1913.     Match count = 3
  1914.     A.ISI.EDU.      26.3.0.103
  1915.     VAXA.ISI.EDU.   10.2.0.27       128.9.0.33
  1916.     VENERA.ISI.EDU. 10.1.0.52
  1917. A.ISI.EDU is listed first on the assumption that the resolver orders its
  1918. choices by preference, and A.ISI.EDU is on the same network.
  1919. One of these servers would answer the query.
  1920. 7. REFERENCES and BIBLIOGRAPHY
  1921. [Dyer 87]       Dyer, S., and F. Hsu, "Hesiod", Project Athena
  1922.                 Technical Plan - Name Service, April 1987, version 1.9.
  1923.                 Describes the fundamentals of the Hesiod name service.
  1924. [IEN-116]       J. Postel, "Internet Name Server", IEN-116,
  1925.                 USC/Information Sciences Institute, August 1979.
  1926.                 A name service obsoleted by the Domain Name System, but
  1927.                 still in use.
  1928. Mockapetris                                                    [Page 50]
  1929. RFC 1034             Domain Concepts and Facilities        November 1987
  1930. [Quarterman 86] Quarterman, J., and J. Hoskins, "Notable Computer
  1931.                 Networks",Communications of the ACM, October 1986,
  1932.                 volume 29, number 10.
  1933. [RFC-742]       K. Harrenstien, "NAME/FINGER", RFC-742, Network
  1934.                 Information Center, SRI International, December 1977.
  1935. [RFC-768]       J. Postel, "User Datagram Protocol", RFC-768,
  1936.                 USC/Information Sciences Institute, August 1980.
  1937. [RFC-793]       J. Postel, "Transmission Control Protocol", RFC-793,
  1938.                 USC/Information Sciences Institute, September 1981.
  1939. [RFC-799]       D. Mills, "Internet Name Domains", RFC-799, COMSAT,
  1940.                 September 1981.
  1941.                 Suggests introduction of a hierarchy in place of a flat
  1942.                 name space for the Internet.
  1943. [RFC-805]       J. Postel, "Computer Mail Meeting Notes", RFC-805,
  1944.                 USC/Information Sciences Institute, February 1982.
  1945. [RFC-810]       E. Feinler, K. Harrenstien, Z. Su, and V. White, "DOD
  1946.                 Internet Host Table Specification", RFC-810, Network
  1947.                 Information Center, SRI International, March 1982.
  1948.                 Obsolete.  See RFC-952.
  1949. [RFC-811]       K. Harrenstien, V. White, and E. Feinler, "Hostnames
  1950.                 Server", RFC-811, Network Information Center, SRI
  1951.                 International, March 1982.
  1952.                 Obsolete.  See RFC-953.
  1953. [RFC-812]       K. Harrenstien, and V. White, "NICNAME/WHOIS", RFC-812,
  1954.                 Network Information Center, SRI International, March
  1955.                 1982.
  1956. [RFC-819]       Z. Su, and J. Postel, "The Domain Naming Convention for
  1957.                 Internet User Applications", RFC-819, Network
  1958.                 Information Center, SRI International, August 1982.
  1959.                 Early thoughts on the design of the domain system.
  1960.                 Current implementation is completely different.
  1961. [RFC-821]       J. Postel, "Simple Mail Transfer Protocol", RFC-821,
  1962.                 USC/Information Sciences Institute, August 1980.
  1963. Mockapetris                                                    [Page 51]
  1964. RFC 1034             Domain Concepts and Facilities        November 1987
  1965. [RFC-830]       Z. Su, "A Distributed System for Internet Name Service",
  1966.                 RFC-830, Network Information Center, SRI International,
  1967.                 October 1982.
  1968.                 Early thoughts on the design of the domain system.
  1969.                 Current implementation is completely different.
  1970. [RFC-882]       P. Mockapetris, "Domain names - Concepts and
  1971.                 Facilities," RFC-882, USC/Information Sciences
  1972.                 Institute, November 1983.
  1973.                 Superceeded by this memo.
  1974. [RFC-883]       P. Mockapetris, "Domain names - Implementation and
  1975.                 Specification," RFC-883, USC/Information Sciences
  1976.                 Institute, November 1983.
  1977.                 Superceeded by this memo.
  1978. [RFC-920]       J. Postel and J. Reynolds, "Domain Requirements",
  1979.                 RFC-920, USC/Information Sciences Institute
  1980.                 October 1984.
  1981.                 Explains the naming scheme for top level domains.
  1982. [RFC-952]       K. Harrenstien, M. Stahl, E. Feinler, "DoD Internet Host
  1983.                 Table Specification", RFC-952, SRI, October 1985.
  1984.                 Specifies the format of HOSTS.TXT, the host/address
  1985.                 table replaced by the DNS.
  1986. [RFC-953]       K. Harrenstien, M. Stahl, E. Feinler, "HOSTNAME Server",
  1987.                 RFC-953, SRI, October 1985.
  1988.                 This RFC contains the official specification of the
  1989.                 hostname server protocol, which is obsoleted by the DNS.
  1990.                 This TCP based protocol accesses information stored in
  1991.                 the RFC-952 format, and is used to obtain copies of the
  1992.                 host table.
  1993. [RFC-973]       P. Mockapetris, "Domain System Changes and
  1994.                 Observations", RFC-973, USC/Information Sciences
  1995.                 Institute, January 1986.
  1996.                 Describes changes to RFC-882 and RFC-883 and reasons for
  1997.                 them.  Now obsolete.
  1998. Mockapetris                                                    [Page 52]
  1999. RFC 1034             Domain Concepts and Facilities        November 1987
  2000. [RFC-974]       C. Partridge, "Mail routing and the domain system",
  2001.                 RFC-974, CSNET CIC BBN Labs, January 1986.
  2002.                 Describes the transition from HOSTS.TXT based mail
  2003.                 addressing to the more powerful MX system used with the
  2004.                 domain system.
  2005. [RFC-1001]      NetBIOS Working Group, "Protocol standard for a NetBIOS
  2006.                 service on a TCP/UDP transport: Concepts and Methods",
  2007.                 RFC-1001, March 1987.
  2008.                 This RFC and RFC-1002 are a preliminary design for
  2009.                 NETBIOS on top of TCP/IP which proposes to base NetBIOS
  2010.                 name service on top of the DNS.
  2011. [RFC-1002]      NetBIOS Working Group, "Protocol standard for a NetBIOS
  2012.                 service on a TCP/UDP transport: Detailed
  2013.                 Specifications", RFC-1002, March 1987.
  2014. [RFC-1010]      J. Reynolds and J. Postel, "Assigned Numbers", RFC-1010,
  2015.                 USC/Information Sciences Institute, May 1987
  2016.                 Contains socket numbers and mnemonics for host names,
  2017.                 operating systems, etc.
  2018. [RFC-1031]      W. Lazear, "MILNET Name Domain Transition", RFC-1031,
  2019.                 November 1987.
  2020.                 Describes a plan for converting the MILNET to the DNS.
  2021. [RFC-1032]      M. K. Stahl, "Establishing a Domain - Guidelines for
  2022.                 Administrators", RFC-1032, November 1987.
  2023.                 Describes the registration policies used by the NIC to
  2024.                 administer the top level domains and delegate subzones.
  2025. [RFC-1033]      M. K. Lottor, "Domain Administrators Operations Guide",
  2026.                 RFC-1033, November 1987.
  2027.                 A cookbook for domain administrators.
  2028. [Solomon 82]    M. Solomon, L. Landweber, and D. Neuhengen, "The CSNET
  2029.                 Name Server", Computer Networks, vol 6, nr 3, July 1982.
  2030.                 Describes a name service for CSNET which is independent
  2031.                 from the DNS and DNS use in the CSNET.
  2032. Mockapetris                                                    [Page 53]
  2033. RFC 1034             Domain Concepts and Facilities        November 1987
  2034. Index
  2035.           A   12
  2036.           Absolute names   8
  2037.           Aliases   14, 31
  2038.           Authority   6
  2039.           AXFR   17
  2040.           Case of characters   7
  2041.           CH   12
  2042.           CNAME   12, 13, 31
  2043.           Completion queries   18
  2044.           Domain name   6, 7
  2045.           Glue RRs   20
  2046.           HINFO   12
  2047.           IN   12
  2048.           Inverse queries   16
  2049.           Iterative   4
  2050.           Label   7
  2051.           Mailbox names   9
  2052.           MX   12
  2053.           Name error   27, 36
  2054.           Name servers   5, 17
  2055.           NE   30
  2056.           Negative caching   44
  2057.           NS   12
  2058.           Opcode   16
  2059.           PTR   12
  2060.           QCLASS   16
  2061.           QTYPE   16
  2062.           RDATA   13
  2063.           Recursive   4
  2064.           Recursive service   22
  2065.           Relative names   7
  2066.           Resolvers   6
  2067.           RR   12
  2068. Mockapetris                                                    [Page 54]
  2069. RFC 1034             Domain Concepts and Facilities        November 1987
  2070.           Safety belt   33
  2071.           Sections   16
  2072.           SOA   12
  2073.           Standard queries   22
  2074.           Status queries   18
  2075.           Stub resolvers   32
  2076.           TTL   12, 13
  2077.           Wildcards   25
  2078.           Zone transfers   28
  2079.           Zones   19
  2080. Mockapetris                                                    [Page 55]