TCP-IP詳解筆記7: DNS,域名系統
概念
DNS 是一種用於TCP/IP應用程式的__分散式資料庫__,提供了主機名字和IP地址之間的轉換和有關電子郵件的選路資訊。
DNS基礎
層次結構, 每個節點有一個至多63個字元長的標識, 不區分大小寫。域名書中的每個節點都有一個唯一的域名,但不同節點可使用相同的標識。
-
頂級域名:
- arpa
- 7個普通三字元長的普通域, 或是組織域
- 國家碼, 國家域或地理域
-
DNS中域名的授權:網路資訊中心NIC負責分配頂級域和委派其他指定地區域的授權機構,
-
DNS使用超快取記憶體.
DNS報文格式
- DNS報文由12位元組長的首部和4個長度可變欄位組成。
- 標識欄位:客戶程式設定,並由伺服器返回結果。客戶程式用來確定響應和查詢是否匹配。
QR | opcode | AA | TC | RD | RA | (zero) | rcode |
---|---|---|---|---|---|---|---|
1 | 4 | 1 | 1 | 1 | 1 | 3 | 4 |
0查詢報文, 1響應報文 | 0標準查詢, 為1(反向查詢), 2(伺服器狀態請求) | 授權回答 | 可截斷 | 期望遞迴 | 可用遞迴 | 必須為0 | 返回碼, 0沒差錯, 3名字差錯 |
查詢問題部分
- 儲存域名的方式:
|計數|域|計數|域|…|
因為識別符號的最大長度僅為 6 3,所以計數字節的值為0到63的數。
- 查詢型別有:
常見型別時A型別,期望獲得查詢名的IP地址。 PTR查詢是請求獲得一個IP地址對應的域名。
- 查詢類通常是1, 網際網路地址。
DNS響應報文中的資源記錄部分
- 資料格式
DNS舉例:
指標查詢
使用tcpdump 檢視指標查詢資訊
$ host 140.252.13.34 34.13.252.140.in-addr.arpa domain name pointer pipen14.tuc.noao.edu. 10:38:59.999340 IP xxxxx.60763 > google-public-dns-a.google.com.domain: 22773+ PTR? 34.13.252.140.in-addr.arpa. (44) 10:39:00.003093 IP google-public-dns-a.google.com.domain > xxxxx.60763: 22773 1/0/0 PTR pipen14.tuc.noao.edu. (78)
- 從以上資訊可以看出,指標查詢會對查詢資料進行反轉,在機上in-addr.arpa,這是自動的。
PTR?
表示查詢PTR
例子:
- 普通的
host baidu.com
10:46:42.346766 IP xxxx.62785 > google-public-dns-a.google.com.domain: 41812+ A? baidu.com. (27)
10:46:42.350305 IP google-public-dns-a.google.com.domain > xxxxx.62785: 41812 2/0/0 A 123.125.115.110, A 220.181.57.216 (59)
10:46:42.350643 IP xxxxx.62363 > google-public-dns-a.google.com.domain: 30592+ AAAA? baidu.com. (27)
10:46:42.393192 IP google-public-dns-a.google.com.domain > xxxx.62363: 30592 0/1/0 (70)
10:46:42.393847 IP xxxx.65123 > google-public-dns-a.google.com.domain: 46136+ MX? baidu.com. (27)
10:46:42.409846 IP google-public-dns-a.google.com.domain > xxxxx.65123: 46136 5/0/0 MX jpmx.baidu.com. 20, MX mx50.baidu.com. 20, MX mx.maillb.baidu.com. 10, MX mx.n.shifen.com. 15, MX mx1.baidu.com. 20 (143)
- rlogin: