DNS(Domain Name System)
功能:
FQDN(Fully Qualified Domain Name) ex. "www.google.com.tw"
↓
DNS
↓
IP ex. "74.125.23.94"
架構:
com: 公司企業
org: 非營利組織
edu: 教育單位
gov: 政府單位
net: 網路中心
mil: 軍事單位
int: 國際組織
封包格式(Packet Format):
DNS ID Number(DNS 識別代號):用來關聯DNS查詢與DNS回應
Query/Response(QR):0(query), 1(response)
OpCode(Operation Code):用來識別DNS封包類型
0 | 標準查詢(Standard Query) |
1 | 逆向查詢(Inverse Query) |
2 | 伺服器狀態 |
3-15 | 保留未使用 |
Flag:由左至右各占1bit,分別是AA(Authoritative Answer)、TC(Truncation)、RD(Recursion Desired)、RA(Recursion Available)
AA(Authoritative Answer):DNS伺服器得知要查詢的FQDN為管轄區域內的紀錄時,此欄位會設定為1;預設值為0。AA只用在回覆訊息
TC(Truncation):當欄位值為1,代表DNS封包長度大於512bytes,此時超過的長度會被截斷,只剩下512bytes。
RD(Recursion Desired):1代表用戶端是採用地回查詢模式,0代表用反覆查詢模式。RD用在詢問訊息,並複製至回覆訊息。
RA(Recursion Available):DNS名稱伺服器支援遞迴查詢模式時,此欄位值設定為1,0表示不接受該查詢模式,RA只用在回覆訊息。
Reserved:保留未用,欄位值全為0,不過有時當作Rcode欄位之擴充。
Rcode(Response Code):指出DNS查詢時所發出的錯誤訊息。
0 | 沒有錯誤 |
1 | 封包格是錯誤 |
2 | 名稱伺服器錯誤 |
3 | 查詢的FQDN不存在 |
4 | 不支援OP Code所指的DNS封包 |
5 | DNS伺服器拒絕處理此封包 |
6-15 | 保留 |
Question Count:在Questions Section中項目之數量
Answer Count:在Answer Section中項目之數量
Authority RR Count or Name Server Count:在Authority Section中名稱伺服器資源紀錄的數量
Additional Records Count:在Additional Information Section中其他資源紀錄之數量
Question Section:分為QName, QType, QClass
QName(Question Name):此欄位指出所要解析的FQDN。例如FQDN為www.google.com
QType(Question Type):此欄位指出要查詢的資源紀錄類型。
欄位值 | RR Type | 代表意義 |
1 | A | 查詢主機位址紀錄 |
2 | NS | 定義有管轄權的名稱伺服器 |
5 | CNAME | 定義主機正規名稱的別名 |
6 | SOA | Zone檔案內的開始處 |
7 | MB | 油箱的網域名稱 |
10 | NULL | 無效的RR |
11 | WKS | 主機公認的服務 |
12 | PTR | IP位址轉換成網域名稱 |
13 | HINFO | 指出主機硬體、作業系統等資訊 |
14 | MINFO | 指出油箱或郵件列表資訊 |
15 | MX | 電子郵件交換至郵件伺服器 |
16 | TEXT | 驗證來自某網域上的合法的電子郵件 |
255 | ANY | 查詢所有類型的RR |
QClass(Question Class):此欄位指出要在哪一種類的網路上做DNS查詢。
等級 | 助記符號 | 說明 |
1 | IN | 網際網路 |
2 | CS | CSNET(已過時) |
3 | CH | CHAOS等級 |
4 | HS | 與MIT Project Athena相關的Hesiod伺服器 |
Answer Section:存放要答覆給用戶端的資料。
Name | 16 bits,用來存放用戶端查詢的FQDN |
Type | 16 bits,指出RData欄位內的資料意義 |
Class | 16 bits,指出在RData欄位內的資料等級 |
TTL | 32 bits,以秒為單位,用來指出資源記錄在被棄除之前,保留在DNS伺服器快取中的時間。若TTL為0,表示RR正被使用於交易進行中,所以不能存放在快取中。 |
RDLength | 16 bits,指出在RData欄位的長度 |
RData | 長度不一定,用來存放查詢的結果,通常是存放IP位址或FQDN。 |
Authority Section:表示在查詢FQDN時,找到可供查詢官方DNS所指向的資料。格式如同Answer Section,除了最後一個欄位RData不是存放IP位址,而是存放DNS伺服器的FQDN。
Additional Section:不同的RR中,有的需此Section處理。例如MX紀錄為了使被指定的郵件主機獲得交換,就會導致需處理TYPE A的Additional Section。