背景
在互聯(lián)網(wǎng)的世界中是用ip來(lái)標(biāo)識(shí)一臺(tái)服務(wù)器的塘娶,因此在很早的時(shí)候大家都是通過(guò)ip來(lái)訪問(wèn)其他服務(wù)器上的資源的。倘若讓你在瀏覽器中輸入115.239.210.27這樣的URL你肯定不能接受痊夭。所以把通過(guò)ip訪問(wèn)替換成通過(guò)名字(域名)訪問(wèn)是很有必要的刁岸,因此把用戶輸入的名字解析成ip的服務(wù)也就應(yīng)運(yùn)而生了。
名詞解釋
- DNS(domain name server)域名解析服務(wù)器
- URL統(tǒng)一資源標(biāo)識(shí)符
- TTL time-to-live 生存時(shí)間
- LDNS 本地DNS服務(wù)器
- gTLD全球DNS服務(wù)器
解析過(guò)程
- 當(dāng)用戶在瀏覽器輸入一個(gè)域名的時(shí)候她我,最先瀏覽器會(huì)從自己中的緩存中尋找指定的結(jié)果虹曙。如果找到了域名對(duì)應(yīng)的的ip則域名解析完成。這個(gè)緩存空間大小是有限的番舆,另外每一條結(jié)果都有過(guò)期時(shí)間酝碳,這個(gè)過(guò)期時(shí)間通過(guò)TTL屬性來(lái)指定。這個(gè)過(guò)期時(shí)間過(guò)長(zhǎng)過(guò)短都不好恨狈。過(guò)長(zhǎng)的話疏哗,如果服務(wù)器的ip發(fā)生了變化則會(huì)發(fā)生訪問(wèn)錯(cuò)誤的服務(wù)器的問(wèn)題,如果過(guò)短的話禾怠,每次訪問(wèn)都要重新解析一次域名返奉。
- 如果在瀏覽器中的緩存沒有命中,則會(huì)在系統(tǒng)的緩存中來(lái)查找是這個(gè)域名否有對(duì)應(yīng)的DNS解析結(jié)果吗氏,如果有則域名解析完成衡瓶。這個(gè)緩存通常是以文件的方式來(lái)保存,比如windows下是通過(guò)C:\windwos\system32\driver\etc\hosts文件來(lái)設(shè)置的牲证,linux中則是/etc/named.confg文件哮针。通過(guò)編輯這個(gè)文件我們能把域名映射到任意一個(gè)ip中。
如果前面兩個(gè)流程都沒有找到指定域名的解析結(jié)果,那么下面就要進(jìn)行真正的域名解析了十厢。為什么叫真正的域名解析呢等太?因?yàn)榍懊娴亩际窃诒緳C(jī)中完成的,下面的流程就要依賴外部服務(wù)器來(lái)查找指定的域名的解析結(jié)果
- 系統(tǒng)緩存中未命中之后會(huì)把這個(gè)域名提交到指定LDNS服務(wù)器中蛮放,這個(gè)服務(wù)器就是你計(jì)算機(jī)設(shè)定(或自動(dòng)獲人趼铡)的DNS服務(wù)器。如果你在學(xué)校的網(wǎng)絡(luò)中包颁,這個(gè)DNS服務(wù)器一定在你學(xué)校里瞻想,如果你是在小區(qū)的網(wǎng)絡(luò),這個(gè)DNS服務(wù)器通常是運(yùn)營(yíng)商提供的娩嚼∧⑾眨總之這個(gè)服務(wù)器在物理位置上離你比較近。這個(gè)域名解析服務(wù)器緩存了大量的域名的DNS解析結(jié)果岳悟。由于它的性能較好佃迄,物理上的距離又比較近,它通常會(huì)在很短的時(shí)間內(nèi)返回指定域名的解析結(jié)果贵少。大約80%的DNS解析需求在這一步就滿足了呵俏,所以LDNS完成了大部分的DNS解析任務(wù)。
- 如果指定的域名在LDNS服務(wù)器的緩存中仍然沒有命中滔灶,LDNS會(huì)向ROOT Server發(fā)送請(qǐng)求普碎。
- ROOT Server會(huì)返回給LDNS一個(gè)指定域名對(duì)應(yīng)的主域名服務(wù)器gTL的地址D,gTLD是頂級(jí)域名服務(wù)器,如com,cn,org等,全球就十幾臺(tái)录平。
- LDNS接下來(lái)會(huì)向這個(gè)gTLD服務(wù)器發(fā)送域名解析請(qǐng)求麻车。
- 接受請(qǐng)求的gTLD會(huì)返回給LDNS一個(gè)該域名對(duì)應(yīng)的Name Server服務(wù)器地址,這個(gè)Name Server通常就是你注冊(cè)的域名服務(wù)器萄涯。例如你在某個(gè)域名服務(wù)提供商申請(qǐng)的域名绪氛,這個(gè)域名就由他們的服務(wù)器來(lái)解析唆鸡。
- NAME Server會(huì)把指定域名的ip和一個(gè)TTL返回給LDNS涝影。
- LDNS會(huì)把這個(gè)結(jié)果緩存下來(lái),緩存的過(guò)期時(shí)間由TTL來(lái)決定争占。
10.然后LDNS再把這個(gè)結(jié)果返回給用戶燃逻,DNS解析結(jié)束。
從上面來(lái)看如果LDNS中沒有查找到指定域名的對(duì)應(yīng)ip臂痕,則需要很長(zhǎng)的時(shí)間來(lái)獲取解析結(jié)果伯襟。但是一旦解析結(jié)果被緩存了,下次再請(qǐng)求同樣的域名就不會(huì)這么慢了握童。