Remove obsolete file.
[connman] / doc / rfc1035.txt
1 Network Working Group                                     P. Mockapetris
2 Request for Comments: 1035                                           ISI
3                                                            November 1987
4 Obsoletes: RFCs 882, 883, 973
5
6             DOMAIN NAMES - IMPLEMENTATION AND SPECIFICATION
7
8
9 1. STATUS OF THIS MEMO
10
11 This RFC describes the details of the domain system and protocol, and
12 assumes that the reader is familiar with the concepts discussed in a
13 companion RFC, "Domain Names - Concepts and Facilities" [RFC-1034].
14
15 The domain system is a mixture of functions and data types which are an
16 official protocol and functions and data types which are still
17 experimental.  Since the domain system is intentionally extensible, new
18 data types and experimental behavior should always be expected in parts
19 of the system beyond the official protocol.  The official protocol parts
20 include standard queries, responses and the Internet class RR data
21 formats (e.g., host addresses).  Since the previous RFC set, several
22 definitions have changed, so some previous definitions are obsolete.
23
24 Experimental or obsolete features are clearly marked in these RFCs, and
25 such information should be used with caution.
26
27 The reader is especially cautioned not to depend on the values which
28 appear in examples to be current or complete, since their purpose is
29 primarily pedagogical.  Distribution of this memo is unlimited.
30
31                            Table of Contents
32
33   1. STATUS OF THIS MEMO                                              1
34   2. INTRODUCTION                                                     3
35       2.1. Overview                                                   3
36       2.2. Common configurations                                      4
37       2.3. Conventions                                                7
38           2.3.1. Preferred name syntax                                7
39           2.3.2. Data Transmission Order                              8
40           2.3.3. Character Case                                       9
41           2.3.4. Size limits                                         10
42   3. DOMAIN NAME SPACE AND RR DEFINITIONS                            10
43       3.1. Name space definitions                                    10
44       3.2. RR definitions                                            11
45           3.2.1. Format                                              11
46           3.2.2. TYPE values                                         12
47           3.2.3. QTYPE values                                        12
48           3.2.4. CLASS values                                        13
49
50
51
52 Mockapetris                                                     [Page 1]
53 \f
54 RFC 1035        Domain Implementation and Specification    November 1987
55
56
57           3.2.5. QCLASS values                                       13
58       3.3. Standard RRs                                              13
59           3.3.1. CNAME RDATA format                                  14
60           3.3.2. HINFO RDATA format                                  14
61           3.3.3. MB RDATA format (EXPERIMENTAL)                      14
62           3.3.4. MD RDATA format (Obsolete)                          15
63           3.3.5. MF RDATA format (Obsolete)                          15
64           3.3.6. MG RDATA format (EXPERIMENTAL)                      16
65           3.3.7. MINFO RDATA format (EXPERIMENTAL)                   16
66           3.3.8. MR RDATA format (EXPERIMENTAL)                      17
67           3.3.9. MX RDATA format                                     17
68           3.3.10. NULL RDATA format (EXPERIMENTAL)                   17
69           3.3.11. NS RDATA format                                    18
70           3.3.12. PTR RDATA format                                   18
71           3.3.13. SOA RDATA format                                   19
72           3.3.14. TXT RDATA format                                   20
73       3.4. ARPA Internet specific RRs                                20
74           3.4.1. A RDATA format                                      20
75           3.4.2. WKS RDATA format                                    21
76       3.5. IN-ADDR.ARPA domain                                       22
77       3.6. Defining new types, classes, and special namespaces       24
78   4. MESSAGES                                                        25
79       4.1. Format                                                    25
80           4.1.1. Header section format                               26
81           4.1.2. Question section format                             28
82           4.1.3. Resource record format                              29
83           4.1.4. Message compression                                 30
84       4.2. Transport                                                 32
85           4.2.1. UDP usage                                           32
86           4.2.2. TCP usage                                           32
87   5. MASTER FILES                                                    33
88       5.1. Format                                                    33
89       5.2. Use of master files to define zones                       35
90       5.3. Master file example                                       36
91   6. NAME SERVER IMPLEMENTATION                                      37
92       6.1. Architecture                                              37
93           6.1.1. Control                                             37
94           6.1.2. Database                                            37
95           6.1.3. Time                                                39
96       6.2. Standard query processing                                 39
97       6.3. Zone refresh and reload processing                        39
98       6.4. Inverse queries (Optional)                                40
99           6.4.1. The contents of inverse queries and responses       40
100           6.4.2. Inverse query and response example                  41
101           6.4.3. Inverse query processing                            42
102
103
104
105
106
107
108 Mockapetris                                                     [Page 2]
109 \f
110 RFC 1035        Domain Implementation and Specification    November 1987
111
112
113       6.5. Completion queries and responses                          42
114   7. RESOLVER IMPLEMENTATION                                         43
115       7.1. Transforming a user request into a query                  43
116       7.2. Sending the queries                                       44
117       7.3. Processing responses                                      46
118       7.4. Using the cache                                           47
119   8. MAIL SUPPORT                                                    47
120       8.1. Mail exchange binding                                     48
121       8.2. Mailbox binding (Experimental)                            48
122   9. REFERENCES and BIBLIOGRAPHY                                     50
123   Index                                                              54
124
125 2. INTRODUCTION
126
127 2.1. Overview
128
129 The goal of domain names is to provide a mechanism for naming resources
130 in such a way that the names are usable in different hosts, networks,
131 protocol families, internets, and administrative organizations.
132
133 From the user's point of view, domain names are useful as arguments to a
134 local agent, called a resolver, which retrieves information associated
135 with the domain name.  Thus a user might ask for the host address or
136 mail information associated with a particular domain name.  To enable
137 the user to request a particular type of information, an appropriate
138 query type is passed to the resolver with the domain name.  To the user,
139 the domain tree is a single information space; the resolver is
140 responsible for hiding the distribution of data among name servers from
141 the user.
142
143 From the resolver's point of view, the database that makes up the domain
144 space is distributed among various name servers.  Different parts of the
145 domain space are stored in different name servers, although a particular
146 data item will be stored redundantly in two or more name servers.  The
147 resolver starts with knowledge of at least one name server.  When the
148 resolver processes a user query it asks a known name server for the
149 information; in return, the resolver either receives the desired
150 information or a referral to another name server.  Using these
151 referrals, resolvers learn the identities and contents of other name
152 servers.  Resolvers are responsible for dealing with the distribution of
153 the domain space and dealing with the effects of name server failure by
154 consulting redundant databases in other servers.
155
156 Name servers manage two kinds of data.  The first kind of data held in
157 sets called zones; each zone is the complete database for a particular
158 "pruned" subtree of the domain space.  This data is called
159 authoritative.  A name server periodically checks to make sure that its
160 zones are up to date, and if not, obtains a new copy of updated zones
161
162
163
164 Mockapetris                                                     [Page 3]
165 \f
166 RFC 1035        Domain Implementation and Specification    November 1987
167
168
169 from master files stored locally or in another name server.  The second
170 kind of data is cached data which was acquired by a local resolver.
171 This data may be incomplete, but improves the performance of the
172 retrieval process when non-local data is repeatedly accessed.  Cached
173 data is eventually discarded by a timeout mechanism.
174
175 This functional structure isolates the problems of user interface,
176 failure recovery, and distribution in the resolvers and isolates the
177 database update and refresh problems in the name servers.
178
179 2.2. Common configurations
180
181 A host can participate in the domain name system in a number of ways,
182 depending on whether the host runs programs that retrieve information
183 from the domain system, name servers that answer queries from other
184 hosts, or various combinations of both functions.  The simplest, and
185 perhaps most typical, configuration is shown below:
186
187                  Local Host                        |  Foreign
188                                                    |
189     +---------+               +----------+         |  +--------+
190     |         | user queries  |          |queries  |  |        |
191     |  User   |-------------->|          |---------|->|Foreign |
192     | Program |               | Resolver |         |  |  Name  |
193     |         |<--------------|          |<--------|--| Server |
194     |         | user responses|          |responses|  |        |
195     +---------+               +----------+         |  +--------+
196                                 |     A            |
197                 cache additions |     | references |
198                                 V     |            |
199                               +----------+         |
200                               |  cache   |         |
201                               +----------+         |
202
203 User programs interact with the domain name space through resolvers; the
204 format of user queries and user responses is specific to the host and
205 its operating system.  User queries will typically be operating system
206 calls, and the resolver and its cache will be part of the host operating
207 system.  Less capable hosts may choose to implement the resolver as a
208 subroutine to be linked in with every program that needs its services.
209 Resolvers answer user queries with information they acquire via queries
210 to foreign name servers and the local cache.
211
212 Note that the resolver may have to make several queries to several
213 different foreign name servers to answer a particular user query, and
214 hence the resolution of a user query may involve several network
215 accesses and an arbitrary amount of time.  The queries to foreign name
216 servers and the corresponding responses have a standard format described
217
218
219
220 Mockapetris                                                     [Page 4]
221 \f
222 RFC 1035        Domain Implementation and Specification    November 1987
223
224
225 in this memo, and may be datagrams.
226
227 Depending on its capabilities, a name server could be a stand alone
228 program on a dedicated machine or a process or processes on a large
229 timeshared host.  A simple configuration might be:
230
231                  Local Host                        |  Foreign
232                                                    |
233       +---------+                                  |
234      /         /|                                  |
235     +---------+ |             +----------+         |  +--------+
236     |         | |             |          |responses|  |        |
237     |         | |             |   Name   |---------|->|Foreign |
238     |  Master |-------------->|  Server  |         |  |Resolver|
239     |  files  | |             |          |<--------|--|        |
240     |         |/              |          | queries |  +--------+
241     +---------+               +----------+         |
242
243 Here a primary name server acquires information about one or more zones
244 by reading master files from its local file system, and answers queries
245 about those zones that arrive from foreign resolvers.
246
247 The DNS requires that all zones be redundantly supported by more than
248 one name server.  Designated secondary servers can acquire zones and
249 check for updates from the primary server using the zone transfer
250 protocol of the DNS.  This configuration is shown below:
251
252                  Local Host                        |  Foreign
253                                                    |
254       +---------+                                  |
255      /         /|                                  |
256     +---------+ |             +----------+         |  +--------+
257     |         | |             |          |responses|  |        |
258     |         | |             |   Name   |---------|->|Foreign |
259     |  Master |-------------->|  Server  |         |  |Resolver|
260     |  files  | |             |          |<--------|--|        |
261     |         |/              |          | queries |  +--------+
262     +---------+               +----------+         |
263                                 A     |maintenance |  +--------+
264                                 |     +------------|->|        |
265                                 |      queries     |  |Foreign |
266                                 |                  |  |  Name  |
267                                 +------------------|--| Server |
268                              maintenance responses |  +--------+
269
270 In this configuration, the name server periodically establishes a
271 virtual circuit to a foreign name server to acquire a copy of a zone or
272 to check that an existing copy has not changed.  The messages sent for
273
274
275
276 Mockapetris                                                     [Page 5]
277 \f
278 RFC 1035        Domain Implementation and Specification    November 1987
279
280
281 these maintenance activities follow the same form as queries and
282 responses, but the message sequences are somewhat different.
283
284 The information flow in a host that supports all aspects of the domain
285 name system is shown below:
286
287                  Local Host                        |  Foreign
288                                                    |
289     +---------+               +----------+         |  +--------+
290     |         | user queries  |          |queries  |  |        |
291     |  User   |-------------->|          |---------|->|Foreign |
292     | Program |               | Resolver |         |  |  Name  |
293     |         |<--------------|          |<--------|--| Server |
294     |         | user responses|          |responses|  |        |
295     +---------+               +----------+         |  +--------+
296                                 |     A            |
297                 cache additions |     | references |
298                                 V     |            |
299                               +----------+         |
300                               |  Shared  |         |
301                               | database |         |
302                               +----------+         |
303                                 A     |            |
304       +---------+     refreshes |     | references |
305      /         /|               |     V            |
306     +---------+ |             +----------+         |  +--------+
307     |         | |             |          |responses|  |        |
308     |         | |             |   Name   |---------|->|Foreign |
309     |  Master |-------------->|  Server  |         |  |Resolver|
310     |  files  | |             |          |<--------|--|        |
311     |         |/              |          | queries |  +--------+
312     +---------+               +----------+         |
313                                 A     |maintenance |  +--------+
314                                 |     +------------|->|        |
315                                 |      queries     |  |Foreign |
316                                 |                  |  |  Name  |
317                                 +------------------|--| Server |
318                              maintenance responses |  +--------+
319
320 The shared database holds domain space data for the local name server
321 and resolver.  The contents of the shared database will typically be a
322 mixture of authoritative data maintained by the periodic refresh
323 operations of the name server and cached data from previous resolver
324 requests.  The structure of the domain data and the necessity for
325 synchronization between name servers and resolvers imply the general
326 characteristics of this database, but the actual format is up to the
327 local implementor.
328
329
330
331
332 Mockapetris                                                     [Page 6]
333 \f
334 RFC 1035        Domain Implementation and Specification    November 1987
335
336
337 Information flow can also be tailored so that a group of hosts act
338 together to optimize activities.  Sometimes this is done to offload less
339 capable hosts so that they do not have to implement a full resolver.
340 This can be appropriate for PCs or hosts which want to minimize the
341 amount of new network code which is required.  This scheme can also
342 allow a group of hosts can share a small number of caches rather than
343 maintaining a large number of separate caches, on the premise that the
344 centralized caches will have a higher hit ratio.  In either case,
345 resolvers are replaced with stub resolvers which act as front ends to
346 resolvers located in a recursive server in one or more name servers
347 known to perform that service:
348
349                    Local Hosts                     |  Foreign
350                                                    |
351     +---------+                                    |
352     |         | responses                          |
353     | Stub    |<--------------------+              |
354     | Resolver|                     |              |
355     |         |----------------+    |              |
356     +---------+ recursive      |    |              |
357                 queries        |    |              |
358                                V    |              |
359     +---------+ recursive     +----------+         |  +--------+
360     |         | queries       |          |queries  |  |        |
361     | Stub    |-------------->| Recursive|---------|->|Foreign |
362     | Resolver|               | Server   |         |  |  Name  |
363     |         |<--------------|          |<--------|--| Server |
364     +---------+ responses     |          |responses|  |        |
365                               +----------+         |  +--------+
366                               |  Central |         |
367                               |   cache  |         |
368                               +----------+         |
369
370 In any case, note that domain components are always replicated for
371 reliability whenever possible.
372
373 2.3. Conventions
374
375 The domain system has several conventions dealing with low-level, but
376 fundamental, issues.  While the implementor is free to violate these
377 conventions WITHIN HIS OWN SYSTEM, he must observe these conventions in
378 ALL behavior observed from other hosts.
379
380 2.3.1. Preferred name syntax
381
382 The DNS specifications attempt to be as general as possible in the rules
383 for constructing domain names.  The idea is that the name of any
384 existing object can be expressed as a domain name with minimal changes.
385
386
387
388 Mockapetris                                                     [Page 7]
389 \f
390 RFC 1035        Domain Implementation and Specification    November 1987
391
392
393 However, when assigning a domain name for an object, the prudent user
394 will select a name which satisfies both the rules of the domain system
395 and any existing rules for the object, whether these rules are published
396 or implied by existing programs.
397
398 For example, when naming a mail domain, the user should satisfy both the
399 rules of this memo and those in RFC-822.  When creating a new host name,
400 the old rules for HOSTS.TXT should be followed.  This avoids problems
401 when old software is converted to use domain names.
402
403 The following syntax will result in fewer problems with many
404
405 applications that use domain names (e.g., mail, TELNET).
406
407 <domain> ::= <subdomain> | " "
408
409 <subdomain> ::= <label> | <subdomain> "." <label>
410
411 <label> ::= <letter> [ [ <ldh-str> ] <let-dig> ]
412
413 <ldh-str> ::= <let-dig-hyp> | <let-dig-hyp> <ldh-str>
414
415 <let-dig-hyp> ::= <let-dig> | "-"
416
417 <let-dig> ::= <letter> | <digit>
418
419 <letter> ::= any one of the 52 alphabetic characters A through Z in
420 upper case and a through z in lower case
421
422 <digit> ::= any one of the ten digits 0 through 9
423
424 Note that while upper and lower case letters are allowed in domain
425 names, no significance is attached to the case.  That is, two names with
426 the same spelling but different case are to be treated as if identical.
427
428 The labels must follow the rules for ARPANET host names.  They must
429 start with a letter, end with a letter or digit, and have as interior
430 characters only letters, digits, and hyphen.  There are also some
431 restrictions on the length.  Labels must be 63 characters or less.
432
433 For example, the following strings identify hosts in the Internet:
434
435 A.ISI.EDU XX.LCS.MIT.EDU SRI-NIC.ARPA
436
437 2.3.2. Data Transmission Order
438
439 The order of transmission of the header and data described in this
440 document is resolved to the octet level.  Whenever a diagram shows a
441
442
443
444 Mockapetris                                                     [Page 8]
445 \f
446 RFC 1035        Domain Implementation and Specification    November 1987
447
448
449 group of octets, the order of transmission of those octets is the normal
450 order in which they are read in English.  For example, in the following
451 diagram, the octets are transmitted in the order they are numbered.
452
453      0                   1
454      0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
455     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
456     |       1       |       2       |
457     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
458     |       3       |       4       |
459     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
460     |       5       |       6       |
461     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
462
463 Whenever an octet represents a numeric quantity, the left most bit in
464 the diagram is the high order or most significant bit.  That is, the bit
465 labeled 0 is the most significant bit.  For example, the following
466 diagram represents the value 170 (decimal).
467
468      0 1 2 3 4 5 6 7
469     +-+-+-+-+-+-+-+-+
470     |1 0 1 0 1 0 1 0|
471     +-+-+-+-+-+-+-+-+
472
473 Similarly, whenever a multi-octet field represents a numeric quantity
474 the left most bit of the whole field is the most significant bit.  When
475 a multi-octet quantity is transmitted the most significant octet is
476 transmitted first.
477
478 2.3.3. Character Case
479
480 For all parts of the DNS that are part of the official protocol, all
481 comparisons between character strings (e.g., labels, domain names, etc.)
482 are done in a case-insensitive manner.  At present, this rule is in
483 force throughout the domain system without exception.  However, future
484 additions beyond current usage may need to use the full binary octet
485 capabilities in names, so attempts to store domain names in 7-bit ASCII
486 or use of special bytes to terminate labels, etc., should be avoided.
487
488 When data enters the domain system, its original case should be
489 preserved whenever possible.  In certain circumstances this cannot be
490 done.  For example, if two RRs are stored in a database, one at x.y and
491 one at X.Y, they are actually stored at the same place in the database,
492 and hence only one casing would be preserved.  The basic rule is that
493 case can be discarded only when data is used to define structure in a
494 database, and two names are identical when compared in a case
495 insensitive manner.
496
497
498
499
500 Mockapetris                                                     [Page 9]
501 \f
502 RFC 1035        Domain Implementation and Specification    November 1987
503
504
505 Loss of case sensitive data must be minimized.  Thus while data for x.y
506 and X.Y may both be stored under a single location x.y or X.Y, data for
507 a.x and B.X would never be stored under A.x, A.X, b.x, or b.X.  In
508 general, this preserves the case of the first label of a domain name,
509 but forces standardization of interior node labels.
510
511 Systems administrators who enter data into the domain database should
512 take care to represent the data they supply to the domain system in a
513 case-consistent manner if their system is case-sensitive.  The data
514 distribution system in the domain system will ensure that consistent
515 representations are preserved.
516
517 2.3.4. Size limits
518
519 Various objects and parameters in the DNS have size limits.  They are
520 listed below.  Some could be easily changed, others are more
521 fundamental.
522
523 labels          63 octets or less
524
525 names           255 octets or less
526
527 TTL             positive values of a signed 32 bit number.
528
529 UDP messages    512 octets or less
530
531 3. DOMAIN NAME SPACE AND RR DEFINITIONS
532
533 3.1. Name space definitions
534
535 Domain names in messages are expressed in terms of a sequence of labels.
536 Each label is represented as a one octet length field followed by that
537 number of octets.  Since every domain name ends with the null label of
538 the root, a domain name is terminated by a length byte of zero.  The
539 high order two bits of every length octet must be zero, and the
540 remaining six bits of the length field limit the label to 63 octets or
541 less.
542
543 To simplify implementations, the total length of a domain name (i.e.,
544 label octets and label length octets) is restricted to 255 octets or
545 less.
546
547 Although labels can contain any 8 bit values in octets that make up a
548 label, it is strongly recommended that labels follow the preferred
549 syntax described elsewhere in this memo, which is compatible with
550 existing host naming conventions.  Name servers and resolvers must
551 compare labels in a case-insensitive manner (i.e., A=a), assuming ASCII
552 with zero parity.  Non-alphabetic codes must match exactly.
553
554
555
556 Mockapetris                                                    [Page 10]
557 \f
558 RFC 1035        Domain Implementation and Specification    November 1987
559
560
561 3.2. RR definitions
562
563 3.2.1. Format
564
565 All RRs have the same top level format shown below:
566
567                                     1  1  1  1  1  1
568       0  1  2  3  4  5  6  7  8  9  0  1  2  3  4  5
569     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
570     |                                               |
571     /                                               /
572     /                      NAME                     /
573     |                                               |
574     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
575     |                      TYPE                     |
576     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
577     |                     CLASS                     |
578     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
579     |                      TTL                      |
580     |                                               |
581     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
582     |                   RDLENGTH                    |
583     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--|
584     /                     RDATA                     /
585     /                                               /
586     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
587
588
589 where:
590
591 NAME            an owner name, i.e., the name of the node to which this
592                 resource record pertains.
593
594 TYPE            two octets containing one of the RR TYPE codes.
595
596 CLASS           two octets containing one of the RR CLASS codes.
597
598 TTL             a 32 bit signed integer that specifies the time interval
599                 that the resource record may be cached before the source
600                 of the information should again be consulted.  Zero
601                 values are interpreted to mean that the RR can only be
602                 used for the transaction in progress, and should not be
603                 cached.  For example, SOA records are always distributed
604                 with a zero TTL to prohibit caching.  Zero values can
605                 also be used for extremely volatile data.
606
607 RDLENGTH        an unsigned 16 bit integer that specifies the length in
608                 octets of the RDATA field.
609
610
611
612 Mockapetris                                                    [Page 11]
613 \f
614 RFC 1035        Domain Implementation and Specification    November 1987
615
616
617 RDATA           a variable length string of octets that describes the
618                 resource.  The format of this information varies
619                 according to the TYPE and CLASS of the resource record.
620
621 3.2.2. TYPE values
622
623 TYPE fields are used in resource records.  Note that these types are a
624 subset of QTYPEs.
625
626 TYPE            value and meaning
627
628 A               1 a host address
629
630 NS              2 an authoritative name server
631
632 MD              3 a mail destination (Obsolete - use MX)
633
634 MF              4 a mail forwarder (Obsolete - use MX)
635
636 CNAME           5 the canonical name for an alias
637
638 SOA             6 marks the start of a zone of authority
639
640 MB              7 a mailbox domain name (EXPERIMENTAL)
641
642 MG              8 a mail group member (EXPERIMENTAL)
643
644 MR              9 a mail rename domain name (EXPERIMENTAL)
645
646 NULL            10 a null RR (EXPERIMENTAL)
647
648 WKS             11 a well known service description
649
650 PTR             12 a domain name pointer
651
652 HINFO           13 host information
653
654 MINFO           14 mailbox or mail list information
655
656 MX              15 mail exchange
657
658 TXT             16 text strings
659
660 3.2.3. QTYPE values
661
662 QTYPE fields appear in the question part of a query.  QTYPES are a
663 superset of TYPEs, hence all TYPEs are valid QTYPEs.  In addition, the
664 following QTYPEs are defined:
665
666
667
668 Mockapetris                                                    [Page 12]
669 \f
670 RFC 1035        Domain Implementation and Specification    November 1987
671
672
673 AXFR            252 A request for a transfer of an entire zone
674
675 MAILB           253 A request for mailbox-related records (MB, MG or MR)
676
677 MAILA           254 A request for mail agent RRs (Obsolete - see MX)
678
679 *               255 A request for all records
680
681 3.2.4. CLASS values
682
683 CLASS fields appear in resource records.  The following CLASS mnemonics
684 and values are defined:
685
686 IN              1 the Internet
687
688 CS              2 the CSNET class (Obsolete - used only for examples in
689                 some obsolete RFCs)
690
691 CH              3 the CHAOS class
692
693 HS              4 Hesiod [Dyer 87]
694
695 3.2.5. QCLASS values
696
697 QCLASS fields appear in the question section of a query.  QCLASS values
698 are a superset of CLASS values; every CLASS is a valid QCLASS.  In
699 addition to CLASS values, the following QCLASSes are defined:
700
701 *               255 any class
702
703 3.3. Standard RRs
704
705 The following RR definitions are expected to occur, at least
706 potentially, in all classes.  In particular, NS, SOA, CNAME, and PTR
707 will be used in all classes, and have the same format in all classes.
708 Because their RDATA format is known, all domain names in the RDATA
709 section of these RRs may be compressed.
710
711 <domain-name> is a domain name represented as a series of labels, and
712 terminated by a label with zero length.  <character-string> is a single
713 length octet followed by that number of characters.  <character-string>
714 is treated as binary information, and can be up to 256 characters in
715 length (including the length octet).
716
717
718
719
720
721
722
723
724 Mockapetris                                                    [Page 13]
725 \f
726 RFC 1035        Domain Implementation and Specification    November 1987
727
728
729 3.3.1. CNAME RDATA format
730
731     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
732     /                     CNAME                     /
733     /                                               /
734     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
735
736 where:
737
738 CNAME           A <domain-name> which specifies the canonical or primary
739                 name for the owner.  The owner name is an alias.
740
741 CNAME RRs cause no additional section processing, but name servers may
742 choose to restart the query at the canonical name in certain cases.  See
743 the description of name server logic in [RFC-1034] for details.
744
745 3.3.2. HINFO RDATA format
746
747     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
748     /                      CPU                      /
749     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
750     /                       OS                      /
751     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
752
753 where:
754
755 CPU             A <character-string> which specifies the CPU type.
756
757 OS              A <character-string> which specifies the operating
758                 system type.
759
760 Standard values for CPU and OS can be found in [RFC-1010].
761
762 HINFO records are used to acquire general information about a host.  The
763 main use is for protocols such as FTP that can use special procedures
764 when talking between machines or operating systems of the same type.
765
766 3.3.3. MB RDATA format (EXPERIMENTAL)
767
768     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
769     /                   MADNAME                     /
770     /                                               /
771     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
772
773 where:
774
775 MADNAME         A <domain-name> which specifies a host which has the
776                 specified mailbox.
777
778
779
780 Mockapetris                                                    [Page 14]
781 \f
782 RFC 1035        Domain Implementation and Specification    November 1987
783
784
785 MB records cause additional section processing which looks up an A type
786 RRs corresponding to MADNAME.
787
788 3.3.4. MD RDATA format (Obsolete)
789
790     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
791     /                   MADNAME                     /
792     /                                               /
793     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
794
795 where:
796
797 MADNAME         A <domain-name> which specifies a host which has a mail
798                 agent for the domain which should be able to deliver
799                 mail for the domain.
800
801 MD records cause additional section processing which looks up an A type
802 record corresponding to MADNAME.
803
804 MD is obsolete.  See the definition of MX and [RFC-974] for details of
805 the new scheme.  The recommended policy for dealing with MD RRs found in
806 a master file is to reject them, or to convert them to MX RRs with a
807 preference of 0.
808
809 3.3.5. MF RDATA format (Obsolete)
810
811     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
812     /                   MADNAME                     /
813     /                                               /
814     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
815
816 where:
817
818 MADNAME         A <domain-name> which specifies a host which has a mail
819                 agent for the domain which will accept mail for
820                 forwarding to the domain.
821
822 MF records cause additional section processing which looks up an A type
823 record corresponding to MADNAME.
824
825 MF is obsolete.  See the definition of MX and [RFC-974] for details ofw
826 the new scheme.  The recommended policy for dealing with MD RRs found in
827 a master file is to reject them, or to convert them to MX RRs with a
828 preference of 10.
829
830
831
832
833
834
835
836 Mockapetris                                                    [Page 15]
837 \f
838 RFC 1035        Domain Implementation and Specification    November 1987
839
840
841 3.3.6. MG RDATA format (EXPERIMENTAL)
842
843     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
844     /                   MGMNAME                     /
845     /                                               /
846     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
847
848 where:
849
850 MGMNAME         A <domain-name> which specifies a mailbox which is a
851                 member of the mail group specified by the domain name.
852
853 MG records cause no additional section processing.
854
855 3.3.7. MINFO RDATA format (EXPERIMENTAL)
856
857     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
858     /                    RMAILBX                    /
859     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
860     /                    EMAILBX                    /
861     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
862
863 where:
864
865 RMAILBX         A <domain-name> which specifies a mailbox which is
866                 responsible for the mailing list or mailbox.  If this
867                 domain name names the root, the owner of the MINFO RR is
868                 responsible for itself.  Note that many existing mailing
869                 lists use a mailbox X-request for the RMAILBX field of
870                 mailing list X, e.g., Msgroup-request for Msgroup.  This
871                 field provides a more general mechanism.
872
873
874 EMAILBX         A <domain-name> which specifies a mailbox which is to
875                 receive error messages related to the mailing list or
876                 mailbox specified by the owner of the MINFO RR (similar
877                 to the ERRORS-TO: field which has been proposed).  If
878                 this domain name names the root, errors should be
879                 returned to the sender of the message.
880
881 MINFO records cause no additional section processing.  Although these
882 records can be associated with a simple mailbox, they are usually used
883 with a mailing list.
884
885
886
887
888
889
890
891
892 Mockapetris                                                    [Page 16]
893 \f
894 RFC 1035        Domain Implementation and Specification    November 1987
895
896
897 3.3.8. MR RDATA format (EXPERIMENTAL)
898
899     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
900     /                   NEWNAME                     /
901     /                                               /
902     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
903
904 where:
905
906 NEWNAME         A <domain-name> which specifies a mailbox which is the
907                 proper rename of the specified mailbox.
908
909 MR records cause no additional section processing.  The main use for MR
910 is as a forwarding entry for a user who has moved to a different
911 mailbox.
912
913 3.3.9. MX RDATA format
914
915     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
916     |                  PREFERENCE                   |
917     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
918     /                   EXCHANGE                    /
919     /                                               /
920     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
921
922 where:
923
924 PREFERENCE      A 16 bit integer which specifies the preference given to
925                 this RR among others at the same owner.  Lower values
926                 are preferred.
927
928 EXCHANGE        A <domain-name> which specifies a host willing to act as
929                 a mail exchange for the owner name.
930
931 MX records cause type A additional section processing for the host
932 specified by EXCHANGE.  The use of MX RRs is explained in detail in
933 [RFC-974].
934
935 3.3.10. NULL RDATA format (EXPERIMENTAL)
936
937     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
938     /                  <anything>                   /
939     /                                               /
940     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
941
942 Anything at all may be in the RDATA field so long as it is 65535 octets
943 or less.
944
945
946
947
948 Mockapetris                                                    [Page 17]
949 \f
950 RFC 1035        Domain Implementation and Specification    November 1987
951
952
953 NULL records cause no additional section processing.  NULL RRs are not
954 allowed in master files.  NULLs are used as placeholders in some
955 experimental extensions of the DNS.
956
957 3.3.11. NS RDATA format
958
959     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
960     /                   NSDNAME                     /
961     /                                               /
962     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
963
964 where:
965
966 NSDNAME         A <domain-name> which specifies a host which should be
967                 authoritative for the specified class and domain.
968
969 NS records cause both the usual additional section processing to locate
970 a type A record, and, when used in a referral, a special search of the
971 zone in which they reside for glue information.
972
973 The NS RR states that the named host should be expected to have a zone
974 starting at owner name of the specified class.  Note that the class may
975 not indicate the protocol family which should be used to communicate
976 with the host, although it is typically a strong hint.  For example,
977 hosts which are name servers for either Internet (IN) or Hesiod (HS)
978 class information are normally queried using IN class protocols.
979
980 3.3.12. PTR RDATA format
981
982     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
983     /                   PTRDNAME                    /
984     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
985
986 where:
987
988 PTRDNAME        A <domain-name> which points to some location in the
989                 domain name space.
990
991 PTR records cause no additional section processing.  These RRs are used
992 in special domains to point to some other location in the domain space.
993 These records are simple data, and don't imply any special processing
994 similar to that performed by CNAME, which identifies aliases.  See the
995 description of the IN-ADDR.ARPA domain for an example.
996
997
998
999
1000
1001
1002
1003
1004 Mockapetris                                                    [Page 18]
1005 \f
1006 RFC 1035        Domain Implementation and Specification    November 1987
1007
1008
1009 3.3.13. SOA RDATA format
1010
1011     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
1012     /                     MNAME                     /
1013     /                                               /
1014     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
1015     /                     RNAME                     /
1016     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
1017     |                    SERIAL                     |
1018     |                                               |
1019     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
1020     |                    REFRESH                    |
1021     |                                               |
1022     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
1023     |                     RETRY                     |
1024     |                                               |
1025     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
1026     |                    EXPIRE                     |
1027     |                                               |
1028     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
1029     |                    MINIMUM                    |
1030     |                                               |
1031     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
1032
1033 where:
1034
1035 MNAME           The <domain-name> of the name server that was the
1036                 original or primary source of data for this zone.
1037
1038 RNAME           A <domain-name> which specifies the mailbox of the
1039                 person responsible for this zone.
1040
1041 SERIAL          The unsigned 32 bit version number of the original copy
1042                 of the zone.  Zone transfers preserve this value.  This
1043                 value wraps and should be compared using sequence space
1044                 arithmetic.
1045
1046 REFRESH         A 32 bit time interval before the zone should be
1047                 refreshed.
1048
1049 RETRY           A 32 bit time interval that should elapse before a
1050                 failed refresh should be retried.
1051
1052 EXPIRE          A 32 bit time value that specifies the upper limit on
1053                 the time interval that can elapse before the zone is no
1054                 longer authoritative.
1055
1056
1057
1058
1059
1060 Mockapetris                                                    [Page 19]
1061 \f
1062 RFC 1035        Domain Implementation and Specification    November 1987
1063
1064
1065 MINIMUM         The unsigned 32 bit minimum TTL field that should be
1066                 exported with any RR from this zone.
1067
1068 SOA records cause no additional section processing.
1069
1070 All times are in units of seconds.
1071
1072 Most of these fields are pertinent only for name server maintenance
1073 operations.  However, MINIMUM is used in all query operations that
1074 retrieve RRs from a zone.  Whenever a RR is sent in a response to a
1075 query, the TTL field is set to the maximum of the TTL field from the RR
1076 and the MINIMUM field in the appropriate SOA.  Thus MINIMUM is a lower
1077 bound on the TTL field for all RRs in a zone.  Note that this use of
1078 MINIMUM should occur when the RRs are copied into the response and not
1079 when the zone is loaded from a master file or via a zone transfer.  The
1080 reason for this provison is to allow future dynamic update facilities to
1081 change the SOA RR with known semantics.
1082
1083
1084 3.3.14. TXT RDATA format
1085
1086     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
1087     /                   TXT-DATA                    /
1088     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
1089
1090 where:
1091
1092 TXT-DATA        One or more <character-string>s.
1093
1094 TXT RRs are used to hold descriptive text.  The semantics of the text
1095 depends on the domain where it is found.
1096
1097 3.4. Internet specific RRs
1098
1099 3.4.1. A RDATA format
1100
1101     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
1102     |                    ADDRESS                    |
1103     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
1104
1105 where:
1106
1107 ADDRESS         A 32 bit Internet address.
1108
1109 Hosts that have multiple Internet addresses will have multiple A
1110 records.
1111
1112
1113
1114
1115
1116 Mockapetris                                                    [Page 20]
1117 \f
1118 RFC 1035        Domain Implementation and Specification    November 1987
1119
1120
1121 A records cause no additional section processing.  The RDATA section of
1122 an A line in a master file is an Internet address expressed as four
1123 decimal numbers separated by dots without any imbedded spaces (e.g.,
1124 "10.2.0.52" or "192.0.5.6").
1125
1126 3.4.2. WKS RDATA format
1127
1128     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
1129     |                    ADDRESS                    |
1130     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
1131     |       PROTOCOL        |                       |
1132     +--+--+--+--+--+--+--+--+                       |
1133     |                                               |
1134     /                   <BIT MAP>                   /
1135     /                                               /
1136     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
1137
1138 where:
1139
1140 ADDRESS         An 32 bit Internet address
1141
1142 PROTOCOL        An 8 bit IP protocol number
1143
1144 <BIT MAP>       A variable length bit map.  The bit map must be a
1145                 multiple of 8 bits long.
1146
1147 The WKS record is used to describe the well known services supported by
1148 a particular protocol on a particular internet address.  The PROTOCOL
1149 field specifies an IP protocol number, and the bit map has one bit per
1150 port of the specified protocol.  The first bit corresponds to port 0,
1151 the second to port 1, etc.  If the bit map does not include a bit for a
1152 protocol of interest, that bit is assumed zero.  The appropriate values
1153 and mnemonics for ports and protocols are specified in [RFC-1010].
1154
1155 For example, if PROTOCOL=TCP (6), the 26th bit corresponds to TCP port
1156 25 (SMTP).  If this bit is set, a SMTP server should be listening on TCP
1157 port 25; if zero, SMTP service is not supported on the specified
1158 address.
1159
1160 The purpose of WKS RRs is to provide availability information for
1161 servers for TCP and UDP.  If a server supports both TCP and UDP, or has
1162 multiple Internet addresses, then multiple WKS RRs are used.
1163
1164 WKS RRs cause no additional section processing.
1165
1166 In master files, both ports and protocols are expressed using mnemonics
1167 or decimal numbers.
1168
1169
1170
1171
1172 Mockapetris                                                    [Page 21]
1173 \f
1174 RFC 1035        Domain Implementation and Specification    November 1987
1175
1176
1177 3.5. IN-ADDR.ARPA domain
1178
1179 The Internet uses a special domain to support gateway location and
1180 Internet address to host mapping.  Other classes may employ a similar
1181 strategy in other domains.  The intent of this domain is to provide a
1182 guaranteed method to perform host address to host name mapping, and to
1183 facilitate queries to locate all gateways on a particular network in the
1184 Internet.
1185
1186 Note that both of these services are similar to functions that could be
1187 performed by inverse queries; the difference is that this part of the
1188 domain name space is structured according to address, and hence can
1189 guarantee that the appropriate data can be located without an exhaustive
1190 search of the domain space.
1191
1192 The domain begins at IN-ADDR.ARPA and has a substructure which follows
1193 the Internet addressing structure.
1194
1195 Domain names in the IN-ADDR.ARPA domain are defined to have up to four
1196 labels in addition to the IN-ADDR.ARPA suffix.  Each label represents
1197 one octet of an Internet address, and is expressed as a character string
1198 for a decimal value in the range 0-255 (with leading zeros omitted
1199 except in the case of a zero octet which is represented by a single
1200 zero).
1201
1202 Host addresses are represented by domain names that have all four labels
1203 specified.  Thus data for Internet address 10.2.0.52 is located at
1204 domain name 52.0.2.10.IN-ADDR.ARPA.  The reversal, though awkward to
1205 read, allows zones to be delegated which are exactly one network of
1206 address space.  For example, 10.IN-ADDR.ARPA can be a zone containing
1207 data for the ARPANET, while 26.IN-ADDR.ARPA can be a separate zone for
1208 MILNET.  Address nodes are used to hold pointers to primary host names
1209 in the normal domain space.
1210
1211 Network numbers correspond to some non-terminal nodes at various depths
1212 in the IN-ADDR.ARPA domain, since Internet network numbers are either 1,
1213 2, or 3 octets.  Network nodes are used to hold pointers to the primary
1214 host names of gateways attached to that network.  Since a gateway is, by
1215 definition, on more than one network, it will typically have two or more
1216 network nodes which point at it.  Gateways will also have host level
1217 pointers at their fully qualified addresses.
1218
1219 Both the gateway pointers at network nodes and the normal host pointers
1220 at full address nodes use the PTR RR to point back to the primary domain
1221 names of the corresponding hosts.
1222
1223 For example, the IN-ADDR.ARPA domain will contain information about the
1224 ISI gateway between net 10 and 26, an MIT gateway from net 10 to MIT's
1225
1226
1227
1228 Mockapetris                                                    [Page 22]
1229 \f
1230 RFC 1035        Domain Implementation and Specification    November 1987
1231
1232
1233 net 18, and hosts A.ISI.EDU and MULTICS.MIT.EDU.  Assuming that ISI
1234 gateway has addresses 10.2.0.22 and 26.0.0.103, and a name MILNET-
1235 GW.ISI.EDU, and the MIT gateway has addresses 10.0.0.77 and 18.10.0.4
1236 and a name GW.LCS.MIT.EDU, the domain database would contain:
1237
1238     10.IN-ADDR.ARPA.           PTR MILNET-GW.ISI.EDU.
1239     10.IN-ADDR.ARPA.           PTR GW.LCS.MIT.EDU.
1240     18.IN-ADDR.ARPA.           PTR GW.LCS.MIT.EDU.
1241     26.IN-ADDR.ARPA.           PTR MILNET-GW.ISI.EDU.
1242     22.0.2.10.IN-ADDR.ARPA.    PTR MILNET-GW.ISI.EDU.
1243     103.0.0.26.IN-ADDR.ARPA.   PTR MILNET-GW.ISI.EDU.
1244     77.0.0.10.IN-ADDR.ARPA.    PTR GW.LCS.MIT.EDU.
1245     4.0.10.18.IN-ADDR.ARPA.    PTR GW.LCS.MIT.EDU.
1246     103.0.3.26.IN-ADDR.ARPA.   PTR A.ISI.EDU.
1247     6.0.0.10.IN-ADDR.ARPA.     PTR MULTICS.MIT.EDU.
1248
1249 Thus a program which wanted to locate gateways on net 10 would originate
1250 a query of the form QTYPE=PTR, QCLASS=IN, QNAME=10.IN-ADDR.ARPA.  It
1251 would receive two RRs in response:
1252
1253     10.IN-ADDR.ARPA.           PTR MILNET-GW.ISI.EDU.
1254     10.IN-ADDR.ARPA.           PTR GW.LCS.MIT.EDU.
1255
1256 The program could then originate QTYPE=A, QCLASS=IN queries for MILNET-
1257 GW.ISI.EDU. and GW.LCS.MIT.EDU. to discover the Internet addresses of
1258 these gateways.
1259
1260 A resolver which wanted to find the host name corresponding to Internet
1261 host address 10.0.0.6 would pursue a query of the form QTYPE=PTR,
1262 QCLASS=IN, QNAME=6.0.0.10.IN-ADDR.ARPA, and would receive:
1263
1264     6.0.0.10.IN-ADDR.ARPA.     PTR MULTICS.MIT.EDU.
1265
1266 Several cautions apply to the use of these services:
1267    - Since the IN-ADDR.ARPA special domain and the normal domain
1268      for a particular host or gateway will be in different zones,
1269      the possibility exists that that the data may be inconsistent.
1270
1271    - Gateways will often have two names in separate domains, only
1272      one of which can be primary.
1273
1274    - Systems that use the domain database to initialize their
1275      routing tables must start with enough gateway information to
1276      guarantee that they can access the appropriate name server.
1277
1278    - The gateway data only reflects the existence of a gateway in a
1279      manner equivalent to the current HOSTS.TXT file.  It doesn't
1280      replace the dynamic availability information from GGP or EGP.
1281
1282
1283
1284 Mockapetris                                                    [Page 23]
1285 \f
1286 RFC 1035        Domain Implementation and Specification    November 1987
1287
1288
1289 3.6. Defining new types, classes, and special namespaces
1290
1291 The previously defined types and classes are the ones in use as of the
1292 date of this memo.  New definitions should be expected.  This section
1293 makes some recommendations to designers considering additions to the
1294 existing facilities.  The mailing list NAMEDROPPERS@SRI-NIC.ARPA is the
1295 forum where general discussion of design issues takes place.
1296
1297 In general, a new type is appropriate when new information is to be
1298 added to the database about an existing object, or we need new data
1299 formats for some totally new object.  Designers should attempt to define
1300 types and their RDATA formats that are generally applicable to all
1301 classes, and which avoid duplication of information.  New classes are
1302 appropriate when the DNS is to be used for a new protocol, etc which
1303 requires new class-specific data formats, or when a copy of the existing
1304 name space is desired, but a separate management domain is necessary.
1305
1306 New types and classes need mnemonics for master files; the format of the
1307 master files requires that the mnemonics for type and class be disjoint.
1308
1309 TYPE and CLASS values must be a proper subset of QTYPEs and QCLASSes
1310 respectively.
1311
1312 The present system uses multiple RRs to represent multiple values of a
1313 type rather than storing multiple values in the RDATA section of a
1314 single RR.  This is less efficient for most applications, but does keep
1315 RRs shorter.  The multiple RRs assumption is incorporated in some
1316 experimental work on dynamic update methods.
1317
1318 The present system attempts to minimize the duplication of data in the
1319 database in order to insure consistency.  Thus, in order to find the
1320 address of the host for a mail exchange, you map the mail domain name to
1321 a host name, then the host name to addresses, rather than a direct
1322 mapping to host address.  This approach is preferred because it avoids
1323 the opportunity for inconsistency.
1324
1325 In defining a new type of data, multiple RR types should not be used to
1326 create an ordering between entries or express different formats for
1327 equivalent bindings, instead this information should be carried in the
1328 body of the RR and a single type used.  This policy avoids problems with
1329 caching multiple types and defining QTYPEs to match multiple types.
1330
1331 For example, the original form of mail exchange binding used two RR
1332 types one to represent a "closer" exchange (MD) and one to represent a
1333 "less close" exchange (MF).  The difficulty is that the presence of one
1334 RR type in a cache doesn't convey any information about the other
1335 because the query which acquired the cached information might have used
1336 a QTYPE of MF, MD, or MAILA (which matched both).  The redesigned
1337
1338
1339
1340 Mockapetris                                                    [Page 24]
1341 \f
1342 RFC 1035        Domain Implementation and Specification    November 1987
1343
1344
1345 service used a single type (MX) with a "preference" value in the RDATA
1346 section which can order different RRs.  However, if any MX RRs are found
1347 in the cache, then all should be there.
1348
1349 4. MESSAGES
1350
1351 4.1. Format
1352
1353 All communications inside of the domain protocol are carried in a single
1354 format called a message.  The top level format of message is divided
1355 into 5 sections (some of which are empty in certain cases) shown below:
1356
1357     +---------------------+
1358     |        Header       |
1359     +---------------------+
1360     |       Question      | the question for the name server
1361     +---------------------+
1362     |        Answer       | RRs answering the question
1363     +---------------------+
1364     |      Authority      | RRs pointing toward an authority
1365     +---------------------+
1366     |      Additional     | RRs holding additional information
1367     +---------------------+
1368
1369 The header section is always present.  The header includes fields that
1370 specify which of the remaining sections are present, and also specify
1371 whether the message is a query or a response, a standard query or some
1372 other opcode, etc.
1373
1374 The names of the sections after the header are derived from their use in
1375 standard queries.  The question section contains fields that describe a
1376 question to a name server.  These fields are a query type (QTYPE), a
1377 query class (QCLASS), and a query domain name (QNAME).  The last three
1378 sections have the same format: a possibly empty list of concatenated
1379 resource records (RRs).  The answer section contains RRs that answer the
1380 question; the authority section contains RRs that point toward an
1381 authoritative name server; the additional records section contains RRs
1382 which relate to the query, but are not strictly answers for the
1383 question.
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396 Mockapetris                                                    [Page 25]
1397 \f
1398 RFC 1035        Domain Implementation and Specification    November 1987
1399
1400
1401 4.1.1. Header section format
1402
1403 The header contains the following fields:
1404
1405                                     1  1  1  1  1  1
1406       0  1  2  3  4  5  6  7  8  9  0  1  2  3  4  5
1407     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
1408     |                      ID                       |
1409     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
1410     |QR|   Opcode  |AA|TC|RD|RA|   Z    |   RCODE   |
1411     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
1412     |                    QDCOUNT                    |
1413     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
1414     |                    ANCOUNT                    |
1415     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
1416     |                    NSCOUNT                    |
1417     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
1418     |                    ARCOUNT                    |
1419     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
1420
1421 where:
1422
1423 ID              A 16 bit identifier assigned by the program that
1424                 generates any kind of query.  This identifier is copied
1425                 the corresponding reply and can be used by the requester
1426                 to match up replies to outstanding queries.
1427
1428 QR              A one bit field that specifies whether this message is a
1429                 query (0), or a response (1).
1430
1431 OPCODE          A four bit field that specifies kind of query in this
1432                 message.  This value is set by the originator of a query
1433                 and copied into the response.  The values are:
1434
1435                 0               a standard query (QUERY)
1436
1437                 1               an inverse query (IQUERY)
1438
1439                 2               a server status request (STATUS)
1440
1441                 3-15            reserved for future use
1442
1443 AA              Authoritative Answer - this bit is valid in responses,
1444                 and specifies that the responding name server is an
1445                 authority for the domain name in question section.
1446
1447                 Note that the contents of the answer section may have
1448                 multiple owner names because of aliases.  The AA bit
1449
1450
1451
1452 Mockapetris                                                    [Page 26]
1453 \f
1454 RFC 1035        Domain Implementation and Specification    November 1987
1455
1456
1457                 corresponds to the name which matches the query name, or
1458                 the first owner name in the answer section.
1459
1460 TC              TrunCation - specifies that this message was truncated
1461                 due to length greater than that permitted on the
1462                 transmission channel.
1463
1464 RD              Recursion Desired - this bit may be set in a query and
1465                 is copied into the response.  If RD is set, it directs
1466                 the name server to pursue the query recursively.
1467                 Recursive query support is optional.
1468
1469 RA              Recursion Available - this be is set or cleared in a
1470                 response, and denotes whether recursive query support is
1471                 available in the name server.
1472
1473 Z               Reserved for future use.  Must be zero in all queries
1474                 and responses.
1475
1476 RCODE           Response code - this 4 bit field is set as part of
1477                 responses.  The values have the following
1478                 interpretation:
1479
1480                 0               No error condition
1481
1482                 1               Format error - The name server was
1483                                 unable to interpret the query.
1484
1485                 2               Server failure - The name server was
1486                                 unable to process this query due to a
1487                                 problem with the name server.
1488
1489                 3               Name Error - Meaningful only for
1490                                 responses from an authoritative name
1491                                 server, this code signifies that the
1492                                 domain name referenced in the query does
1493                                 not exist.
1494
1495                 4               Not Implemented - The name server does
1496                                 not support the requested kind of query.
1497
1498                 5               Refused - The name server refuses to
1499                                 perform the specified operation for
1500                                 policy reasons.  For example, a name
1501                                 server may not wish to provide the
1502                                 information to the particular requester,
1503                                 or a name server may not wish to perform
1504                                 a particular operation (e.g., zone
1505
1506
1507
1508 Mockapetris                                                    [Page 27]
1509 \f
1510 RFC 1035        Domain Implementation and Specification    November 1987
1511
1512
1513                                 transfer) for particular data.
1514
1515                 6-15            Reserved for future use.
1516
1517 QDCOUNT         an unsigned 16 bit integer specifying the number of
1518                 entries in the question section.
1519
1520 ANCOUNT         an unsigned 16 bit integer specifying the number of
1521                 resource records in the answer section.
1522
1523 NSCOUNT         an unsigned 16 bit integer specifying the number of name
1524                 server resource records in the authority records
1525                 section.
1526
1527 ARCOUNT         an unsigned 16 bit integer specifying the number of
1528                 resource records in the additional records section.
1529
1530 4.1.2. Question section format
1531
1532 The question section is used to carry the "question" in most queries,
1533 i.e., the parameters that define what is being asked.  The section
1534 contains QDCOUNT (usually 1) entries, each of the following format:
1535
1536                                     1  1  1  1  1  1
1537       0  1  2  3  4  5  6  7  8  9  0  1  2  3  4  5
1538     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
1539     |                                               |
1540     /                     QNAME                     /
1541     /                                               /
1542     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
1543     |                     QTYPE                     |
1544     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
1545     |                     QCLASS                    |
1546     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
1547
1548 where:
1549
1550 QNAME           a domain name represented as a sequence of labels, where
1551                 each label consists of a length octet followed by that
1552                 number of octets.  The domain name terminates with the
1553                 zero length octet for the null label of the root.  Note
1554                 that this field may be an odd number of octets; no
1555                 padding is used.
1556
1557 QTYPE           a two octet code which specifies the type of the query.
1558                 The values for this field include all codes valid for a
1559                 TYPE field, together with some more general codes which
1560                 can match more than one type of RR.
1561
1562
1563
1564 Mockapetris                                                    [Page 28]
1565 \f
1566 RFC 1035        Domain Implementation and Specification    November 1987
1567
1568
1569 QCLASS          a two octet code that specifies the class of the query.
1570                 For example, the QCLASS field is IN for the Internet.
1571
1572 4.1.3. Resource record format
1573
1574 The answer, authority, and additional sections all share the same
1575 format: a variable number of resource records, where the number of
1576 records is specified in the corresponding count field in the header.
1577 Each resource record has the following format:
1578                                     1  1  1  1  1  1
1579       0  1  2  3  4  5  6  7  8  9  0  1  2  3  4  5
1580     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
1581     |                                               |
1582     /                                               /
1583     /                      NAME                     /
1584     |                                               |
1585     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
1586     |                      TYPE                     |
1587     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
1588     |                     CLASS                     |
1589     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
1590     |                      TTL                      |
1591     |                                               |
1592     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
1593     |                   RDLENGTH                    |
1594     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--|
1595     /                     RDATA                     /
1596     /                                               /
1597     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
1598
1599 where:
1600
1601 NAME            a domain name to which this resource record pertains.
1602
1603 TYPE            two octets containing one of the RR type codes.  This
1604                 field specifies the meaning of the data in the RDATA
1605                 field.
1606
1607 CLASS           two octets which specify the class of the data in the
1608                 RDATA field.
1609
1610 TTL             a 32 bit unsigned integer that specifies the time
1611                 interval (in seconds) that the resource record may be
1612                 cached before it should be discarded.  Zero values are
1613                 interpreted to mean that the RR can only be used for the
1614                 transaction in progress, and should not be cached.
1615
1616
1617
1618
1619
1620 Mockapetris                                                    [Page 29]
1621 \f
1622 RFC 1035        Domain Implementation and Specification    November 1987
1623
1624
1625 RDLENGTH        an unsigned 16 bit integer that specifies the length in
1626                 octets of the RDATA field.
1627
1628 RDATA           a variable length string of octets that describes the
1629                 resource.  The format of this information varies
1630                 according to the TYPE and CLASS of the resource record.
1631                 For example, the if the TYPE is A and the CLASS is IN,
1632                 the RDATA field is a 4 octet ARPA Internet address.
1633
1634 4.1.4. Message compression
1635
1636 In order to reduce the size of messages, the domain system utilizes a
1637 compression scheme which eliminates the repetition of domain names in a
1638 message.  In this scheme, an entire domain name or a list of labels at
1639 the end of a domain name is replaced with a pointer to a prior occurance
1640 of the same name.
1641
1642 The pointer takes the form of a two octet sequence:
1643
1644     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
1645     | 1  1|                OFFSET                   |
1646     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
1647
1648 The first two bits are ones.  This allows a pointer to be distinguished
1649 from a label, since the label must begin with two zero bits because
1650 labels are restricted to 63 octets or less.  (The 10 and 01 combinations
1651 are reserved for future use.)  The OFFSET field specifies an offset from
1652 the start of the message (i.e., the first octet of the ID field in the
1653 domain header).  A zero offset specifies the first byte of the ID field,
1654 etc.
1655
1656 The compression scheme allows a domain name in a message to be
1657 represented as either:
1658
1659    - a sequence of labels ending in a zero octet
1660
1661    - a pointer
1662
1663    - a sequence of labels ending with a pointer
1664
1665 Pointers can only be used for occurances of a domain name where the
1666 format is not class specific.  If this were not the case, a name server
1667 or resolver would be required to know the format of all RRs it handled.
1668 As yet, there are no such cases, but they may occur in future RDATA
1669 formats.
1670
1671 If a domain name is contained in a part of the message subject to a
1672 length field (such as the RDATA section of an RR), and compression is
1673
1674
1675
1676 Mockapetris                                                    [Page 30]
1677 \f
1678 RFC 1035        Domain Implementation and Specification    November 1987
1679
1680
1681 used, the length of the compressed name is used in the length
1682 calculation, rather than the length of the expanded name.
1683
1684 Programs are free to avoid using pointers in messages they generate,
1685 although this will reduce datagram capacity, and may cause truncation.
1686 However all programs are required to understand arriving messages that
1687 contain pointers.
1688
1689 For example, a datagram might need to use the domain names F.ISI.ARPA,
1690 FOO.F.ISI.ARPA, ARPA, and the root.  Ignoring the other fields of the
1691 message, these domain names might be represented as:
1692
1693        +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
1694     20 |           1           |           F           |
1695        +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
1696     22 |           3           |           I           |
1697        +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
1698     24 |           S           |           I           |
1699        +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
1700     26 |           4           |           A           |
1701        +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
1702     28 |           R           |           P           |
1703        +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
1704     30 |           A           |           0           |
1705        +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
1706
1707        +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
1708     40 |           3           |           F           |
1709        +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
1710     42 |           O           |           O           |
1711        +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
1712     44 | 1  1|                20                       |
1713        +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
1714
1715        +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
1716     64 | 1  1|                26                       |
1717        +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
1718
1719        +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
1720     92 |           0           |                       |
1721        +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
1722
1723 The domain name for F.ISI.ARPA is shown at offset 20.  The domain name
1724 FOO.F.ISI.ARPA is shown at offset 40; this definition uses a pointer to
1725 concatenate a label for FOO to the previously defined F.ISI.ARPA.  The
1726 domain name ARPA is defined at offset 64 using a pointer to the ARPA
1727 component of the name F.ISI.ARPA at 20; note that this pointer relies on
1728 ARPA being the last label in the string at 20.  The root domain name is
1729
1730
1731
1732 Mockapetris                                                    [Page 31]
1733 \f
1734 RFC 1035        Domain Implementation and Specification    November 1987
1735
1736
1737 defined by a single octet of zeros at 92; the root domain name has no
1738 labels.
1739
1740 4.2. Transport
1741
1742 The DNS assumes that messages will be transmitted as datagrams or in a
1743 byte stream carried by a virtual circuit.  While virtual circuits can be
1744 used for any DNS activity, datagrams are preferred for queries due to
1745 their lower overhead and better performance.  Zone refresh activities
1746 must use virtual circuits because of the need for reliable transfer.
1747
1748 The Internet supports name server access using TCP [RFC-793] on server
1749 port 53 (decimal) as well as datagram access using UDP [RFC-768] on UDP
1750 port 53 (decimal).
1751
1752 4.2.1. UDP usage
1753
1754 Messages sent using UDP user server port 53 (decimal).
1755
1756 Messages carried by UDP are restricted to 512 bytes (not counting the IP
1757 or UDP headers).  Longer messages are truncated and the TC bit is set in
1758 the header.
1759
1760 UDP is not acceptable for zone transfers, but is the recommended method
1761 for standard queries in the Internet.  Queries sent using UDP may be
1762 lost, and hence a retransmission strategy is required.  Queries or their
1763 responses may be reordered by the network, or by processing in name
1764 servers, so resolvers should not depend on them being returned in order.
1765
1766 The optimal UDP retransmission policy will vary with performance of the
1767 Internet and the needs of the client, but the following are recommended:
1768
1769    - The client should try other servers and server addresses
1770      before repeating a query to a specific address of a server.
1771
1772    - The retransmission interval should be based on prior
1773      statistics if possible.  Too aggressive retransmission can
1774      easily slow responses for the community at large.  Depending
1775      on how well connected the client is to its expected servers,
1776      the minimum retransmission interval should be 2-5 seconds.
1777
1778 More suggestions on server selection and retransmission policy can be
1779 found in the resolver section of this memo.
1780
1781 4.2.2. TCP usage
1782
1783 Messages sent over TCP connections use server port 53 (decimal).  The
1784 message is prefixed with a two byte length field which gives the message
1785
1786
1787
1788 Mockapetris                                                    [Page 32]
1789 \f
1790 RFC 1035        Domain Implementation and Specification    November 1987
1791
1792
1793 length, excluding the two byte length field.  This length field allows
1794 the low-level processing to assemble a complete message before beginning
1795 to parse it.
1796
1797 Several connection management policies are recommended:
1798
1799    - The server should not block other activities waiting for TCP
1800      data.
1801
1802    - The server should support multiple connections.
1803
1804    - The server should assume that the client will initiate
1805      connection closing, and should delay closing its end of the
1806      connection until all outstanding client requests have been
1807      satisfied.
1808
1809    - If the server needs to close a dormant connection to reclaim
1810      resources, it should wait until the connection has been idle
1811      for a period on the order of two minutes.  In particular, the
1812      server should allow the SOA and AXFR request sequence (which
1813      begins a refresh operation) to be made on a single connection.
1814      Since the server would be unable to answer queries anyway, a
1815      unilateral close or reset may be used instead of a graceful
1816      close.
1817
1818 5. MASTER FILES
1819
1820 Master files are text files that contain RRs in text form.  Since the
1821 contents of a zone can be expressed in the form of a list of RRs a
1822 master file is most often used to define a zone, though it can be used
1823 to list a cache's contents.  Hence, this section first discusses the
1824 format of RRs in a master file, and then the special considerations when
1825 a master file is used to create a zone in some name server.
1826
1827 5.1. Format
1828
1829 The format of these files is a sequence of entries.  Entries are
1830 predominantly line-oriented, though parentheses can be used to continue
1831 a list of items across a line boundary, and text literals can contain
1832 CRLF within the text.  Any combination of tabs and spaces act as a
1833 delimiter between the separate items that make up an entry.  The end of
1834 any line in the master file can end with a comment.  The comment starts
1835 with a ";" (semicolon).
1836
1837 The following entries are defined:
1838
1839     <blank>[<comment>]
1840
1841
1842
1843
1844 Mockapetris                                                    [Page 33]
1845 \f
1846 RFC 1035        Domain Implementation and Specification    November 1987
1847
1848
1849     $ORIGIN <domain-name> [<comment>]
1850
1851     $INCLUDE <file-name> [<domain-name>] [<comment>]
1852
1853     <domain-name><rr> [<comment>]
1854
1855     <blank><rr> [<comment>]
1856
1857 Blank lines, with or without comments, are allowed anywhere in the file.
1858
1859 Two control entries are defined: $ORIGIN and $INCLUDE.  $ORIGIN is
1860 followed by a domain name, and resets the current origin for relative
1861 domain names to the stated name.  $INCLUDE inserts the named file into
1862 the current file, and may optionally specify a domain name that sets the
1863 relative domain name origin for the included file.  $INCLUDE may also
1864 have a comment.  Note that a $INCLUDE entry never changes the relative
1865 origin of the parent file, regardless of changes to the relative origin
1866 made within the included file.
1867
1868 The last two forms represent RRs.  If an entry for an RR begins with a
1869 blank, then the RR is assumed to be owned by the last stated owner.  If
1870 an RR entry begins with a <domain-name>, then the owner name is reset.
1871
1872 <rr> contents take one of the following forms:
1873
1874     [<TTL>] [<class>] <type> <RDATA>
1875
1876     [<class>] [<TTL>] <type> <RDATA>
1877
1878 The RR begins with optional TTL and class fields, followed by a type and
1879 RDATA field appropriate to the type and class.  Class and type use the
1880 standard mnemonics, TTL is a decimal integer.  Omitted class and TTL
1881 values are default to the last explicitly stated values.  Since type and
1882 class mnemonics are disjoint, the parse is unique.  (Note that this
1883 order is different from the order used in examples and the order used in
1884 the actual RRs; the given order allows easier parsing and defaulting.)
1885
1886 <domain-name>s make up a large share of the data in the master file.
1887 The labels in the domain name are expressed as character strings and
1888 separated by dots.  Quoting conventions allow arbitrary characters to be
1889 stored in domain names.  Domain names that end in a dot are called
1890 absolute, and are taken as complete.  Domain names which do not end in a
1891 dot are called relative; the actual domain name is the concatenation of
1892 the relative part with an origin specified in a $ORIGIN, $INCLUDE, or as
1893 an argument to the master file loading routine.  A relative name is an
1894 error when no origin is available.
1895
1896
1897
1898
1899
1900 Mockapetris                                                    [Page 34]
1901 \f
1902 RFC 1035        Domain Implementation and Specification    November 1987
1903
1904
1905 <character-string> is expressed in one or two ways: as a contiguous set
1906 of characters without interior spaces, or as a string beginning with a "
1907 and ending with a ".  Inside a " delimited string any character can
1908 occur, except for a " itself, which must be quoted using \ (back slash).
1909
1910 Because these files are text files several special encodings are
1911 necessary to allow arbitrary data to be loaded.  In particular:
1912
1913                 of the root.
1914
1915 @               A free standing @ is used to denote the current origin.
1916
1917 \X              where X is any character other than a digit (0-9), is
1918                 used to quote that character so that its special meaning
1919                 does not apply.  For example, "\." can be used to place
1920                 a dot character in a label.
1921
1922 \DDD            where each D is a digit is the octet corresponding to
1923                 the decimal number described by DDD.  The resulting
1924                 octet is assumed to be text and is not checked for
1925                 special meaning.
1926
1927 ( )             Parentheses are used to group data that crosses a line
1928                 boundary.  In effect, line terminations are not
1929                 recognized within parentheses.
1930
1931 ;               Semicolon is used to start a comment; the remainder of
1932                 the line is ignored.
1933
1934 5.2. Use of master files to define zones
1935
1936 When a master file is used to load a zone, the operation should be
1937 suppressed if any errors are encountered in the master file.  The
1938 rationale for this is that a single error can have widespread
1939 consequences.  For example, suppose that the RRs defining a delegation
1940 have syntax errors; then the server will return authoritative name
1941 errors for all names in the subzone (except in the case where the
1942 subzone is also present on the server).
1943
1944 Several other validity checks that should be performed in addition to
1945 insuring that the file is syntactically correct:
1946
1947    1. All RRs in the file should have the same class.
1948
1949    2. Exactly one SOA RR should be present at the top of the zone.
1950
1951    3. If delegations are present and glue information is required,
1952       it should be present.
1953
1954
1955
1956 Mockapetris                                                    [Page 35]
1957 \f
1958 RFC 1035        Domain Implementation and Specification    November 1987
1959
1960
1961    4. Information present outside of the authoritative nodes in the
1962       zone should be glue information, rather than the result of an
1963       origin or similar error.
1964
1965 5.3. Master file example
1966
1967 The following is an example file which might be used to define the
1968 ISI.EDU zone.and is loaded with an origin of ISI.EDU:
1969
1970 @   IN  SOA     VENERA      Action\.domains (
1971                                  20     ; SERIAL
1972                                  7200   ; REFRESH
1973                                  600    ; RETRY
1974                                  3600000; EXPIRE
1975                                  60)    ; MINIMUM
1976
1977         NS      A.ISI.EDU.
1978         NS      VENERA
1979         NS      VAXA
1980         MX      10      VENERA
1981         MX      20      VAXA
1982
1983 A       A       26.3.0.103
1984
1985 VENERA  A       10.1.0.52
1986         A       128.9.0.32
1987
1988 VAXA    A       10.2.0.27
1989         A       128.9.0.33
1990
1991
1992 $INCLUDE <SUBSYS>ISI-MAILBOXES.TXT
1993
1994 Where the file <SUBSYS>ISI-MAILBOXES.TXT is:
1995
1996     MOE     MB      A.ISI.EDU.
1997     LARRY   MB      A.ISI.EDU.
1998     CURLEY  MB      A.ISI.EDU.
1999     STOOGES MG      MOE
2000             MG      LARRY
2001             MG      CURLEY
2002
2003 Note the use of the \ character in the SOA RR to specify the responsible
2004 person mailbox "Action.domains@E.ISI.EDU".
2005
2006
2007
2008
2009
2010
2011
2012 Mockapetris                                                    [Page 36]
2013 \f
2014 RFC 1035        Domain Implementation and Specification    November 1987
2015
2016
2017 6. NAME SERVER IMPLEMENTATION
2018
2019 6.1. Architecture
2020
2021 The optimal structure for the name server will depend on the host
2022 operating system and whether the name server is integrated with resolver
2023 operations, either by supporting recursive service, or by sharing its
2024 database with a resolver.  This section discusses implementation
2025 considerations for a name server which shares a database with a
2026 resolver, but most of these concerns are present in any name server.
2027
2028 6.1.1. Control
2029
2030 A name server must employ multiple concurrent activities, whether they
2031 are implemented as separate tasks in the host's OS or multiplexing
2032 inside a single name server program.  It is simply not acceptable for a
2033 name server to block the service of UDP requests while it waits for TCP
2034 data for refreshing or query activities.  Similarly, a name server
2035 should not attempt to provide recursive service without processing such
2036 requests in parallel, though it may choose to serialize requests from a
2037 single client, or to regard identical requests from the same client as
2038 duplicates.  A name server should not substantially delay requests while
2039 it reloads a zone from master files or while it incorporates a newly
2040 refreshed zone into its database.
2041
2042 6.1.2. Database
2043
2044 While name server implementations are free to use any internal data
2045 structures they choose, the suggested structure consists of three major
2046 parts:
2047
2048    - A "catalog" data structure which lists the zones available to
2049      this server, and a "pointer" to the zone data structure.  The
2050      main purpose of this structure is to find the nearest ancestor
2051      zone, if any, for arriving standard queries.
2052
2053    - Separate data structures for each of the zones held by the
2054      name server.
2055
2056    - A data structure for cached data. (or perhaps separate caches
2057      for different classes)
2058
2059 All of these data structures can be implemented an identical tree
2060 structure format, with different data chained off the nodes in different
2061 parts: in the catalog the data is pointers to zones, while in the zone
2062 and cache data structures, the data will be RRs.  In designing the tree
2063 framework the designer should recognize that query processing will need
2064 to traverse the tree using case-insensitive label comparisons; and that
2065
2066
2067
2068 Mockapetris                                                    [Page 37]
2069 \f
2070 RFC 1035        Domain Implementation and Specification    November 1987
2071
2072
2073 in real data, a few nodes have a very high branching factor (100-1000 or
2074 more), but the vast majority have a very low branching factor (0-1).
2075
2076 One way to solve the case problem is to store the labels for each node
2077 in two pieces: a standardized-case representation of the label where all
2078 ASCII characters are in a single case, together with a bit mask that
2079 denotes which characters are actually of a different case.  The
2080 branching factor diversity can be handled using a simple linked list for
2081 a node until the branching factor exceeds some threshold, and
2082 transitioning to a hash structure after the threshold is exceeded.  In
2083 any case, hash structures used to store tree sections must insure that
2084 hash functions and procedures preserve the casing conventions of the
2085 DNS.
2086
2087 The use of separate structures for the different parts of the database
2088 is motivated by several factors:
2089
2090    - The catalog structure can be an almost static structure that
2091      need change only when the system administrator changes the
2092      zones supported by the server.  This structure can also be
2093      used to store parameters used to control refreshing
2094      activities.
2095
2096    - The individual data structures for zones allow a zone to be
2097      replaced simply by changing a pointer in the catalog.  Zone
2098      refresh operations can build a new structure and, when
2099      complete, splice it into the database via a simple pointer
2100      replacement.  It is very important that when a zone is
2101      refreshed, queries should not use old and new data
2102      simultaneously.
2103
2104    - With the proper search procedures, authoritative data in zones
2105      will always "hide", and hence take precedence over, cached
2106      data.
2107
2108    - Errors in zone definitions that cause overlapping zones, etc.,
2109      may cause erroneous responses to queries, but problem
2110      determination is simplified, and the contents of one "bad"
2111      zone can't corrupt another.
2112
2113    - Since the cache is most frequently updated, it is most
2114      vulnerable to corruption during system restarts.  It can also
2115      become full of expired RR data.  In either case, it can easily
2116      be discarded without disturbing zone data.
2117
2118 A major aspect of database design is selecting a structure which allows
2119 the name server to deal with crashes of the name server's host.  State
2120 information which a name server should save across system crashes
2121
2122
2123
2124 Mockapetris                                                    [Page 38]
2125 \f
2126 RFC 1035        Domain Implementation and Specification    November 1987
2127
2128
2129 includes the catalog structure (including the state of refreshing for
2130 each zone) and the zone data itself.
2131
2132 6.1.3. Time
2133
2134 Both the TTL data for RRs and the timing data for refreshing activities
2135 depends on 32 bit timers in units of seconds.  Inside the database,
2136 refresh timers and TTLs for cached data conceptually "count down", while
2137 data in the zone stays with constant TTLs.
2138
2139 A recommended implementation strategy is to store time in two ways:  as
2140 a relative increment and as an absolute time.  One way to do this is to
2141 use positive 32 bit numbers for one type and negative numbers for the
2142 other.  The RRs in zones use relative times; the refresh timers and
2143 cache data use absolute times.  Absolute numbers are taken with respect
2144 to some known origin and converted to relative values when placed in the
2145 response to a query.  When an absolute TTL is negative after conversion
2146 to relative, then the data is expired and should be ignored.
2147
2148 6.2. Standard query processing
2149
2150 The major algorithm for standard query processing is presented in
2151 [RFC-1034].
2152
2153 When processing queries with QCLASS=*, or some other QCLASS which
2154 matches multiple classes, the response should never be authoritative
2155 unless the server can guarantee that the response covers all classes.
2156
2157 When composing a response, RRs which are to be inserted in the
2158 additional section, but duplicate RRs in the answer or authority
2159 sections, may be omitted from the additional section.
2160
2161 When a response is so long that truncation is required, the truncation
2162 should start at the end of the response and work forward in the
2163 datagram.  Thus if there is any data for the authority section, the
2164 answer section is guaranteed to be unique.
2165
2166 The MINIMUM value in the SOA should be used to set a floor on the TTL of
2167 data distributed from a zone.  This floor function should be done when
2168 the data is copied into a response.  This will allow future dynamic
2169 update protocols to change the SOA MINIMUM field without ambiguous
2170 semantics.
2171
2172 6.3. Zone refresh and reload processing
2173
2174 In spite of a server's best efforts, it may be unable to load zone data
2175 from a master file due to syntax errors, etc., or be unable to refresh a
2176 zone within the its expiration parameter.  In this case, the name server
2177
2178
2179
2180 Mockapetris                                                    [Page 39]
2181 \f
2182 RFC 1035        Domain Implementation and Specification    November 1987
2183
2184
2185 should answer queries as if it were not supposed to possess the zone.
2186
2187 If a master is sending a zone out via AXFR, and a new version is created
2188 during the transfer, the master should continue to send the old version
2189 if possible.  In any case, it should never send part of one version and
2190 part of another.  If completion is not possible, the master should reset
2191 the connection on which the zone transfer is taking place.
2192
2193 6.4. Inverse queries (Optional)
2194
2195 Inverse queries are an optional part of the DNS.  Name servers are not
2196 required to support any form of inverse queries.  If a name server
2197 receives an inverse query that it does not support, it returns an error
2198 response with the "Not Implemented" error set in the header.  While
2199 inverse query support is optional, all name servers must be at least
2200 able to return the error response.
2201
2202 6.4.1. The contents of inverse queries and responses          Inverse
2203 queries reverse the mappings performed by standard query operations;
2204 while a standard query maps a domain name to a resource, an inverse
2205 query maps a resource to a domain name.  For example, a standard query
2206 might bind a domain name to a host address; the corresponding inverse
2207 query binds the host address to a domain name.
2208
2209 Inverse queries take the form of a single RR in the answer section of
2210 the message, with an empty question section.  The owner name of the
2211 query RR and its TTL are not significant.  The response carries
2212 questions in the question section which identify all names possessing
2213 the query RR WHICH THE NAME SERVER KNOWS.  Since no name server knows
2214 about all of the domain name space, the response can never be assumed to
2215 be complete.  Thus inverse queries are primarily useful for database
2216 management and debugging activities.  Inverse queries are NOT an
2217 acceptable method of mapping host addresses to host names; use the IN-
2218 ADDR.ARPA domain instead.
2219
2220 Where possible, name servers should provide case-insensitive comparisons
2221 for inverse queries.  Thus an inverse query asking for an MX RR of
2222 "Venera.isi.edu" should get the same response as a query for
2223 "VENERA.ISI.EDU"; an inverse query for HINFO RR "IBM-PC UNIX" should
2224 produce the same result as an inverse query for "IBM-pc unix".  However,
2225 this cannot be guaranteed because name servers may possess RRs that
2226 contain character strings but the name server does not know that the
2227 data is character.
2228
2229 When a name server processes an inverse query, it either returns:
2230
2231    1. zero, one, or multiple domain names for the specified
2232       resource as QNAMEs in the question section
2233
2234
2235
2236 Mockapetris                                                    [Page 40]
2237 \f
2238 RFC 1035        Domain Implementation and Specification    November 1987
2239
2240
2241    2. an error code indicating that the name server doesn't support
2242       inverse mapping of the specified resource type.
2243
2244 When the response to an inverse query contains one or more QNAMEs, the
2245 owner name and TTL of the RR in the answer section which defines the
2246 inverse query is modified to exactly match an RR found at the first
2247 QNAME.
2248
2249 RRs returned in the inverse queries cannot be cached using the same
2250 mechanism as is used for the replies to standard queries.  One reason
2251 for this is that a name might have multiple RRs of the same type, and
2252 only one would appear.  For example, an inverse query for a single
2253 address of a multiply homed host might create the impression that only
2254 one address existed.
2255
2256 6.4.2. Inverse query and response example          The overall structure
2257 of an inverse query for retrieving the domain name that corresponds to
2258 Internet address 10.1.0.52 is shown below:
2259
2260                          +-----------------------------------------+
2261            Header        |          OPCODE=IQUERY, ID=997          |
2262                          +-----------------------------------------+
2263           Question       |                 <empty>                 |
2264                          +-----------------------------------------+
2265            Answer        |        <anyname> A IN 10.1.0.52         |
2266                          +-----------------------------------------+
2267           Authority      |                 <empty>                 |
2268                          +-----------------------------------------+
2269          Additional      |                 <empty>                 |
2270                          +-----------------------------------------+
2271
2272 This query asks for a question whose answer is the Internet style
2273 address 10.1.0.52.  Since the owner name is not known, any domain name
2274 can be used as a placeholder (and is ignored).  A single octet of zero,
2275 signifying the root, is usually used because it minimizes the length of
2276 the message.  The TTL of the RR is not significant.  The response to
2277 this query might be:
2278
2279
2280
2281
2282
2283
2284
2285
2286
2287
2288
2289
2290
2291
2292 Mockapetris                                                    [Page 41]
2293 \f
2294 RFC 1035        Domain Implementation and Specification    November 1987
2295
2296
2297                          +-----------------------------------------+
2298            Header        |         OPCODE=RESPONSE, ID=997         |
2299                          +-----------------------------------------+
2300           Question       |QTYPE=A, QCLASS=IN, QNAME=VENERA.ISI.EDU |
2301                          +-----------------------------------------+
2302            Answer        |  VENERA.ISI.EDU  A IN 10.1.0.52         |
2303                          +-----------------------------------------+
2304           Authority      |                 <empty>                 |
2305                          +-----------------------------------------+
2306          Additional      |                 <empty>                 |
2307                          +-----------------------------------------+
2308
2309 Note that the QTYPE in a response to an inverse query is the same as the
2310 TYPE field in the answer section of the inverse query.  Responses to
2311 inverse queries may contain multiple questions when the inverse is not
2312 unique.  If the question section in the response is not empty, then the
2313 RR in the answer section is modified to correspond to be an exact copy
2314 of an RR at the first QNAME.
2315
2316 6.4.3. Inverse query processing
2317
2318 Name servers that support inverse queries can support these operations
2319 through exhaustive searches of their databases, but this becomes
2320 impractical as the size of the database increases.  An alternative
2321 approach is to invert the database according to the search key.
2322
2323 For name servers that support multiple zones and a large amount of data,
2324 the recommended approach is separate inversions for each zone.  When a
2325 particular zone is changed during a refresh, only its inversions need to
2326 be redone.
2327
2328 Support for transfer of this type of inversion may be included in future
2329 versions of the domain system, but is not supported in this version.
2330
2331 6.5. Completion queries and responses
2332
2333 The optional completion services described in RFC-882 and RFC-883 have
2334 been deleted.  Redesigned services may become available in the future.
2335
2336
2337
2338
2339
2340
2341
2342
2343
2344
2345
2346
2347
2348 Mockapetris                                                    [Page 42]
2349 \f
2350 RFC 1035        Domain Implementation and Specification    November 1987
2351
2352
2353 7. RESOLVER IMPLEMENTATION
2354
2355 The top levels of the recommended resolver algorithm are discussed in
2356 [RFC-1034].  This section discusses implementation details assuming the
2357 database structure suggested in the name server implementation section
2358 of this memo.
2359
2360 7.1. Transforming a user request into a query
2361
2362 The first step a resolver takes is to transform the client's request,
2363 stated in a format suitable to the local OS, into a search specification
2364 for RRs at a specific name which match a specific QTYPE and QCLASS.
2365 Where possible, the QTYPE and QCLASS should correspond to a single type
2366 and a single class, because this makes the use of cached data much
2367 simpler.  The reason for this is that the presence of data of one type
2368 in a cache doesn't confirm the existence or non-existence of data of
2369 other types, hence the only way to be sure is to consult an
2370 authoritative source.  If QCLASS=* is used, then authoritative answers
2371 won't be available.
2372
2373 Since a resolver must be able to multiplex multiple requests if it is to
2374 perform its function efficiently, each pending request is usually
2375 represented in some block of state information.  This state block will
2376 typically contain:
2377
2378    - A timestamp indicating the time the request began.
2379      The timestamp is used to decide whether RRs in the database
2380      can be used or are out of date.  This timestamp uses the
2381      absolute time format previously discussed for RR storage in
2382      zones and caches.  Note that when an RRs TTL indicates a
2383      relative time, the RR must be timely, since it is part of a
2384      zone.  When the RR has an absolute time, it is part of a
2385      cache, and the TTL of the RR is compared against the timestamp
2386      for the start of the request.
2387
2388      Note that using the timestamp is superior to using a current
2389      time, since it allows RRs with TTLs of zero to be entered in
2390      the cache in the usual manner, but still used by the current
2391      request, even after intervals of many seconds due to system
2392      load, query retransmission timeouts, etc.
2393
2394    - Some sort of parameters to limit the amount of work which will
2395      be performed for this request.
2396
2397      The amount of work which a resolver will do in response to a
2398      client request must be limited to guard against errors in the
2399      database, such as circular CNAME references, and operational
2400      problems, such as network partition which prevents the
2401
2402
2403
2404 Mockapetris                                                    [Page 43]
2405 \f
2406 RFC 1035        Domain Implementation and Specification    November 1987
2407
2408
2409      resolver from accessing the name servers it needs.  While
2410      local limits on the number of times a resolver will retransmit
2411      a particular query to a particular name server address are
2412      essential, the resolver should have a global per-request
2413      counter to limit work on a single request.  The counter should
2414      be set to some initial value and decremented whenever the
2415      resolver performs any action (retransmission timeout,
2416      retransmission, etc.)  If the counter passes zero, the request
2417      is terminated with a temporary error.
2418
2419      Note that if the resolver structure allows one request to
2420      start others in parallel, such as when the need to access a
2421      name server for one request causes a parallel resolve for the
2422      name server's addresses, the spawned request should be started
2423      with a lower counter.  This prevents circular references in
2424      the database from starting a chain reaction of resolver
2425      activity.
2426
2427    - The SLIST data structure discussed in [RFC-1034].
2428
2429      This structure keeps track of the state of a request if it
2430      must wait for answers from foreign name servers.
2431
2432 7.2. Sending the queries
2433
2434 As described in [RFC-1034], the basic task of the resolver is to
2435 formulate a query which will answer the client's request and direct that
2436 query to name servers which can provide the information.  The resolver
2437 will usually only have very strong hints about which servers to ask, in
2438 the form of NS RRs, and may have to revise the query, in response to
2439 CNAMEs, or revise the set of name servers the resolver is asking, in
2440 response to delegation responses which point the resolver to name
2441 servers closer to the desired information.  In addition to the
2442 information requested by the client, the resolver may have to call upon
2443 its own services to determine the address of name servers it wishes to
2444 contact.
2445
2446 In any case, the model used in this memo assumes that the resolver is
2447 multiplexing attention between multiple requests, some from the client,
2448 and some internally generated.  Each request is represented by some
2449 state information, and the desired behavior is that the resolver
2450 transmit queries to name servers in a way that maximizes the probability
2451 that the request is answered, minimizes the time that the request takes,
2452 and avoids excessive transmissions.  The key algorithm uses the state
2453 information of the request to select the next name server address to
2454 query, and also computes a timeout which will cause the next action
2455 should a response not arrive.  The next action will usually be a
2456 transmission to some other server, but may be a temporary error to the
2457
2458
2459
2460 Mockapetris                                                    [Page 44]
2461 \f
2462 RFC 1035        Domain Implementation and Specification    November 1987
2463
2464
2465 client.
2466
2467 The resolver always starts with a list of server names to query (SLIST).
2468 This list will be all NS RRs which correspond to the nearest ancestor
2469 zone that the resolver knows about.  To avoid startup problems, the
2470 resolver should have a set of default servers which it will ask should
2471 it have no current NS RRs which are appropriate.  The resolver then adds
2472 to SLIST all of the known addresses for the name servers, and may start
2473 parallel requests to acquire the addresses of the servers when the
2474 resolver has the name, but no addresses, for the name servers.
2475
2476 To complete initialization of SLIST, the resolver attaches whatever
2477 history information it has to the each address in SLIST.  This will
2478 usually consist of some sort of weighted averages for the response time
2479 of the address, and the batting average of the address (i.e., how often
2480 the address responded at all to the request).  Note that this
2481 information should be kept on a per address basis, rather than on a per
2482 name server basis, because the response time and batting average of a
2483 particular server may vary considerably from address to address.  Note
2484 also that this information is actually specific to a resolver address /
2485 server address pair, so a resolver with multiple addresses may wish to
2486 keep separate histories for each of its addresses.  Part of this step
2487 must deal with addresses which have no such history; in this case an
2488 expected round trip time of 5-10 seconds should be the worst case, with
2489 lower estimates for the same local network, etc.
2490
2491 Note that whenever a delegation is followed, the resolver algorithm
2492 reinitializes SLIST.
2493
2494 The information establishes a partial ranking of the available name
2495 server addresses.  Each time an address is chosen and the state should
2496 be altered to prevent its selection again until all other addresses have
2497 been tried.  The timeout for each transmission should be 50-100% greater
2498 than the average predicted value to allow for variance in response.
2499
2500 Some fine points:
2501
2502    - The resolver may encounter a situation where no addresses are
2503      available for any of the name servers named in SLIST, and
2504      where the servers in the list are precisely those which would
2505      normally be used to look up their own addresses.  This
2506      situation typically occurs when the glue address RRs have a
2507      smaller TTL than the NS RRs marking delegation, or when the
2508      resolver caches the result of a NS search.  The resolver
2509      should detect this condition and restart the search at the
2510      next ancestor zone, or alternatively at the root.
2511
2512
2513
2514
2515
2516 Mockapetris                                                    [Page 45]
2517 \f
2518 RFC 1035        Domain Implementation and Specification    November 1987
2519
2520
2521    - If a resolver gets a server error or other bizarre response
2522      from a name server, it should remove it from SLIST, and may
2523      wish to schedule an immediate transmission to the next
2524      candidate server address.
2525
2526 7.3. Processing responses
2527
2528 The first step in processing arriving response datagrams is to parse the
2529 response.  This procedure should include:
2530
2531    - Check the header for reasonableness.  Discard datagrams which
2532      are queries when responses are expected.
2533
2534    - Parse the sections of the message, and insure that all RRs are
2535      correctly formatted.
2536
2537    - As an optional step, check the TTLs of arriving data looking
2538      for RRs with excessively long TTLs.  If a RR has an
2539      excessively long TTL, say greater than 1 week, either discard
2540      the whole response, or limit all TTLs in the response to 1
2541      week.
2542
2543 The next step is to match the response to a current resolver request.
2544 The recommended strategy is to do a preliminary matching using the ID
2545 field in the domain header, and then to verify that the question section
2546 corresponds to the information currently desired.  This requires that
2547 the transmission algorithm devote several bits of the domain ID field to
2548 a request identifier of some sort.  This step has several fine points:
2549
2550    - Some name servers send their responses from different
2551      addresses than the one used to receive the query.  That is, a
2552      resolver cannot rely that a response will come from the same
2553      address which it sent the corresponding query to.  This name
2554      server bug is typically encountered in UNIX systems.
2555
2556    - If the resolver retransmits a particular request to a name
2557      server it should be able to use a response from any of the
2558      transmissions.  However, if it is using the response to sample
2559      the round trip time to access the name server, it must be able
2560      to determine which transmission matches the response (and keep
2561      transmission times for each outgoing message), or only
2562      calculate round trip times based on initial transmissions.
2563
2564    - A name server will occasionally not have a current copy of a
2565      zone which it should have according to some NS RRs.  The
2566      resolver should simply remove the name server from the current
2567      SLIST, and continue.
2568
2569
2570
2571
2572 Mockapetris                                                    [Page 46]
2573 \f
2574 RFC 1035        Domain Implementation and Specification    November 1987
2575
2576
2577 7.4. Using the cache
2578
2579 In general, we expect a resolver to cache all data which it receives in
2580 responses since it may be useful in answering future client requests.
2581 However, there are several types of data which should not be cached:
2582
2583    - When several RRs of the same type are available for a
2584      particular owner name, the resolver should either cache them
2585      all or none at all.  When a response is truncated, and a
2586      resolver doesn't know whether it has a complete set, it should
2587      not cache a possibly partial set of RRs.
2588
2589    - Cached data should never be used in preference to
2590      authoritative data, so if caching would cause this to happen
2591      the data should not be cached.
2592
2593    - The results of an inverse query should not be cached.
2594
2595    - The results of standard queries where the QNAME contains "*"
2596      labels if the data might be used to construct wildcards.  The
2597      reason is that the cache does not necessarily contain existing
2598      RRs or zone boundary information which is necessary to
2599      restrict the application of the wildcard RRs.
2600
2601    - RR data in responses of dubious reliability.  When a resolver
2602      receives unsolicited responses or RR data other than that
2603      requested, it should discard it without caching it.  The basic
2604      implication is that all sanity checks on a packet should be
2605      performed before any of it is cached.
2606
2607 In a similar vein, when a resolver has a set of RRs for some name in a
2608 response, and wants to cache the RRs, it should check its cache for
2609 already existing RRs.  Depending on the circumstances, either the data
2610 in the response or the cache is preferred, but the two should never be
2611 combined.  If the data in the response is from authoritative data in the
2612 answer section, it is always preferred.
2613
2614 8. MAIL SUPPORT
2615
2616 The domain system defines a standard for mapping mailboxes into domain
2617 names, and two methods for using the mailbox information to derive mail
2618 routing information.  The first method is called mail exchange binding
2619 and the other method is mailbox binding.  The mailbox encoding standard
2620 and mail exchange binding are part of the DNS official protocol, and are
2621 the recommended method for mail routing in the Internet.  Mailbox
2622 binding is an experimental feature which is still under development and
2623 subject to change.
2624
2625
2626
2627
2628 Mockapetris                                                    [Page 47]
2629 \f
2630 RFC 1035        Domain Implementation and Specification    November 1987
2631
2632
2633 The mailbox encoding standard assumes a mailbox name of the form
2634 "<local-part>@<mail-domain>".  While the syntax allowed in each of these
2635 sections varies substantially between the various mail internets, the
2636 preferred syntax for the ARPA Internet is given in [RFC-822].
2637
2638 The DNS encodes the <local-part> as a single label, and encodes the
2639 <mail-domain> as a domain name.  The single label from the <local-part>
2640 is prefaced to the domain name from <mail-domain> to form the domain
2641 name corresponding to the mailbox.  Thus the mailbox HOSTMASTER@SRI-
2642 NIC.ARPA is mapped into the domain name HOSTMASTER.SRI-NIC.ARPA.  If the
2643 <local-part> contains dots or other special characters, its
2644 representation in a master file will require the use of backslash
2645 quoting to ensure that the domain name is properly encoded.  For
2646 example, the mailbox Action.domains@ISI.EDU would be represented as
2647 Action\.domains.ISI.EDU.
2648
2649 8.1. Mail exchange binding
2650
2651 Mail exchange binding uses the <mail-domain> part of a mailbox
2652 specification to determine where mail should be sent.  The <local-part>
2653 is not even consulted.  [RFC-974] specifies this method in detail, and
2654 should be consulted before attempting to use mail exchange support.
2655
2656 One of the advantages of this method is that it decouples mail
2657 destination naming from the hosts used to support mail service, at the
2658 cost of another layer of indirection in the lookup function.  However,
2659 the addition layer should eliminate the need for complicated "%", "!",
2660 etc encodings in <local-part>.
2661
2662 The essence of the method is that the <mail-domain> is used as a domain
2663 name to locate type MX RRs which list hosts willing to accept mail for
2664 <mail-domain>, together with preference values which rank the hosts
2665 according to an order specified by the administrators for <mail-domain>.
2666
2667 In this memo, the <mail-domain> ISI.EDU is used in examples, together
2668 with the hosts VENERA.ISI.EDU and VAXA.ISI.EDU as mail exchanges for
2669 ISI.EDU.  If a mailer had a message for Mockapetris@ISI.EDU, it would
2670 route it by looking up MX RRs for ISI.EDU.  The MX RRs at ISI.EDU name
2671 VENERA.ISI.EDU and VAXA.ISI.EDU, and type A queries can find the host
2672 addresses.
2673
2674 8.2. Mailbox binding (Experimental)
2675
2676 In mailbox binding, the mailer uses the entire mail destination
2677 specification to construct a domain name.  The encoded domain name for
2678 the mailbox is used as the QNAME field in a QTYPE=MAILB query.
2679
2680 Several outcomes are possible for this query:
2681
2682
2683
2684 Mockapetris                                                    [Page 48]
2685 \f
2686 RFC 1035        Domain Implementation and Specification    November 1987
2687
2688
2689    1. The query can return a name error indicating that the mailbox
2690       does not exist as a domain name.
2691
2692       In the long term, this would indicate that the specified
2693       mailbox doesn't exist.  However, until the use of mailbox
2694       binding is universal, this error condition should be
2695       interpreted to mean that the organization identified by the
2696       global part does not support mailbox binding.  The
2697       appropriate procedure is to revert to exchange binding at
2698       this point.
2699
2700    2. The query can return a Mail Rename (MR) RR.
2701
2702       The MR RR carries new mailbox specification in its RDATA
2703       field.  The mailer should replace the old mailbox with the
2704       new one and retry the operation.
2705
2706    3. The query can return a MB RR.
2707
2708       The MB RR carries a domain name for a host in its RDATA
2709       field.  The mailer should deliver the message to that host
2710       via whatever protocol is applicable, e.g., b,SMTP.
2711
2712    4. The query can return one or more Mail Group (MG) RRs.
2713
2714       This condition means that the mailbox was actually a mailing
2715       list or mail group, rather than a single mailbox.  Each MG RR
2716       has a RDATA field that identifies a mailbox that is a member
2717       of the group.  The mailer should deliver a copy of the
2718       message to each member.
2719
2720    5. The query can return a MB RR as well as one or more MG RRs.
2721
2722       This condition means the the mailbox was actually a mailing
2723       list.  The mailer can either deliver the message to the host
2724       specified by the MB RR, which will in turn do the delivery to
2725       all members, or the mailer can use the MG RRs to do the
2726       expansion itself.
2727
2728 In any of these cases, the response may include a Mail Information
2729 (MINFO) RR.  This RR is usually associated with a mail group, but is
2730 legal with a MB.  The MINFO RR identifies two mailboxes.  One of these
2731 identifies a responsible person for the original mailbox name.  This
2732 mailbox should be used for requests to be added to a mail group, etc.
2733 The second mailbox name in the MINFO RR identifies a mailbox that should
2734 receive error messages for mail failures.  This is particularly
2735 appropriate for mailing lists when errors in member names should be
2736 reported to a person other than the one who sends a message to the list.
2737
2738
2739
2740 Mockapetris                                                    [Page 49]
2741 \f
2742 RFC 1035        Domain Implementation and Specification    November 1987
2743
2744
2745 New fields may be added to this RR in the future.
2746
2747
2748 9. REFERENCES and BIBLIOGRAPHY
2749
2750 [Dyer 87]       S. Dyer, F. Hsu, "Hesiod", Project Athena
2751                 Technical Plan - Name Service, April 1987, version 1.9.
2752
2753                 Describes the fundamentals of the Hesiod name service.
2754
2755 [IEN-116]       J. Postel, "Internet Name Server", IEN-116,
2756                 USC/Information Sciences Institute, August 1979.
2757
2758                 A name service obsoleted by the Domain Name System, but
2759                 still in use.
2760
2761 [Quarterman 86] J. Quarterman, and J. Hoskins, "Notable Computer Networks",
2762                 Communications of the ACM, October 1986, volume 29, number
2763                 10.
2764
2765 [RFC-742]       K. Harrenstien, "NAME/FINGER", RFC-742, Network
2766                 Information Center, SRI International, December 1977.
2767
2768 [RFC-768]       J. Postel, "User Datagram Protocol", RFC-768,
2769                 USC/Information Sciences Institute, August 1980.
2770
2771 [RFC-793]       J. Postel, "Transmission Control Protocol", RFC-793,
2772                 USC/Information Sciences Institute, September 1981.
2773
2774 [RFC-799]       D. Mills, "Internet Name Domains", RFC-799, COMSAT,
2775                 September 1981.
2776
2777                 Suggests introduction of a hierarchy in place of a flat
2778                 name space for the Internet.
2779
2780 [RFC-805]       J. Postel, "Computer Mail Meeting Notes", RFC-805,
2781                 USC/Information Sciences Institute, February 1982.
2782
2783 [RFC-810]       E. Feinler, K. Harrenstien, Z. Su, and V. White, "DOD
2784                 Internet Host Table Specification", RFC-810, Network
2785                 Information Center, SRI International, March 1982.
2786
2787                 Obsolete.  See RFC-952.
2788
2789 [RFC-811]       K. Harrenstien, V. White, and E. Feinler, "Hostnames
2790                 Server", RFC-811, Network Information Center, SRI
2791                 International, March 1982.
2792
2793
2794
2795
2796 Mockapetris                                                    [Page 50]
2797 \f
2798 RFC 1035        Domain Implementation and Specification    November 1987
2799
2800
2801                 Obsolete.  See RFC-953.
2802
2803 [RFC-812]       K. Harrenstien, and V. White, "NICNAME/WHOIS", RFC-812,
2804                 Network Information Center, SRI International, March
2805                 1982.
2806
2807 [RFC-819]       Z. Su, and J. Postel, "The Domain Naming Convention for
2808                 Internet User Applications", RFC-819, Network
2809                 Information Center, SRI International, August 1982.
2810
2811                 Early thoughts on the design of the domain system.
2812                 Current implementation is completely different.
2813
2814 [RFC-821]       J. Postel, "Simple Mail Transfer Protocol", RFC-821,
2815                 USC/Information Sciences Institute, August 1980.
2816
2817 [RFC-830]       Z. Su, "A Distributed System for Internet Name Service",
2818                 RFC-830, Network Information Center, SRI International,
2819                 October 1982.
2820
2821                 Early thoughts on the design of the domain system.
2822                 Current implementation is completely different.
2823
2824 [RFC-882]       P. Mockapetris, "Domain names - Concepts and
2825                 Facilities," RFC-882, USC/Information Sciences
2826                 Institute, November 1983.
2827
2828                 Superceeded by this memo.
2829
2830 [RFC-883]       P. Mockapetris, "Domain names - Implementation and
2831                 Specification," RFC-883, USC/Information Sciences
2832                 Institute, November 1983.
2833
2834                 Superceeded by this memo.
2835
2836 [RFC-920]       J. Postel and J. Reynolds, "Domain Requirements",
2837                 RFC-920, USC/Information Sciences Institute,
2838                 October 1984.
2839
2840                 Explains the naming scheme for top level domains.
2841
2842 [RFC-952]       K. Harrenstien, M. Stahl, E. Feinler, "DoD Internet Host
2843                 Table Specification", RFC-952, SRI, October 1985.
2844
2845                 Specifies the format of HOSTS.TXT, the host/address
2846                 table replaced by the DNS.
2847
2848
2849
2850
2851
2852 Mockapetris                                                    [Page 51]
2853 \f
2854 RFC 1035        Domain Implementation and Specification    November 1987
2855
2856
2857 [RFC-953]       K. Harrenstien, M. Stahl, E. Feinler, "HOSTNAME Server",
2858                 RFC-953, SRI, October 1985.
2859
2860                 This RFC contains the official specification of the
2861                 hostname server protocol, which is obsoleted by the DNS.
2862                 This TCP based protocol accesses information stored in
2863                 the RFC-952 format, and is used to obtain copies of the
2864                 host table.
2865
2866 [RFC-973]       P. Mockapetris, "Domain System Changes and
2867                 Observations", RFC-973, USC/Information Sciences
2868                 Institute, January 1986.
2869
2870                 Describes changes to RFC-882 and RFC-883 and reasons for
2871                 them.
2872
2873 [RFC-974]       C. Partridge, "Mail routing and the domain system",
2874                 RFC-974, CSNET CIC BBN Labs, January 1986.
2875
2876                 Describes the transition from HOSTS.TXT based mail
2877                 addressing to the more powerful MX system used with the
2878                 domain system.
2879
2880 [RFC-1001]      NetBIOS Working Group, "Protocol standard for a NetBIOS
2881                 service on a TCP/UDP transport: Concepts and Methods",
2882                 RFC-1001, March 1987.
2883
2884                 This RFC and RFC-1002 are a preliminary design for
2885                 NETBIOS on top of TCP/IP which proposes to base NetBIOS
2886                 name service on top of the DNS.
2887
2888 [RFC-1002]      NetBIOS Working Group, "Protocol standard for a NetBIOS
2889                 service on a TCP/UDP transport: Detailed
2890                 Specifications", RFC-1002, March 1987.
2891
2892 [RFC-1010]      J. Reynolds, and J. Postel, "Assigned Numbers", RFC-1010,
2893                 USC/Information Sciences Institute, May 1987.
2894
2895                 Contains socket numbers and mnemonics for host names,
2896                 operating systems, etc.
2897
2898 [RFC-1031]      W. Lazear, "MILNET Name Domain Transition", RFC-1031,
2899                 November 1987.
2900
2901                 Describes a plan for converting the MILNET to the DNS.
2902
2903 [RFC-1032]      M. Stahl, "Establishing a Domain - Guidelines for
2904                 Administrators", RFC-1032, November 1987.
2905
2906
2907
2908 Mockapetris                                                    [Page 52]
2909 \f
2910 RFC 1035        Domain Implementation and Specification    November 1987
2911
2912
2913                 Describes the registration policies used by the NIC to
2914                 administer the top level domains and delegate subzones.
2915
2916 [RFC-1033]      M. Lottor, "Domain Administrators Operations Guide",
2917                 RFC-1033, November 1987.
2918
2919                 A cookbook for domain administrators.
2920
2921 [Solomon 82]    M. Solomon, L. Landweber, and D. Neuhengen, "The CSNET
2922                 Name Server", Computer Networks, vol 6, nr 3, July 1982.
2923
2924                 Describes a name service for CSNET which is independent
2925                 from the DNS and DNS use in the CSNET.
2926
2927
2928
2929
2930
2931
2932
2933
2934
2935
2936
2937
2938
2939
2940
2941
2942
2943
2944
2945
2946
2947
2948
2949
2950
2951
2952
2953
2954
2955
2956
2957
2958
2959
2960
2961
2962
2963
2964 Mockapetris                                                    [Page 53]
2965 \f
2966 RFC 1035        Domain Implementation and Specification    November 1987
2967
2968
2969 Index
2970
2971           *   13
2972
2973           ;   33, 35
2974
2975           <character-string>   35
2976           <domain-name>   34
2977
2978           @   35
2979
2980           \   35
2981
2982           A   12
2983
2984           Byte order   8
2985
2986           CH   13
2987           Character case   9
2988           CLASS   11
2989           CNAME   12
2990           Completion   42
2991           CS   13
2992
2993           Hesiod   13
2994           HINFO   12
2995           HS   13
2996
2997           IN   13
2998           IN-ADDR.ARPA domain   22
2999           Inverse queries   40
3000
3001           Mailbox names   47
3002           MB   12
3003           MD   12
3004           MF   12
3005           MG   12
3006           MINFO   12
3007           MINIMUM   20
3008           MR   12
3009           MX   12
3010
3011           NS   12
3012           NULL   12
3013
3014           Port numbers   32
3015           Primary server   5
3016           PTR   12, 18
3017
3018
3019
3020 Mockapetris                                                    [Page 54]
3021 \f
3022 RFC 1035        Domain Implementation and Specification    November 1987
3023
3024
3025           QCLASS   13
3026           QTYPE   12
3027
3028           RDATA   12
3029           RDLENGTH  11
3030
3031           Secondary server   5
3032           SOA   12
3033           Stub resolvers   7
3034
3035           TCP   32
3036           TXT   12
3037           TYPE   11
3038
3039           UDP   32
3040
3041           WKS   12
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 \f