天天看點

DNS封包格式(RFC1035)

2、資源記錄定義(RR definitions)

    2.1 格式

         後面分析封包的時候詳細解釋。

    2.2 類型值(TYPE values)

         類型主要用在資源記錄中,注意下面的值是QTYPE的一個子集。

        類型           值和含義

         A               1 a host address

         NS              2 an authoritative name server

         ====

         TXT             16 text strings

    2.3 查詢類型(QTYPE values)

         查詢類型出現在問題字段中,查詢類型是類型的一個超集,所有的類型都是可用的查詢類型,其他查詢類型如下:

         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

  ====

二、封包

1、封包格式(Format)

    dns請求和應答都是用相同的封包格式,分成5個段(有的封包段在不同的情況下可能為空),如下:

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

    |        Header       | 封包頭

    |       Question      | 查詢的問題

    |        Answer       | 應答

    |      Authority      | 授權應答

    |      Additional     | 附加資訊

    Header段是必須存在的,它定義了封包是請求還是應答,也定義了其他段是否需要存在,以及是标準查詢還是其他。

    Question段描述了查詢的問題,包括查詢類型(QTYPE),查詢類(QCLASS),以及查詢的域名(QNAME)。剩下的3個段包含相同的格式:一系列可能為空的資源記錄(RRs)。Answer段包含回答問題的RRs;授權段包含授權域名伺服器的RRs;附加段包含和請求相關的,但是不是必須回答的RRs。

    1.1 Header的格式

        封包頭包含如下字段:

                                    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                    |

        各字段分别解釋如下:

        ID      請求用戶端設定的16位标示,伺服器給出應答的時候會帶相同的标示字段回來,這樣請求用戶端就可以區分不同的請求應答了。

        QR      1個比特位用來區分是請求(0)還是應答(1)。

        OPCODE 4個比特位用來設定查詢的種類,應答的時候會帶相同值,可用的值如下:

                0               标準查詢 (QUERY)

                1               反向查詢 (IQUERY)

                2               伺服器狀态查詢 (STATUS)

                3-15            保留值,暫時未使用

        AA      授權應答(Authoritative Answer) - 這個比特位在應答的時候才有意義,指出給出應答的伺服器是查詢域名的授權解析伺服器。

                注意因為别名的存在,應答可能存在多個主域名,這個AA位對應請求名,或者應答中的第一個主域名。

=====

    1.2 Question的格式

        在大多數查詢中,Question段包含着問題(question),比如,指定問什麼。這個段包含QDCOUNT(usually 1)個問題,每個問題為下面的格式:

    |                                               |

    /                     QNAME                     /

    /                                               /

    |                     QTYPE                     |

    |                     QCLASS                    |

        字段含義如下

        QNAME   域名被編碼為一些labels序列,每個labels包含一個位元組表示後續字元串長度,以及這個字元串,以0長度和空字元串來表示域名結束。注意這個字段可能為奇數位元組,不需要進行邊界填充對齊。

        QTYPE   2個位元組表示查詢類型,.取值可以為任何可用的類型值,以及通配碼來表示所有的資源記錄。

        QCLASS 2個位元組表示查詢的協定類,比如,IN代表Internet。

摘自:http://blog.csdn.net/tigerjibo/article/details/6827736

本文轉自張昺華-sky部落格園部落格,原文連結:http://www.cnblogs.com/bonelee/p/7093709.html,如需轉載請自行聯系原作者

繼續閱讀