電腦網路與 Internet 通訊

L04 DNS 訊息格式

本實驗使用的程式:models.py。文中指令以課程根目錄為工作目錄;建議下載教材套件,解壓後在 computer-networking 目錄執行。

目的、環境與預測

對應單元:05。Python 3.10 以上,標準函式庫;在課程根目錄執行。資料性質:離線模型或人工資料分析。

以下是程式產生的人工回應訊息(hex);查詢的 ID 為 0x1234。兩行屬同一則訊息,換行只為排版:

123481800001000100000000066c6573736f6e0474657374
0000010001c00c000100010000012c0004c0000250

先將 hex 以兩個字元一組拆開,再預測 QR、RD、RA、Question 與 Answer 數量。

執行與紀錄

python3 labs/models.py L04

Windows 可用 py -3 替換 python3。將輸出儲存,記錄日期、Python 版本、參數與預測。

條件執行前預測實際輸出差異與解釋
原始設定自行填寫貼關鍵欄位寫出依據
修改設定自行填寫貼關鍵欄位一次改一個變因

完成預測與紀錄後,再到解答冊的「預期輸出」核對。

變更與判讀

在紙上定位 header 12 bytes、QNAME 與固定欄位。選做:python3 labs/models.py L04 --ttl 60,核對回應中 TTL 的 4 bytes 如何改變。

這份資料是否證明某臺 Internet DNS 提供此答案?NOERROR 空 Answer 與 NXDOMAIN 有何不同?

實際解析器不能只比對 ID,還需比對 Question、來源與查詢狀態,並處理 TC、RCODE 及回應完整性;此 fixture 不是完整 resolver。

驗證範圍與提交

輸出是明示假設下的模型或人工資料;不能當成真實封包擷取、OS 核心狀態或 Internet 量測。

提交預測、原始/修改輸出、兩個判讀答案與模型限制。評分:預測 20%、紀錄 30%、推理 35%、限制 15%。標準推理見解答冊;輸出中的埠與真實計時可以變動。