當我們需要向互聯網請求資源時,需要獲取資源所在伺服器的IP地址,以進行通信。而實際上,IP地址由32位的二進位數字組成,即使是點分十進位的IP地址也很難記憶。但伺服器主機名則比較容易記住。故而,需有一個主機名到IP的映射關係,以獲取主機伺服器對應的IP地址。DNS(域名系統)即保存了互聯網上所有域名與IP的映射關係,通過主機名獲取對應主機IP的流程即DNS解析流程。

DNS解析授權實現

從DNS域名結構上我們得知,域名是分層級的,最上層為根域,下一級為頂級域(Top

Level Domain,如com, org等)。域名解析授權是個樹狀結構,自上而下的分層體系。

首先,根DNS把頂級域名按後綴分別授權給不同的DNS,以有利於管理。修改頂級域名的授權要到根DNS上才能完成。我們可以用dig +@某根伺服器IP com. ns來查看根伺服器下com頂級域名伺服器授權的NS伺服器詳情。

可以看到,com 頂級域名伺服器有13個NS,每個NS分別有一個IPv4地址和IPv6地址。

接下來,com 頂級域名伺服器再將以com結尾的後綴(譬如wangsu.com)授權給對應企業或組織的DNS伺服器解析。指定或修改wangsu.com的權威DNS要到頂級域名DNS伺服器上操作,一般可通過域名提供商(新網,萬網,二牛等)的域名管理平台來操作頂級域名DNS上的記錄。

DNS分級查詢

DNS是分級別進行授權,由根授權一些NS管理com區的域名,再由com授權wangsu.com區管理自己區的域名,故DNS查詢時,在沒有緩存的情況下,也是由根DNS開始查詢,一次查詢每一級的NS記錄,最終得到對應域名的IP地址。

DNS解析流程詳解

本小節以網宿域名www.wangsu.com域名的對應的IP,介紹DNS解析流程。

終端用戶發出DNS請求時,本地DNS伺服器接收到請求,首先檢查緩存是否有數據,若有,則直接使用緩存數據。接下來介紹的流程為沒有任何緩存的場景。

1. 終端用戶DNS客戶端向LocalDNS發起遞歸查詢。遞歸查詢指如果終端用戶所請求的LocalDNS伺服器不知道被查詢的域名的IP地址,則以DNS客戶端的身份,向其它域名伺服器繼續發出查詢請求報文(即替主機繼續查詢),而不是讓主機自己進行下一步查詢。因此,遞歸查詢返回的查詢結果或者是所要查詢的IP地址,或者是報錯,表示無法查詢到所需的IP地址。

2. LocalDNS檢查本地對應緩存無數據後,則向根DNS伺服器發起迭代查詢請求。任何LocalDNS都需知道根DNS伺服器的IP地址(全球共13台)。迭代查詢指域名伺服器或者給出最終結果,或者告訴DNS客戶(此處指LocalDNS)應去哪些DNS伺服器查詢。

3. 根DNS伺服器告訴LocalDNS該域名已授權給com區管理,應去com DNS伺服器查詢,並給出了com DNS伺服器的IP地址。LocalDNS將com DNS伺服器及其IP地址加入到緩存,下次DNS請求,在緩存未過期的情況下,授權給com 區的域名需向com DNS伺服器請求查詢時,直接往com DNS伺服器發查詢請求,不再向根DNS伺服器請求。

4. LocalDNS伺服器根據根DNS伺服器響應的結果向com DNS伺服器發起迭代查詢請求。

5. com DNS伺服器告訴LocalDNS伺服器該域名已授權給wangsu.com區管理,應去wangsu.com

DNS伺服器查詢,並給出wangsu.com DNS伺服器的IP地址。LocalDNS將wangsu.comDNS伺服器及其IP地址加入到緩存,下次DNS請求,在緩存未過期的情況下,授權給wangsu.com區的域名需向wangsu.com DNS伺服器請求查詢時,直接往對應 DNS伺服器發查詢請求,不再向根DNS伺服器及com DNS伺服器請求。

6. LocalDNS伺服器根據 com DNS伺服器響應的結果向wangsu.com DNS伺服器發起迭代查詢請求。

7. wangsu.com DNS伺服器給出域名的IP地址。LocalDNS將www.wangsu.com

IP地址加入到緩存,下次相同的DNS請求,在緩存未過期的情況下,LocalDNS直接給出該域名的IP地址,不再向權威DNS伺服器查詢。

8. LocalDNS伺服器將該域名對應的IP地址返回給終端用戶,DNS客戶端將域名對應的IP地址接入緩存。下次請求該域名時,若緩存未過期,DNS客戶端直接從緩存取出IP,不再向LocalDNS發起迭代查詢。


推薦閱讀:
相关文章