Part1什么是DNS
我們知道,每個(gè)網(wǎng)站都有一個(gè)域名和一個(gè)以上的IP地址,當(dāng)我們想瀏覽某個(gè)網(wǎng)站的時(shí)候,只需要在瀏覽器輸入該網(wǎng)址的域名就可以訪問了。要是沒有域名能不能實(shí)現(xiàn)訪問網(wǎng)站呢?答案當(dāng)然是可以啦,不過你每次都需要記住訪問的網(wǎng)址的IP地址,比如,你想用百度,每次都需要在瀏覽器打入112.80.248.74,是不是很令人崩潰啊哈哈哈哈。那么,網(wǎng)址域名和IP地址之間是如何實(shí)現(xiàn)一一映射的呢?這時(shí)候DNS就該閃亮登場的了。
DNS的全稱是 domain name system ,即域名系統(tǒng)。DNS是因特網(wǎng)上作為域名和IP地址相互映射的一個(gè)分布式數(shù)據(jù)庫,能夠使用戶更方便的去訪問互聯(lián)網(wǎng)而不用去記住能夠被機(jī)器直接讀取的IP地址。通過域名,最終得到該域名對(duì)應(yīng)的IP地址的過程則是域名解析的過程。DNS如何解析
Part2遞歸查詢
某天,客戶端想要訪問XXX網(wǎng)站,但是,客戶端并不知道XXX網(wǎng)站的IP地址。于是,展開了如下對(duì)話
客戶端:“本地DNS服務(wù)器大佬,求問XXX的IP地址是多少?”
本地DNS服務(wù)器:“不好意思,我不知道,但是根域名服務(wù)器可能會(huì)知道,我替去問他吧”
本地DNS服務(wù)器:“根域名服務(wù)器大佬,求問XXX的IP地址是多少?”
根域名服務(wù)器:“不好意思,我不也知道,但是A頂級(jí)域名服務(wù)器可能會(huì)知道,我替你去問他吧”
根域名服務(wù)器:“A頂級(jí)域名服務(wù)器,求問XXX的IP地址是多少?”
A頂級(jí)域名服務(wù)器:“不好意思,我不也知道,但是B域名服務(wù)器可能會(huì)知道,我替你去問他吧”
A頂級(jí)域名服務(wù)器:“B域名服務(wù)器,求問XXX的IP地址是多少?”
B域名服務(wù)器:“A頂級(jí)域名服務(wù)器,查到XXX的IP地址是 192.168.168.6 ”
A頂級(jí)域名服務(wù)器:“根域名服務(wù)器,查到XXX的IP地址是 192.168.168.6 ”
根域名服務(wù)器:“本地DNS服務(wù)器,查到XXX的IP地址是 192.168.168.6 ”
本地DNS服務(wù)器:“客戶端,查到XXX的IP地址是 192.168.168.6”
客戶端:“謝謝各位大佬,XXX的IP地址是 192.168.168.6 ,我可以和他愉快的通訊了”
Part3 迭代查詢通過上面的對(duì)話,我們可以發(fā)現(xiàn),遞歸查詢時(shí)如果客戶端所詢問的本地域名服務(wù)器不知道被查詢的域名的IP地址,那么本地域名服務(wù)器就以DNS客戶的身份,向其他頂級(jí)域名服務(wù)器繼續(xù)發(fā)出查詢,直到查詢到結(jié)果后,再層層傳遞回來。
客戶端:“本地DNS服務(wù)器大佬,求問XXX的IP地址是多少?”
本地DNS服務(wù)器:“不好意思,我不知道,但是根域名服務(wù)器可能會(huì)知道,你去問他吧”,本地DNS服務(wù)器說完,并把根域名服務(wù)器地址發(fā)給客戶端。
客戶端:“根域名服務(wù)器大佬,求問XXX的IP地址是多少?”
根域名服務(wù)器:“不好意思,我不也知道,但是A頂級(jí)域名服務(wù)器可能會(huì)知道,你去問他吧”,根域名服務(wù)器說完,并把A頂級(jí)域名服務(wù)器地址發(fā)給客戶端。
客戶端只能又跑去問A頂級(jí)域名服務(wù)器了。
客戶端:“A頂級(jí)域名服務(wù)器大佬,求問XXX的IP地址是多少?”
A頂級(jí)域名服務(wù)器:“不好意思,我不也知道,但是B域名服務(wù)器可能會(huì)知道,你去問他吧”,A頂級(jí)域名服務(wù)器說完,并把B域名服務(wù)器地址發(fā)給客戶端。
客戶端非常無奈,只能又跑去問B域名服務(wù)器了。
客戶端:“B域名服務(wù)器大佬,求問XXX的IP地址是多少?”
B域名服務(wù)器:“客戶端同學(xué),查到XXX的IP地址是 192.168.168.6” 。
客戶端:“謝謝B域名服務(wù)器大佬,XXX的IP地址是 192.168.168.6 ,我可以和他愉快的通訊了”
就這樣,客戶端在詢問了一大圈之后,終于知道了XXX的IP地址了。
Part4總結(jié)
在上一節(jié)中,我們知道了DNS的兩種查詢方法,但實(shí)際上,在DNS查詢過程中,客戶端和服務(wù)器也都會(huì)加入緩存的機(jī)制,這樣可以減少查詢的次數(shù),加快域名解析過程。當(dāng)我們?cè)跒g覽器中輸入一個(gè)網(wǎng)站時(shí),會(huì)發(fā)生如下過程
1、瀏覽器中輸入想要訪問的網(wǎng)站的域名,操作系統(tǒng)會(huì)先檢查本地的hosts文件是否有這個(gè)網(wǎng)址映射關(guān)系,如果有,就先調(diào)用這個(gè)IP地址映射,完成域名解析。
2、如果hosts里沒有這個(gè)域名的映射,客戶端會(huì)向本地DNS服務(wù)器發(fā)起查詢。本地DNS服務(wù)器收到查詢時(shí),如果要查詢的域名包含在本地配置區(qū)域資源中,則返回解析結(jié)果給客戶機(jī),完成域名解析。
3、如果本地DNS服務(wù)器本地區(qū)域文件與緩存解析都失效,則根據(jù)本地DNS服務(wù)器的設(shè)置,采用遞歸或者迭代查詢,直至解析完成。
這就是本文講的DNS的解析過程內(nèi)容啦,如果有什么地方不對(duì),歡迎在評(píng)論去指正。