DNS概念
DNS,即Domain Name System,中文翻譯爲網域名稱系統。是一項聯網的服務,本質上可以理解爲一個分佈式的數據庫,提供將域名轉換爲IP的服務。
- 使用TCP和UDP端口53;
- 每一級域名長度的限制是63個字符;
- 域名總長度則不能超過253個字符;
相關概念
根服務器
是DNS中最高級別的域名服務器,負責返回頂級域的服務器地址。
目前邏輯上有13臺根服務器,13臺是因爲早期的UDP報文限制了返回報文中的資源記錄數量。簡單講就是在DNS查詢前先要初始化根服務器列表,需要先查下13臺根服務器的地址,這個過程是通過UDP報文傳輸來完成的。而UDP報文最多傳輸13組【根服務器-IP】的資源內容,所以這個數目就定在13。
然而,之所以說邏輯上有13臺,是因爲目前通過任播技術,已經將根服務器的物理服務器數量擴大至很大的數量,而我們實際做DNS解析時會用到的根服務器實際上是離我們較近的一臺物理服務器。
頂級域名
頂級域名就是域名的最後一段,例如blog.csdn.net的頂級域名就是.net。
頂級域名目前分爲三類:
- 國家和地區頂級域名(ccTLDs):.cn,.ai等;
- 通用頂級域名(gTLDs):.com,.net等;
- 新頂級域名(New gTLD):.xyz,.red等;
資源類型
資源類型即通過DNS解析能得到的結果數據。一般分爲:
- 主機記錄(A記錄):RFC 1035定義,A記錄是用於名稱解析的重要記錄,它將特定的主機名映射到對應主機的IP地址上。
- 別名記錄(CNAME記錄): RFC 1035定義,CNAME記錄用於將某個別名指向到某個A記錄上,這樣就不需要再爲某個新名字另外創建一條新的A記錄。
- IPv6主機記錄(AAAA記錄): RFC 3596定義,與A記錄對應,用於將特定的主機名映射到一個主機的IPv6地址。
- 服務位置記錄(SRV記錄): RFC 2782定義,用於定義提供特定服務的服務器的位置,如主機(hostname),端口(port number)等。
- NAPTR記錄:RFC 3403定義,它提供了正則表達式方式去映射一個域名。NAPTR記錄非常著名的一個應用是用於ENUM查詢。
DNS解析流程
DNS解析,一般指的是正向解析,也就是根據域名查找對應的IP的過程。當然也有反向解析,即根據IP查找域名。反向解析不常用,這裏也不做討論。DNS解析流程分爲兩種:遞歸和迭代。
- 遞歸:互聯網用戶向DNS服務器解析域名的過程。
- 迭代:多見於DNS服務器之間相互查詢。
遞歸解析
舉個例子,用戶請求blog.csdn.net的域名解析。在不考慮本地緩存的情況下:
1)請求本地DNS服務器(運營商分配)或者你指定的公共DNS服務器(例如8.8.8.8),如果有緩存返回;
2)本地DNS服務器沒有,則向根域名服務器請求.net
這個頂級域名服務器的地址;
3)收到.net
頂級域名服務器地址後,請求該服務器,查詢csdn.net
這個域名服務器地址;
4)接着去csdn.net
服務器去查詢blog.csdn.net
這個域名的地址,返回後以此返回給用戶,此爲遞歸過程;
迭代解析
迭代解析:A問B,B不知,答去問C,A復問C,C亦不知,答去問D,A復問D,D答,完。