1. 程式人生 > >TCP-IP詳解筆記7: DNS,域名系統

TCP-IP詳解筆記7: DNS,域名系統

概念

DNS 是一種用於TCP/IP應用程式的__分散式資料庫__,提供了主機名字和IP地址之間的轉換和有關電子郵件的選路資訊。

DNS基礎

層次結構, 每個節點有一個至多63個字元長的標識, 不區分大小寫。域名書中的每個節點都有一個唯一的域名,但不同節點可使用相同的標識。

DNS層次

  1. 頂級域名:

    1. arpa
    2. 7個普通三字元長的普通域, 或是組織域
    3. 國家碼, 國家域或地理域
  2. DNS中域名的授權:網路資訊中心NIC負責分配頂級域和委派其他指定地區域的授權機構,

  3. DNS使用超快取記憶體.

DNS報文格式

DNS報文格式

  1. DNS報文由12位元組長的首部和4個長度可變欄位組成。
  2. 標識欄位:客戶程式設定,並由伺服器返回結果。客戶程式用來確定響應和查詢是否匹配。
QR opcode AA TC RD RA (zero) rcode
1 4 1 1 1 1 3 4
0查詢報文, 1響應報文 0標準查詢, 為1(反向查詢), 2(伺服器狀態請求) 授權回答 可截斷 期望遞迴 可用遞迴 必須為0 返回碼, 0沒差錯, 3名字差錯

查詢問題部分

DNS查詢問題部分格式

  1. 儲存域名的方式:

|計數|域|計數|域|…|

因為識別符號的最大長度僅為 6 3,所以計數字節的值為0到63的數。

  1. 查詢型別有:

DNS查詢型別.png

常見型別時A型別,期望獲得查詢名的IP地址。 PTR查詢是請求獲得一個IP地址對應的域名。

  1. 查詢類通常是1, 網際網路地址。

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

  1. 資料格式 DNS資源記錄格式 RR

DNS舉例:

DNS響應舉例.png

指標查詢

使用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)
  1. 從以上資訊可以看出,指標查詢會對查詢資料進行反轉,在機上in-addr.arpa,這是自動的。
  2. PTR?表示查詢PTR

例子:

  1. 普通的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)
  1. rlogin:

dns_rlogin.png

採用UDP協議