TCP協議承載的DNS報文,DNS報文首部前多出兩個字節的DNS報文長度字段,是何意義?


一、TCP報文頭部簡介

       

  ●源、目標端口號字段:占16比特。TCP協議通過使用"端口"來標識源端和目標端的應用進程。端口號可以使用0到65535之間的任何數字。在收到服務請求時,操作系統動態地為客戶端的應用程序分配端口號。在服務器端,每種服務在"眾所周知的端口"(Well-Know Port)為用戶提供服務。 

  ●順序號字段:占32比特。用來標識從TCP源端向TCP目標端發送的數據字節流,它表示在這個報文段中的第一個數據字節。 

  ●確認號字段:占32比特。只有ACK標志為1時,確認號字段才有效。它包含目標端所期望收到源端的下一個數據字節。 

  ●頭部長度字段:占4比特。給出頭部占32比特的數目。沒有任何選項字段的TCP頭部長度為20字節;最多可以有60字節的TCP頭部。

  ●標志位字段(U、A、P、R、S、F):占6比特。各比特的含義如下:

    ◆URG:緊急指針(urgent pointer)有效。

    ◆ACK:確認序號有效。

    ◆PSH:接收方應該盡快將這個報文段交給應用層。

    ◆RST:重建連接。

    ◆SYN:發起一個連接。

    ◆FIN:釋放一個連接。

  ●窗口大小字段:占16比特。此字段用來進行流量控制。單位為字節數,這個值是本機期望一次接收的字節數。

  ●TCP校驗和字段:占16比特。對整個TCP報文段,即TCP頭部和TCP數據進行校驗和計算,並由目標端進行驗證。

  ●緊急指針字段:占16比特。它是一個偏移量,和序號字段中的值相加表示緊急數據最后一個字節的序號。  

  ●選項字段:可選字段。包括"窗口擴大因子"、"時間戳"等選項。

 

二、DNS報文首部

      

  標識ID:16bit,有發出DNS請求的客戶端生成,對應的DNS響應報文中也要置同樣的ID。

  標志字段:16bit,被划分為如下的若干字段:

      

    ◆QR:0表示查詢報文,1表示響應報文

    ◆Opcode:通常值為0(標准查詢),其他值為1(反向查詢)和2(服務器狀態請求)。

    ◆AA:表示授權回答(authoritative answer).

    ◆TC:表示可截斷的(truncated)

    ◆RD:表示期望遞歸

    ◆RA:表示可用遞歸

    ◆Rcode:返回碼,通常為0(NoError)和3(NXDomain)等。

 

三、TCP協議承載DNS報文的時候,為什么DNS報文頭部前面會多出兩個字節的長度字段??

  如下圖抓包所示:

1、TCP報文

 

2、DNS報文

 

如上圖所示,DNS報文的標識ID字段前面,多出了兩個字節的DNS報文長度字段?UDP協議承載的DNS報文就沒有這兩個字段。

很奇怪,這是何解??

 


免責聲明!

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



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