遞歸服務(wù)器怎么知道根權(quán)威服務(wù)器的地址?很簡單,在遞歸服務(wù)器上都保存有一份根服務(wù)器的地址列表,如上面表格列出的根服務(wù)器的地址。
遞歸服務(wù)器每次查詢域名都要向根那里找權(quán)威服務(wù)器嗎?不是的,一旦成功一次,遞歸服務(wù)器就會把權(quán)威服務(wù)器列表緩存下來(如COM頂級服務(wù)器列表可以緩存48小時)。
轉(zhuǎn)發(fā)DNS
負(fù)責(zé)接受用戶查詢,并返回結(jié)果給用戶。但這個結(jié)果不是按標(biāo)準(zhǔn)的域名解析過程得到的,而是直接把遞歸DNS的結(jié)果轉(zhuǎn)發(fā)給用戶。它也具備緩存功能。他主要使用在沒有直接的互聯(lián)網(wǎng)連接,但可以連接到一個遞歸DNS那里,這時使用轉(zhuǎn)發(fā)DNS就比較合適。其缺陷是:直接受遞歸DNS的影響,服務(wù)品質(zhì)較差。比如我們用的路由器里面的DNS就是這一類,用路由器的朋友可以看下本地電腦的DNS一般都是192.168.1.1。
因此轉(zhuǎn)發(fā)DNS可以看作是一種特殊的遞歸。如果本地的緩存記錄中沒有相應(yīng)域名結(jié)果時,其將查詢請求轉(zhuǎn)發(fā)給另外一臺DNS服務(wù)器,由另外一臺DNS服務(wù)器來完成查詢請求。
DNS查詢過程

DNS污染
指的是用戶訪問一個地址,國內(nèi)的服務(wù)器(非DNS)監(jiān)控到用戶訪問的已經(jīng)被標(biāo)記地址時,服務(wù)器偽裝成DNS服務(wù)器向用戶發(fā)回錯誤的地址的行為。 為了減免網(wǎng)絡(luò)上的交通,一般的域名都會把外間的域名服務(wù)器數(shù)據(jù)暫存起來,待下次有其他機(jī)器要求解析域名時,可以立即提供服務(wù)。一旦有關(guān)網(wǎng)域的局域域名服務(wù)器的緩存受到污染,就會把網(wǎng)域內(nèi)的電腦導(dǎo)引往錯誤的服務(wù)器或服務(wù)器的網(wǎng)址。
某個國家出現(xiàn)過多次的DNS污染, 參看 知乎 。
DNS緩存
查詢DNS的時候可能會有多個地方存在緩存:
瀏覽器 DNS緩存
Java DNS緩存
OS DNS緩存
Local DNS緩存
##eDNS
由于CDN主要根據(jù)用戶LocalDNS的請求IP的運(yùn)營商和地理屬性返回相同或相近屬性的節(jié)點,當(dāng)用戶使用了非當(dāng)前網(wǎng)絡(luò)運(yùn)營商提供的DNS而使用知名的開發(fā)DNS如谷歌DNS(8.8.8.8或8.8.4.4)或OpenDNS(208.67.222.222或208.67.220.220)時,CDN往往不能正確選擇最優(yōu)節(jié)點,這也造成部分用戶對CDN的效果產(chǎn)生了質(zhì)疑。
針對這種狀況,谷歌提出一個草案,并已由IETF牽頭作為一個公開的標(biāo)準(zhǔn)建議,該草案叫 “edns-client-subnet” ,允許DNS resolver傳遞用戶的ip地址給權(quán)威 DNS 服務(wù)器。其原理是當(dāng)用戶請求DNS的時候,遞歸DNS查詢服務(wù)器將用戶的IP或IP子網(wǎng)信息發(fā)給權(quán)威DNS服務(wù)器,權(quán)威服務(wù)器可以根據(jù)該信息返回相應(yīng)的查詢結(jié)果。