DNS(Domain Names System),域名系統,是互聯(lián)網(wǎng)一項服務(wù),是進(jìn)行域名和與之相對應的 IP 地址進(jìn)行轉換的服務(wù)器。

簡(jiǎn)單來(lái)講,DNS相當于一個(gè)翻譯官,負責將域名翻譯成ip地址。
IP 地址:一長(cháng)串能夠唯一地標記網(wǎng)絡(luò )上的計算機的數字 域名:是由一串用點(diǎn)分隔的名字組成的 Internet 上某一臺計算機或計算機組的名稱(chēng),用于在數據傳輸時(shí)對計算機的定位標識 。

域名是一個(gè)具有層次的結構,從上到下一次為根域名、頂級域名、二級域名、三級域名…

例如www.xxx.com,www為三級域名、xxx為二級域名、com為頂級域名,系統為用戶(hù)做了兼容,域名末尾的根域名.一般不需要輸入
在域名的每一層都會(huì )有一個(gè)域名服務(wù)器,如下圖:

除此之外,還有電腦默認的本地域名服務(wù)器。
DNS 查詢(xún)的方式有兩種:
遞歸查詢(xún):如果 A 請求 B,那么 B 作為請求的接收者一定要給 A 想要的答案

迭代查詢(xún):如果接收者 B 沒(méi)有請求者 A 所需要的準確內容,接收者 B 將告訴請求者 A,如何去獲得這個(gè)內容,但是自己并不去發(fā)出請求 。

在域名服務(wù)器解析的時(shí)候,使用緩存保存域名和IP地址的映射。
計算機中DNS的記錄也分成了兩種緩存方式:
瀏覽器緩存:瀏覽器在獲取網(wǎng)站域名的實(shí)際 IP 地址后會(huì )對其進(jìn)行緩存,減少網(wǎng)絡(luò )請求的損耗
操作系統緩存:操作系統的緩存其實(shí)是用戶(hù)自己配置的 hosts 文件。
解析域名的過(guò)程如下:
首先搜索瀏覽器的 DNS 緩存,緩存中維護一張域名與 IP 地址的對應表。
若沒(méi)有命中,則繼續搜索操作系統的 DNS 緩存。
若仍然沒(méi)有命中,則操作系統將域名發(fā)送至本地域名服務(wù)器,本地域名服務(wù)器采用遞歸查詢(xún)自己的 DNS 緩存,查找成功則返回結果。
若本地域名服務(wù)器的 DNS 緩存沒(méi)有命中,則本地域名服務(wù)器向上級域名服務(wù)器進(jìn)行迭代查詢(xún)。
首先本地域名服務(wù)器向根域名服務(wù)器發(fā)起請求,根域名服務(wù)器返回頂級域名服務(wù)器的地址給本地服務(wù)器 本地域名服務(wù)器拿到這個(gè)頂級域名服務(wù)器的地址后,就向其發(fā)起請求,獲取權限域名服務(wù)器的地址 本地域名服務(wù)器根據權限域名服務(wù)器的地址向其發(fā)起請求,最終得到該域名對應的 IP 地址 本地域名服務(wù)器將得到的 IP 地址返回給操作系統,同時(shí)自己將 IP 地址緩存起來(lái)。
操作系統將 IP 地址返回給瀏覽器,同時(shí)自己也將 IP 地址緩存起。
至此,瀏覽器就得到了域名對應的 IP 地址,并將 IP 地址緩存起。
流程如下圖所示:

