Annotation of 43BSDReno/usr.sbin/named/doc/rfc1035.lpr, revision 1.1.1.1

1.1       root        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: 
                     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: 
                    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: 
                    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: 
                    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: 
                    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: 
                    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: 
                    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: 
                    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: 
                    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: 
                    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: 
                    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: 
                    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: 
                    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: 
                    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: 
                    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: 
                    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: 
                    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: 
                   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: 
                   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: 
                   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: 
                   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: 
                   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: 
                   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 [email protected] 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: 
                   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: 
                   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: 
                   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: 
                   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: 
                   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: 
                   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: 
                   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: 
                   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: 
                   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: 
                   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: 
                   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: 
                   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 "[email protected]".
                   2005: 
                   2006: 
                   2007: 
                   2008: 
                   2009: 
                   2010: 
                   2011: 
                   2012: Mockapetris                                                    [Page 36]
                   2013: 
                   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: 
                   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: 
                   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: 
                   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: 
                   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: 
                   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: 
                   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: 
                   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: 
                   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: 
                   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: 
                   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: 
                   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 [email protected] 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 [email protected], 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: 
                   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: 
                   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: 
                   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: 
                   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: 
                   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: 
                   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: 
                   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: 

unix.superglobalmegacorp.com

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