DNS系統解析基本流程
- DNS簡介
DNS, 全稱為Domain Name System , 它在一個網站運行中起到了至關重要的作用, 其主要作用是把網站域名解析為對應的印地址, 例如:把www.etiantian.org解析為對 應的IP地址記錄, 如1.1.1. 1, 這個從域名到lP的解析過程, 稱作A記錄, 即Address Record。
DNS系統除了負責這個最重要的A記錄解析外, 還有很多的功能呢!例如:
- 設置CNAME別名記錄, 這個別名解析功能常被CDN加速服務商應用。
- 設置MX郵件記錄 ,這個 MX記錄功能, 在購買或搭建郵件服務時會被用到。
- 設置PTR 記錄, 反向解析, 即把IP地址解析為對應的域名 ,和A記錄的解析相
- 反, 此功能在郵件服務等業務中會用到。
DNS系統的架構類似於一棵倒掛着的樹(和Linux系統目錄結構類似), 它的頂點也是根(…),只不過這個根是用點( " ." )來表示的, 不是目錄的根斜線( "/" )。 整個DNS系統的樹狀結構如圖所示。
2.DNS解析流程
- 第一步:客戶端用戶在瀏覽器里輸入 www.etiantian.org網站地址后回車 ,系統首先會查找系統本地的DNS緩存及hosts文件信息,確定是否存在www.etiantian.org域名對應的四解析記錄,如果有就直接獲取到 IP地址 ,然后去訪問這個E地址對應的WWW. etiantian.org域名的服務器。 一般第一次請求時,DNS緩存是沒有解析記錄的,而hosts多為內部臨時測試使用。
- 第二步:如果客戶端本地DNS緩存及本地hosts文件沒有www.etiantian.org域名對應的解析記錄,那么,系統會把瀏覽器的解析請求發送給在客戶端本地設置的DNS服務器地址 (通常稱此DNS為LONS,即Local DNS)解析,如果LONS服務器的本地緩 存有對應的解析記錄就會直接返回IP地址 給客戶端;如果沒有,則LONS 會負責繼續 請求其他的DNS服務器。
- 第三步:LONS 從DNS系統的( "")根開始請求對www.eti antian. org域名的解析,根DNS服務器在全球一共有13台,根服務器下面是沒有www.etiantian. org域名解析 記錄的,但是根 下面有www.etiantian.org對應的頂級域.org 的解析記錄, 因此, 根會 把.org對應的DNS服務器地址返回給LONS。
- 第四步:LONS獲取到 .org對應的DNS服務器地址后, 就會去.org服務器請求www.etiantian.org域名的解析,而.org服務器下面也沒有www.etiantian.org域名對應的 解析記錄,但是有etiantian.org域名的解析記錄, 因此,.org服務器會把etiantian.org 對應的DNS服務器地址返回給LDNS。
- 第五步: 同理, LDNS獲取到etiantian.org對應的DNS服務器地址后, 就會去 etiantian.org服務器請求對www.etiantian.org域名的解析,etiantian.org域名對應的DNS 服務器是該域名的授權DNS服務器, 這個DNS服務器正是企業購買域名時用於管理解析的服務器(也可能是自建的授權DNS服務器), 這個服務器會有與www.etiantian.org 對應的IP解析記錄, 如果此時沒有, 就表示企業的域名人員沒有為www.etiantian.org 域名做解析, 即網站還沒架設好。
- 第六步: etiantian.org域名DNS服務器會把www.etiantian.org對應的IP解析記錄 (例如 1.1.1.1 )發給LDNS。
- 第七步:LDNS把來自授權DNS服務器的與www.etiantian.org對應的IP解析記錄發給客戶端瀏覽器, 並且LDNS會在本地把域名和IP的對應解析記錄緩存起來, 以便下一次更快地返回相同解析請求的記錄。至此, 整個DNS的解析流程就完成了。
2.DNS解析流程圖
3.實踐理解DNS的解析流程
命令:dig www.baidu.com +trace
+[no]trace(更多dig命令使用請自行查找)
切換為待查詢名稱從根名稱服務器開始的代理路徑跟蹤。缺省情況不使用跟蹤。一旦啟用跟蹤,dig 使用迭代查詢解析待查詢名稱。它將按照從根服務器的參照,顯示來自每台使用解析查詢的服務器的應答。
可以看到左側是從(.)也就是根DNS服務器,共13個。可以看到后面from 198.97.190.53#53(f.root-servers.net)也是這個IP完成的解析。
然后是解析(com.)的14台DNS服務器。可以看到后面是e這台DNS負責的解析
接着是解析(baidu.com.)的五台DNS服務器,也可以看到是ns3完成的解析。
最后的一個cname記錄是www.baidu.com的真實域名www.a.shift.com,是在DNS服務器上把www.a.shift.com映射為www.baidu.com,是為為網站域名加殼,避免被攻擊。有人會問為啥不是解析成A記錄也就是域名解析成IP的形式,我猜測是為了安全吧。
遞歸查詢
上述的客戶機到本地DNS是進行了迭代查詢,以下為為遞歸查詢,可以看到把請求交給本地DNS,本地DNS會請求根DNS服務器,直到請求最后授權的DNS服務器,得到記錄再返回客戶端。下圖為遞歸查詢。
簡單來說就是本地DNS請求根DNS,根DNS又去請求下面的頂級DNS,最后找到記錄,並從原路返回最后返回給客戶端。
迭代查詢
迭代查詢是指先請求本地DNS,然后本地DNS會讓客戶端去請求本地DNS查詢到的根服務器,客戶端會逐一請求各個頂級DNS,直到從授權DNS服務器找到解析記錄,並返回客戶端。
簡單來說,客戶端只有第一次是請求本地DNS,后面都是自己根據本地DNS給予的應答,自己逐一去請求,而遞歸是DNS幫你去逐一請求。
