Wireshark-DNS數據報分析

DNS:域名系統

  DNS是一種用於internet上提供IP地址和域名相互映射的分佈式服務系統。可以通過IP地址獲取相應的域名,也可以通過域名獲取IP,這樣可以不用記住難記的IP。
  我們實際網絡中的DNS服務是由網絡運營商提供的。大多數地區都有相應的域名服務器。114.114.114.114是一個公共的DNS服務器,任何地方都可以通過這個服務器獲取DNS服務。
  域名是通過.來區分不同級的,其中最後一級爲頂級域名如:com,edu,org等等。域名的分配是通過授權機構來完成的。
  cmd中可以通過nslookup查詢本地dns服務器IP,linux中一般應用host可以進行域名的解析。

DNS:DNS報文格式

  DNS是一個應用層協議,基於TCP/IP傳輸,一般的DNS報文傳輸層是UDP報文。下面是DNS報文的格式:
  
這裏寫圖片描述

DNS報文由12字節長的首部和4個長度可變的字段組成。

標識字段:由客戶程序設置並由服務器返回結果。客戶程序通過它來確定響應與查詢是否匹配。(可以視爲報文ID)
標誌字段:定義各種標誌位。
問題數、資源記錄數、授權資源記錄數和額外資源記錄數記錄下面4個字段對應的數目。

DNS查詢報文中的問題部分

這裏寫圖片描述

查詢名是要查找的名字(域名),它是一個或多個標識符的序列。每個標識符以首字節的計數值來說明隨後標識符的字節長度,每個名字以最後字節爲0結束,長度爲0的標識符是根標識符。實際的存儲結構由下圖所示:

這裏寫圖片描述

每個問題有一個查詢類型,每一個響應也有一個類型。這個類型表明需要進行的服務類型,一般爲A(IP地址查詢)。

查詢類通常是1,指互聯網地址(IN)。

DNS響應報文中的資源記錄部分

DNS報文中最後的三個字段,回答字段、授權字段和附加信息字段,均採用一種稱爲資源記錄RR( Resource Record)的相同格式。

這裏寫圖片描述

  域名是記錄中資源數據對應的名字。它的格式和前面介紹的查詢名字段格式相同。
  
  類型說明RR的類型碼。它的值和前面介紹的查詢類型值是一樣的。類通常爲1,指Internet數據。
  
  生存時間字段是客戶程序保留該資源記錄的秒數。資源記錄通常的生存時間值爲 2天。

  資源數據長度說明資源數據的數量。該數據的格式依賴於類型字段的值。對於類型 1( A記錄)資源數據是4字節的IP地址。

更多詳細結構參考:http://blog.chinaunix.net/uid-24875436-id-3088461.html
或:tcp/ip詳解卷1-DNS域名系統。

  下面通過wireshark抓取DNS數據包來實際瞭解DNS的數據結構,這裏分析獲取百度IP的DNS查詢和響應數據包。

這裏寫圖片描述

  圖中的Transaction ID就是標識號,說明返回的相應幀號爲1526,查詢數據報和對應的響應數據報的標識號是一樣的。再來看看實際的數據存儲結構,由上面的圖可以看到這個數據報共73字節,其中數據鏈路頭部共14字節,網絡層IP頭共20字節,運輸層UDP頭8字節,最後剩下31字節就是DNS數據了,由下圖可以看到DNS數據存儲結構,圖中解釋了之前提到的域名存儲結構:

這裏寫圖片描述

  上面主機程序向114.114.114.114域名服務器發送了一個DNS請求報文,則主機會收到一個對應的DNS響應報文,下面是抓取的報文數據:

這裏寫圖片描述

  可以看到這裏Transaction ID和上面的是一樣的。這裏作爲響應報文,除了問題數據段外,還有回答數據段。Queries(問題)字段和相應的請求報文字段是一致的,圖中沒有展開,可以看到這裏Answer RRS的值爲3,對應下面的Answer有3個回答字段。這裏有一個是百度的外殼域名,其他兩個就是獲取的IP地址。結構都是一樣的,均對應於上面介紹的DNS資源記錄格式。

  爲了減少internet上DNS的通信量,所有的名字服務器均使用高速緩存。

發佈了77 篇原創文章 · 獲贊 102 · 訪問量 35萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章