dns查詢過(guò)程解析
DNS查詢模式有遞歸查詢和迭代查詢搂根,他們的區(qū)別如下:
(1)遞歸查詢
遞歸查詢是一種DNS 服務(wù)器的查詢模式,在該模式下DNS 服務(wù)器接收到客戶機(jī)請(qǐng)求响委,必須使用一個(gè)準(zhǔn)確的查詢結(jié)果回復(fù)客戶機(jī)新思。如果DNS 服務(wù)器本地沒有存儲(chǔ)查詢DNS 信息,那么該服務(wù)器會(huì)詢問(wèn)其他服務(wù)器赘风,并將返回的查詢結(jié)果提交給客戶機(jī)夹囚。
(2)迭代查詢
DNS 服務(wù)器另外一種查詢方式為迭代查詢,DNS 服務(wù)器會(huì)向客戶機(jī)提供其他能夠解析查詢請(qǐng)求的DNS 服務(wù)器地址邀窃,當(dāng)客戶機(jī)發(fā)送查詢請(qǐng)求時(shí)荸哟,DNS 服務(wù)器并不直接回復(fù)查詢結(jié)果,而是告訴客戶機(jī)另一臺(tái)DNS 服務(wù)器地址,客戶機(jī)再向這臺(tái)DNS 服務(wù)器提交請(qǐng)求鞍历,依次循環(huán)直到返回查詢的結(jié)果
為止舵抹。
客戶端和DNS服務(wù)器(本地域名服務(wù)器)之間使用的是遞歸查詢,而DNS服務(wù)器之間使用的是迭代查詢.
圖一:
圖二:
? ? ? ? ? ? ? ? ? ? 迭代查詢 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 遞歸查詢
dns解析的過(guò)程
客戶端通過(guò)域名訪問(wèn)站點(diǎn)時(shí)堰燎,必須要有DNS服務(wù)器解析到指定的IP地址上掏父,才能進(jìn)行下一步的
訪問(wèn)「鸭簦客戶端發(fā)起訪問(wèn)請(qǐng)求后赊淑,首先檢查本地host文件,檢查是否存在對(duì)應(yīng)的IP映射關(guān)系仅讽,如果有則
直接通過(guò)映射的IP進(jìn)行訪問(wèn)陶缺;如果沒有則將請(qǐng)求發(fā)送給首選的DNS服務(wù)器。
客戶端和DNS服務(wù)器之間使用的是遞歸查詢洁灵,而DNS服務(wù)器之間使用的是迭代查詢.
遞歸查詢時(shí)要求所請(qǐng)求的DNS服務(wù)器應(yīng)答給客戶端所請(qǐng)求的域名和IP的映射關(guān)系;
迭代查詢時(shí)所請(qǐng)求的DNS服務(wù)器應(yīng)答給客戶端的不一定是域名和IP地址的映射關(guān)系饱岸,也可以是另一臺(tái)
DNS服務(wù)器,讓客戶端再將請(qǐng)求發(fā)送到另一臺(tái)DNS服務(wù)器.
下面按上圖根據(jù)實(shí)例介紹DNS解析全過(guò)程.
客戶端發(fā)起訪問(wèn)請(qǐng)求www.163.com:
1.查看本地hosts文件徽千,發(fā)現(xiàn)沒有www.163.com IP 映射關(guān)系苫费,將請(qǐng)求發(fā)送給本地DNS服務(wù)器
----遞歸查詢----
2.本地DNS服務(wù)器不包含163.com的權(quán)威域,不存在對(duì)應(yīng)的www記錄双抽,因此將請(qǐng)求轉(zhuǎn)發(fā)到根域名服務(wù)器
(假如 ?a.root-servers.net.)
3.根域名DNS服務(wù)器會(huì)返回負(fù)責(zé).com域解析的服務(wù)器(假如 a.gtld-servers.net.)給本地DNS服務(wù)器百框,
本地DNS服務(wù)器再將請(qǐng)求發(fā)送給 a.gtld-servers.net
4..com域名服務(wù)器只能返回負(fù)責(zé)163.com域的解析服務(wù)器(如 ns1.nease.net.)給本地DNS服務(wù)器,本地
DNS服務(wù)器再將請(qǐng)求發(fā)送給ns1.nease.net.
5.由ns1.nease.net.域名服務(wù)器返回www.163.com 的 IP映射關(guān)系給本地DNS服務(wù)器
(2-5過(guò)程)----迭代查詢----
6.本地DNS服務(wù)器將結(jié)果保存到本地緩存,并保持TTL時(shí)間牍汹,同時(shí)將結(jié)果應(yīng)答給客戶端.
----遞歸查詢---- ----查詢結(jié)束----
7.當(dāng)其他客戶端再次向本地DNS服務(wù)器查詢www.163.com時(shí)铐维,在TTL時(shí)間內(nèi),本地DNS服務(wù)器不再向根
域名服務(wù)器轉(zhuǎn)發(fā)請(qǐng)求慎菲,而是直接從緩存中讀取數(shù)據(jù)應(yīng)答給客戶端. 如果已經(jīng)超過(guò)TTL時(shí)間嫁蛇,則本地DNS
服務(wù)器會(huì)再次經(jīng)歷一次上訴2-6的過(guò)程.
本地DNS服務(wù)器在代替客戶端向其他服務(wù)器查詢時(shí),客戶端完全處于等待狀態(tài)露该。
遞歸查詢時(shí)睬棚,返回的結(jié)果只有兩種:查詢成功或查詢失敗.
迭代查詢,又稱作重指引,返回的是最佳的查詢點(diǎn)或者主機(jī)地址.
為了提高DNS查詢效率解幼,并減輕服務(wù)器的負(fù)荷和減少因特網(wǎng)上的DNS查詢報(bào)文數(shù)量闸拿,在域名服務(wù)器中廣泛使用了高速緩存,用來(lái)存放最近查詢過(guò)的域名以及從何處獲得域名映射信息的記錄书幕。
例如新荤,在上面的查詢過(guò)程中,如果在客戶端主機(jī)上不久前已經(jīng)有用戶查詢過(guò)163.com的IP地址台汇,那么本地域名服務(wù)器就不必向根域名服務(wù)器重新查詢163.com的IP地址苛骨,而是直接把告訴緩存中存放的上次查詢結(jié)果(即163.com的IP地址)告訴用戶篱瞎。
由于名字到地址的綁定并不經(jīng)常改變,為保持告訴緩存中的內(nèi)容正確痒芝,域名服務(wù)器應(yīng)為每項(xiàng)內(nèi)容設(shè)置計(jì)時(shí)器并處理超過(guò)合理時(shí)間的項(xiàng)(例如每個(gè)項(xiàng)目?jī)商?俐筋。當(dāng)域名服務(wù)器已從緩存中刪去某項(xiàng)信息后又被請(qǐng)求查詢?cè)擁?xiàng)信息,就必須重新到授權(quán)管理該項(xiàng)的域名服務(wù)器綁定信息严衬。當(dāng)權(quán)限服務(wù)器回答一個(gè)查詢請(qǐng)求時(shí)澄者,在響應(yīng)中都指明綁定有效存在的時(shí)間值。增加此時(shí)間值可減少網(wǎng)絡(luò)開銷请琳,而減少此時(shí)間值可提高域名解析的正確性粱挡。
不僅在本地域名服務(wù)器中需要高速緩存,在主機(jī)中也需要俄精。許多主機(jī)在啟動(dòng)時(shí)從本地服務(wù)器下載名字和地址的全部數(shù)據(jù)庫(kù)询筏,維護(hù)存放自己最近使用的域名的高速緩存,并且只在從緩存中找不到名字時(shí)才使用域名服務(wù)器竖慧。維護(hù)本地域名服務(wù)器數(shù)據(jù)庫(kù)的主機(jī)應(yīng)當(dāng)定期地檢查域名服務(wù)器以獲取新的映射信息嫌套,而且主機(jī)必須從緩存中刪除無(wú)效的項(xiàng)。由于域名改動(dòng)并不頻繁圾旨,大多數(shù)網(wǎng)點(diǎn)不需花精力就能維護(hù)數(shù)據(jù)庫(kù)的一致性踱讨。