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