下面解析步驟進(jìn)行講解,后面將采用命令行的形式來(lái)跟蹤解析過(guò)程。當用戶(hù)在地址欄鍵入并敲下回車(chē)鍵之后,域名解析就開(kāi)始了。
第一步:檢查瀏覽器緩存中是否緩存過(guò)該域名對應的IP地址
用戶(hù)通過(guò)瀏覽器瀏覽過(guò)某網(wǎng)站之后,瀏覽器就會(huì )自動(dòng)緩存該網(wǎng)站域名對應的地址,當用戶(hù)再次訪(fǎng)問(wèn)的時(shí)候,瀏覽器就會(huì )從緩存中查找該域名對應的IP地址,因為緩存不僅是有大小限制,而且還有時(shí)間限制(域名被緩存的時(shí)間通過(guò)屬性來(lái)設置),所以存在域名對應的找不到的情況。當瀏覽器從緩存中找到了該網(wǎng)站域名對應的地址,那么整個(gè)解析過(guò)程結束,如果沒(méi)有找到,將進(jìn)行下一步驟。對于的緩存時(shí)間問(wèn)題,不宜設置太長(cháng)的緩存時(shí)間,時(shí)間太長(cháng),如果域名對應的發(fā)生變化,那么用戶(hù)將在一段時(shí)間內無(wú)法正常訪(fǎng)問(wèn)到網(wǎng)站,如果太短,那么又造成頻繁解析域名。
第二步:如果在瀏覽器緩存中沒(méi)有找到IP,那么將繼續查找本機系統是否緩存過(guò)IP
如果第一個(gè)步驟沒(méi)有完成對域名的解析過(guò)程,那么瀏覽器會(huì )去系統緩存中查找系統是否緩存過(guò)這個(gè)域名對應的地址,也可以理解為系統自己也具備域名解析的基本能力。在系統中,可以通過(guò)設置文件來(lái)將域名手動(dòng)綁定到某上,文件位置在。對于普通用戶(hù),并不推薦自己手動(dòng)綁定域名和,對于開(kāi)發(fā)者來(lái)說(shuō),通過(guò)綁定域名和,可以輕松切換環(huán)境,可以從測試環(huán)境切換到開(kāi)發(fā)環(huán)境,方便開(kāi)發(fā)和測試。在系統中,黑客常常修改他的電腦的文件,將用戶(hù)常常訪(fǎng)問(wèn)的域名綁定到他指定的上,從而實(shí)現了本地解析,導致這些域名被劫持。在或者系統中,文件在,修改該文件也可以實(shí)現同樣的目的。
前兩步都是在本機上完成的,所以沒(méi)有在上面示例圖上展示出來(lái),從第三步開(kāi)始,才正在地向遠程DNS服務(wù)器發(fā)起解析域名的請求。
第三步:向本地域名解析服務(wù)系統發(fā)起域名解析的請求
如果在本機上無(wú)法完成域名的解析,那么系統只能請求本地域名解析服務(wù)系統進(jìn)行解析,本地域名系統一般都是本地區的域名服務(wù)器,比如你連接的校園網(wǎng),那么域名解析系統就在你的校園機房里,如果你連接的是電信、移動(dòng)或者聯(lián)通的網(wǎng)絡(luò ),那么本地域名解析服務(wù)器就在本地區,由各自的運營(yíng)商來(lái)提供服務(wù)。對于本地服務(wù)器地址,系統使用命令就可以查看,在和系統下,直接使用命令來(lái)查看服務(wù)地址。一般都緩存了大部分的域名解析的結果,當然緩存時(shí)間也受域名失效時(shí)間控制,大部分的解析工作到這里就差不多已經(jīng)結束了,負責了大部分的解析工作。
第四步:向根域名解析服務(wù)器發(fā)起域名解析請求
本地域名解析器還沒(méi)有完成解析的話(huà),那么本地域名解析服務(wù)器將向根域名服務(wù)器發(fā)起解析請求。
第五步:根域名服務(wù)器返回gTLD域名解析服務(wù)器地址
本地域名解析向根域名服務(wù)器發(fā)起解析請求,根域名服務(wù)器返回的是所查域的通用頂級域()地址,常見(jiàn)的通用頂級域有、、、等。
第六步:向gTLD服務(wù)器發(fā)起解析請求
本地域名解析服務(wù)器向gTLD服務(wù)器發(fā)起請求。
第七步:gTLD服務(wù)器接收請求并返回Name Server服務(wù)器
服務(wù)器接收本地域名服務(wù)器發(fā)起的請求,并根據需要解析的域名,找到該域名對應的域名服務(wù)器,通常情況下,這個(gè)服務(wù)器就是你注冊的域名服務(wù)器,那么你注冊的域名的服務(wù)商的服務(wù)器將承擔起域名解析的任務(wù)。
第八步:Name Server服務(wù)器返回IP地址給本地服務(wù)器
服務(wù)器查找域名對應的地址,將地址連同值返回給本地域名服務(wù)器。
第九步:本地域名服務(wù)器緩存解析結果
本地域名服務(wù)器緩存解析后的結果,緩存時(shí)間由時(shí)間來(lái)控制。
第十步:返回解析結果給用戶(hù)
解析結果將直接返回給用戶(hù),用戶(hù)系統將緩存該地址,緩存時(shí)間由來(lái)控制,至此,解析過(guò)程結束。
這里對解析的步驟進(jìn)行了一個(gè)簡(jiǎn)單的介紹分析,后面將通過(guò)命令行的形式來(lái)解析一個(gè)域名的具體解析過(guò)程。
在正式開(kāi)始分析解析過(guò)程之前,先來(lái)介紹幾個(gè)基本的域名解析方式的概念。域名解析記錄主要分為A記錄、MX記錄、CNAME記錄、NS記錄以及TXT記錄。DNS 資源記錄
在 DNS 服務(wù)器上,一個(gè)域名及其下級域名組成一個(gè)區域。相關(guān)的 DNS 信息構成一個(gè)數據庫文件。所以每個(gè)區域數據庫文件都是由資源記錄構成的,一個(gè)資源記錄就是一行文本,提供了一組有用的 DNS 配置信息。
常見(jiàn)的資源記錄類(lèi)型如下所示。

