DNS (Domain Name System 的縮寫)的做用很是簡單,就是根據域名查出IP地址。你能夠把它想象成一本巨大的電話本。舉例來講,若是你要訪問域名baidu.com,首先要經過DNS查出它的IP地址是x.x.x.x,而後會根據ip請求對應的服務內容。web
以下面所示,詳細說明了一個DNS域名解析的全過程:數據庫
(1) 瀏覽器緩存
當用戶經過瀏覽器訪問某域名時,例如:www.163.com 瀏覽器首先會在本身的緩存中查找是否有該域名對應的IP地址(若曾經訪問過該域名且沒有清空緩存便存在); 瀏覽器
(2) 系統緩存
當瀏覽器緩存中無域名對應IP則會自動檢查用戶計算機系統Hosts文件DNS緩存是否有該域名對應IP; 緩存
(3) 路由器緩存
當瀏覽器及系統緩存中均無域名對應IP則進入路由器緩存中檢查,以上三步均爲客服端的DNS緩存; bash
(4) ISP(互聯網服務提供商)DNS緩存
當在用戶客服端查找不到域名對應IP地址,則將進入ISP DNS緩存中進行查詢。好比你用的是電信的網絡,則會進入電信的DNS緩存服務器中進行查找; 服務器
(5) 根域名服務器
當以上均未完成,則進入根服務器進行查詢。全球僅有13臺根域名服務器,1個主根域名服務器,其他12爲輔根域名服務器。根域名收到請求後會查看區域文件記錄,若無則將其管轄範圍內頂級域名(如.com)服務器IP告訴本地DNS服務器; 網絡
(6) 頂級域名服務器
頂級域名服務器收到請求後查看區域文件記錄,若無則將其管轄範圍內主域名服務器的IP地址告訴本地DNS服務器; ide
(7) 主域名服務器
主域名服務器接受到請求後查詢本身的緩存,若是沒有則進入下一級域名服務器進行查找,並重復該步驟直至找到正確紀錄; code
(8) 保存結果至緩存
本地域名服務器把返回的結果保存到緩存,以備下一次使用,同時將該結果反饋給客戶端,客戶端經過這個IP地址與web服務器創建連接。blog
注意:DNS獲取解析過程當中,遵循的規則以下:本地hosts文件解析-本地DNS緩存解析-本地DNS解析-第三方DNS解析
下圖所示爲Internet上DNS層級結構,即:從 根域 — 頂級域(一級域)— 二級域 — FQDN(主機)
每一級域名都有本身的NS記錄,NS記錄指向該級域名的域名服務器。這些服務器知道下一級域名的各類記錄,「分級查詢」就是從根域名開始,依次查詢每一級域名的NS記錄,直到查到最終的IP地址,過程大體以下:
從"根域名服務器"查到"頂級域名服務器"的NS記錄和A記錄(IP地址) 從"頂級域名服務器"查到"次級域名服務器"的NS記錄和A記錄(IP地址) 從"次級域名服務器"查出"主機名"的IP地址
其中:
1.根域名
全球總共有13臺根域名服務器,根域名NS記錄以"."爲例,即全部根域名服務器,能夠經過以下命令顯示
dig +trace baidu.com
2.頂級域名
在頂級域體系裏,每一個頂級域名都有各自的權威DNS服務器,每種域名也有各自規定的用途,如:
1. com 適用於一些商業公司或企業; 2. edu 適用於一些教育機構等教育組織; 3. net 適用一些網絡公司; 4. gov 適用一些非軍事的政府機構; 5. mil 用於軍事機構; 6. xx 用於國家或地區代碼,cn表明中國;
備註:
權威 DNS 是特定域名記錄(例如「example.com」)在域名註冊商處所設置的 DNS 服務器,用於特定域名自己的管理(增長、刪除、修改等)。
權威 DNS 服務器只對本身所擁有的域名進行域名解析,對於不是本身的域名則拒絕訪問。好比,咱們要向「aliyun.com」的權威 DNS 服務器查詢「test.com」的域名確定會查詢失敗。
4.3.二級域名
一般二級域名通常都是企業或我的申請的域名,例如 baidu.com 即二級域名
4.主機 (FQDN)
在二級域名的前提下,如若再增長字段,能夠稱爲三級域名也能夠稱爲主機或子域名,如:m.baidu.com
3.1 SOA記錄 (起始受權服務器)
用於一個區域的開始,SOA記錄後的全部信息均是用於控制這個區域的,每一個區域數據庫文件都必須包括一個SOA記錄,而且必須是其中的第一個資源記錄,用以標識DNS服務器管理的起始位置,SOA說明能解析這個區域的dns服務器中哪一個是主服務器。
3.2 NS記錄 (名稱服務器)
用於標識區域的DNS服務器,便是說負責此DNS區域的權威名稱服務器,用哪一臺DNS服務器來解析該區域。一個區域有可能有多條ns記錄,例如xx.com有可能有一個主服務器和多個輔助服務器。
3.3 A記錄 (主機地址解析)
也稱爲主機記錄,是DNS名稱到IP地址的映射,用於正向解析。
3.4 CNAME記錄(別名解析)
也是別名記錄,用於定義A記錄的別名。
3.5 MX記錄(郵件解析)
郵件交換器記錄,用於告知郵件服務器進程將郵件發送到指定的另外一臺郵件服務器。(該服務器知道如何將郵件傳送到最終目的地)。優先級:0-99,數字越小優先級越高
3.6 PTR記錄
是IP地址到DNS名稱的映射,用於反向解析。
3.7 AAAA記錄
是用來將域名解析到IPv6地址的DNS記錄。用戶能夠將一個域名解析到IPv6地址上,也能夠將子域名解析到IPv6地址上。
3.8 TXT記錄用於文本字符串記錄