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