A記錄:就是解析我們常見(jiàn)的帶www和不帶www的域名,解析不帶www的域名時(shí)主機記錄填@或者不填,解析帶www得域名時(shí)主機記錄填www。
MX記錄:表示的是Mail Exchange,就是可以將某個(gè)域名下的郵件服務(wù)器指向自己的Mail Server,如http://xxxxx.com域名的A記錄IP地址是115.***.25.***,如果MX記錄設置為115.***.25.***,是xxx@xxxxxx.com的郵件路由,DNS會(huì )將郵件發(fā)送到***.238.25.***所在的服務(wù)器,而正常通過(guò)Web請求的話(huà)仍然解析到A記錄的IP地址。
CNAME記錄:全稱(chēng)是Canonical Name(別名解析)。所謂的別名解析就是可以為一個(gè)域名設置一個(gè)或者多個(gè)別名,別名解析通常用來(lái)解析二級域名。
NS記錄:為某個(gè)域名指定DNS解析服務(wù)器,也就是這個(gè)域名有指定的IP地址的DNS服務(wù)器去解析。
TXT記錄:為某個(gè)主機名或域名設置說(shuō)明,如可以為http://maikeseo.com設置TXT記錄為”麥可SEO”這樣的說(shuō)明。
上面概念中的地址都是假定的,幫助理解。下面將通過(guò)解析域名為例,進(jìn)一步說(shuō)明域名解析流程。
直接查看域名結果,可以通過(guò)命令加上域名來(lái)查看:

上圖中表示解析結果來(lái)自非權威服務(wù)器,也就是說(shuō)這個(gè)結果來(lái)自緩存,并沒(méi)有完全經(jīng)歷全部的解析過(guò)程,從某個(gè)緩存中讀取的結果,這個(gè)結果存在一定的隱患,比如域名對應的地址已經(jīng)更變。
這只是一個(gè)快捷的解析結果,如果需要瀏覽全部的解析過(guò)程,那么可以使用命令來(lái)查看解析過(guò)程。

分析上圖解析過(guò)程,我們可以看出:
第一步:從本地域名解析服務(wù)器獲取到個(gè)根域名服務(wù)器對應的主機名。

第二步:從個(gè)根域名服務(wù)器中的其中一個(gè)(這里是)獲取到頂級的服務(wù)器(未顯示)和名稱(chēng)。

第三步:向域的一臺服務(wù)器請求解析,它返回了域的服務(wù)器(未顯示)和名稱(chēng),百度有四臺頂級域的服務(wù)器。

第四步:向百度的頂級域服務(wù)器請求,它發(fā)現這個(gè)有個(gè)別名,而不是一臺主機,別名是www.a.shifen.com。
一般情況下,解析到別名就停止了,返回了具體的地址,如果想看到具體的地址,可以進(jìn)一步對別名進(jìn)行解析,解析結果如下:

這時(shí)候看到最后的解析結果是a.shifen.com.。在解析別名的過(guò)程中,可以發(fā)現和都是指定了相同的域名解析服務(wù)器。以上是一個(gè)域名的解析過(guò)程,最后的解析結果和一開(kāi)始的使用的結果一致。
聯(lián)系客服