DNS & BIND

DNS & BINDSearch this book
Previous: A.2 DNS MessageAppendix A
DNS Message Format and Resource Records
Next: A.4 Resource Record Data
 

A.3 Header Section Format

(From RFC 1035, pages 26-28)

                                    1  1  1  1  1  1

      0  1  2  3  4  5  6  7  8  9  0  1  2  3  4  5

    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+

    |                      ID                       |

    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+

    |QR|   Opcode  |AA|TC|RD|RA|   Z    |   RCODE   |

    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+

    |                    QDCOUNT                    |

    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+

    |                    ANCOUNT                    |

    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+

    |                    NSCOUNT                    |

    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+

    |                    ARCOUNT                    |

    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+

where:

ID             A 16 bit identifier assigned by the program that

               generates any kind of query.  This identifier is copied

               the corresponding reply and can be used by the requester

               to match up replies to outstanding queries.

QR             A one bit field that specifies whether this message is a

               query (0), or a response (1).

OPCODE         A four bit field that specifies kind of query in this

               message.  This value is set by the originator of a query

               and copied into the response.  The values are:

               0               a standard query (QUERY)

               1               an inverse query (IQUERY)

               2               a server status request (STATUS)

               3-15            reserved for future use

AA             Authoritative Answer - this bit is valid in responses,

               and specifies that the responding name server is an

               authority for the domain name in question section.

               Note that the contents of the answer section may have

               multiple owner names because of aliases.  The AA bit

               corresponds to the name which matches the query name, or

               the first owner name in the answer section.

TC             TrunCation - specifies that this message was truncated

               due to length greater than that permitted on the

               transmission channel.

RD             Recursion Desired - this bit may be set in a query and

               is copied into the response.  If RD is set, it directs

               the name server to pursue the query recursively.

               Recursive query support is optional.

RA             Recursion Available - this bit is set or cleared in a

               response, and denotes whether recursive query support is

               available in the name server.

Z              Reserved for future use.  Must be zero in all queries

               and responses.

RCODE          Response code - this 4 bit field is set as part of

               responses.  The values have the following

               interpretation:

               0               No error condition

               1               Format error - The name server was

                               unable to interpret the query.

               2               Server failure - The name server was

                               unable to process this query due to a

                               problem with the name server.

               3               Name Error - Meaningful only for

                               responses from an authoritative name

                               server, this code signifies that the

                               domain name referenced in the query does

                               not exist.

               4               Not Implemented - The name server does

                               not support the requested kind of query.

               5               Refused - The name server refuses to

                               perform the specified operation for

                               policy reasons.  For example, a name

                               server may not wish to provide the

                               information to the particular requester,

                               or a name server may not wish to perform

                               a particular operation (e.g., zone

                               transfer) for particular data.

               6-15            Reserved for future use.

QDCOUNT        an unsigned 16 bit integer specifying the number of

               entries in the question section.

ANCOUNT        an unsigned 16 bit integer specifying the number of

               resource records in the answer section.

NSCOUNT        an unsigned 16 bit integer specifying the number of name

               server resource records in the authority records

               section.

ARCOUNT        an unsigned 16 bit integer specifying the number of

               resource records in the additional records section.

A.3.1 Question Section Format

(From RFC 1035, pages 28-29)

The question section is used to carry the "question" in most queries, i.e., the parameters that define what is being asked. The section contains QDCOUNT (usually 1) entries, each of the following format:

                                    1  1  1  1  1  1

      0  1  2  3  4  5  6  7  8  9  0  1  2  3  4  5

    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+

    |                                               |

    /                     QNAME                     /

    /                                               /

    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+

    |                     QTYPE                     |

    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+

    |                     QCLASS                    |

    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+

where:

QNAME          a domain name represented as a sequence of labels, where

               each label consists of a length octet followed by that

               number of octets.  The domain name terminates with the

               zero length octet for the null label of the root.  Note

               that this field may be an odd number of octets; no

               padding is used.

QTYPE          a two octet code which specifies the type of the query.

               The values for this field include all codes valid for a

               TYPE field, together with some more general codes which

               can match more than one type of RR.

QCLASS         a two octet code that specifies the class of the query.

               For example, the QCLASS field is IN for the Internet.

A.3.1.1 QCLASS values

(From RFC 1035, page 13)

QCLASS fields appear in the question section of a query. QCLASS values are a superset of CLASS values; every CLASS is a valid QCLASS. In addition to CLASS values, the following QCLASSes are defined:

*

255 any class.

A.3.1.2 QTYPE values

(From RFC 1035, pages 12-13)

QTYPE fields appear in the question part of a query. QTYPES are a superset of TYPEs, hence all TYPEs are valid QTYPEs. In addition, the following QTYPEs are defined:

AXFR

252 A request for a transfer of an entire zone

MAILB

253 A request for mailbox-related records (MB, MG or MR)

MAILA

254 A request for mail agent RRs (Obsolete - see MX)

*

255 A request for all records

A.3.2 Answer, Authority, and Additional Section Format

(From RFC 1035, pages 29-30)

The answer, authority, and additional sections all share the same format: a variable number of resource records, where the number of records is specified in the corresponding count field in the header. Each resource record has the following format:

                                    1  1  1  1  1  1

      0  1  2  3  4  5  6  7  8  9  0  1  2  3  4  5

    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+

    |                                               |

    /                                               /

    /                      NAME                     /

    |                                               |

    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+

    |                      TYPE                     |

    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+

    |                     CLASS                     |

    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+

    |                      TTL                      |

    |                                               |

    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+

    |                   RDLENGTH                    |

    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--|

    /                     RDATA                     /

    /                                               /

    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+

where:

NAME           a domain name to which this resource record pertains.

TYPE           two octets containing one of the RR type codes.  This

               field specifies the meaning of the data in the RDATA

               field.

CLASS          two octets which specify the class of the data in the

               RDATA field.

TTL            a 32 bit unsigned integer that specifies the time

               interval (in seconds) that the resource record may be

               cached before it should be discarded.  Zero values are

               interpreted to mean that the RR can only be used for the

               transaction in progress, and should not be cached.

RDLENGTH       an unsigned 16 bit integer that specifies the length in

               octets of the RDATA field.

RDATA          a variable length string of octets that describes the

               resource.  The format of this information varies

               according to the TYPE and CLASS of the resource record.

               For example, if the TYPE is A and the CLASS is IN,

               the RDATA field is a 4 octet ARPA Internet address.

A.3.3 Data Transmission Order

(From RFC 1035, pages 8-9)

The order of transmission of the header and data described in this document is resolved to the octet level. Whenever a diagram shows a group of octets, the order of transmission of those octets is the normal order in which they are read in English. For example, in the following diagram, the octets are transmitted in the order they are numbered.

     0                   1

     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5

    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

    |       1       |       2       |

    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

    |       3       |       4       |

    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

    |       5       |       6       |

    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Whenever an octet represents a numeric quantity, the left most bit in the diagram is the high order or most significant bit. That is, the bit labeled 0 is the most significant bit. For example, the following diagram represents the value 170 (decimal).

     0 1 2 3 4 5 6 7

    +-+-+-+-+-+-+-+-+

    |1 0 1 0 1 0 1 0|

    +-+-+-+-+-+-+-+-+

Similarly, whenever a multi-octet field represents a numeric quantity the left most bit of the whole field is the most significant bit. When a multi-octet quantity is transmitted, the most significant octet is transmitted first.


Previous: A.2 DNS MessageDNS & BINDNext: A.4 Resource Record Data
A.2 DNS MessageBook IndexA.4 Resource Record Data