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)個問題,每個問題為下面的格式:
                                    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                    |
    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
        字段含義如下
        QNAME   域名被編碼為一些labels序列,每個labels包含一個字節表示后續字符串長度,以及這個字符串,以0長度和空字符串來表示域名結束。注意這個字段可能為奇數字節,不需要進行邊界填充對齊。
        QTYPE   2個字節表示查詢類型,.取值可以為任何可用的類型值,以及通配碼來表示所有的資源記錄。
        QCLASS 2個字節表示查詢的協議類,比如,IN代表Internet。

 

 

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM