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