DNS域名解析的過程是怎樣的?
面試官:請說一下,DNS域名解析的過程是怎樣的?
DNS協議是一種基于UDP的應用層協議,它用于將網站的網址也就是域名,轉換為IP地址,以便用戶可以訪問網站。
圖片
DNS把域名和IP地址聯系在一起,有了保存網站域名和IP地址對應關系的DNS服務器,我們就不用輸入IP地址來訪問一個網站,而是輸入網址,然后通過向DNS服務器請求獲取域名對應的IP來訪問網站了。
圖片
DNS域的命名空間是一種樹狀層次結構,一般可分為根域、一級域(也叫頂級域)、二級域、子域以及主機名。
圖片
對應地,在域名的每一層都會有一個域名服務器,來提供對應層級的域名解析服務。
圖片
DNS進行域名解析的過程是,主機先查本地瀏覽器上的DNS緩存,再查本機操作系統中的DNS緩存以及hosts文件,如果都沒有,才會向本地DNS服務器發起DNS域名解析請求,本地DNS服務器如果有請求域名對應的IP地址,則直接返回告訴主機。如果沒有,就向根域名服務器發送請求,根域名服務器是最高層次的,它不直接用于域名解析,但是它會告訴本地DNS服務器去找對應的頂級域名服務器,接著,本地DNS服務器去找對應的頂級域名服務器請求,頂級域名服務器會告訴本地DNS服務器去找對應的權威DNS服務器,本地DNS于是再轉向問權威 DNS服務器,權威DNS服務器查詢后將對應的 IP 地址告訴本地 DNS,本地DNS再將IP地址返回給主機。
這個時候,為了避免下次對這個域名發起DNS解析時,再來一遍上面的解析過程,主機和本地DNS都會對剛剛的域名解析結果進行緩存,下次再解析時,如果有緩存就可以直接從緩存中獲取解析結果。
圖片
圖片
圖片
圖片
圖片
從上面的過程可以看到,DNS的查詢方式分為兩種,一種是遞歸,一種是迭代。
遞歸查詢指的是如果 A 請求 B,那么 B 作為請求的接收者,一定要給 A 想要的答案。
圖片
迭代查詢指的是,如果接收者 B 沒有請求者 A 所需要的準確內容,接收者 B 將告訴請求者 A,如何去獲得這個內容,但是自己并不去發出請求。
圖片
在實際應用中,遞歸查詢通常用于從請求主機到本地 DNS 服務器的查詢,而迭代查詢則用于本地 DNS 服務器向根域名服務器或者頂級域名服務器發出查詢請求。
圖片