DNS工作原理

DNS 是互聯(lián)網(wǎng)核心協(xié)議之一。不管是上網(wǎng)瀏覽,還是編程開發(fā),都需要了解一點它的知識。

一、什么是DNS

DNS (Domain Name System 的縮寫):域名系統(tǒng),一般指的是Internet 上的一項服務(wù),即域名解析服務(wù),是一種提供網(wǎng)站域名與對應(yīng)IP 地址相互轉(zhuǎn)換的一項服務(wù)。

它分為兩種,正向解析:將給定的網(wǎng)站域名轉(zhuǎn)化為對應(yīng)IP 地址;反向解析:將IP 地址轉(zhuǎn)化為對應(yīng)的網(wǎng)站域名。一般,我們只使用正向解析。

舉例來說:當(dāng)你要訪問 math.stackexchange.com,首先要通過DNS查出它的IP地址是151.101.129.69。它的工作原理簡單如下:

image

二、域名結(jié)構(gòu)

DNS 服務(wù)器是如何會知道每個域名的IP地址呢?答案是分級查詢。
?? 接下來,我們了解一下域名的層級:

??
image

根域:DNS域名使用中規(guī)定由尾部句點'.'來指定名稱位于根或者更高層次的域?qū)哟谓Y(jié)構(gòu)。

頂級域:用來指示某個國家、地區(qū)或者組織。采用三個字符,如com -> 商業(yè)公司,edu -> 教育機構(gòu),net -> 網(wǎng)絡(luò)公司,gov -> 非軍事政府機構(gòu)等等。

二級域:個人或者組織在Internet使用的注冊名稱。采用兩個字符,如:cn -> 代表中國,jp -> 日本,uk -> 英國,hk -> 香港等等。

主機:主機名處于域名空間結(jié)構(gòu)中的最底層,主機名和域名結(jié)合構(gòu)成FQDN,主機名是FQDN最左端的部分。

總結(jié)一下:主機名.次級域名.頂級域名.跟域名。我們所看到的域名,都是從頂級域名開始的。

三、域名服務(wù)器

DNS服務(wù)器也是按照層次安排的。每一個域名服務(wù)器只對域名體系中的一部分進行管轄。下面是域名服務(wù)器的層級安排:

image

根域名服務(wù)器:最高層次的域名服務(wù)器,也是最重要的域名服務(wù)器。所有的根域名服務(wù)器都知道所有的頂級域名服務(wù)器的域名和IP地址。不管是哪一個本地域名服務(wù)器,若要對因特網(wǎng)上任何一個域名進行解析,只要自己無法解析,就首先求助根域名服務(wù)器。所以根域名服務(wù)器是最重要的域名服務(wù)器。假定所有的根域名服務(wù)器都癱瘓了,那么整個DNS系統(tǒng)就無法工作。需要注意的是,在很多情況下,根域名服務(wù)器并不直接把待查詢的域名直接解析出IP地址,而是告訴本地域名服務(wù)器下一步應(yīng)當(dāng)找哪一個頂級域名服務(wù)器進行查詢。

頂級域名服務(wù)器:負責(zé)管理在該頂級域名服務(wù)器注冊的二級域名。

權(quán)限域名服務(wù)器:負責(zé)一個“區(qū)”的域名服務(wù)器。

本地域名服務(wù)器:本地服務(wù)器不屬于下圖的域名服務(wù)器的層次結(jié)構(gòu),但是它對域名系統(tǒng)非常重要。當(dāng)一個主機發(fā)出DNS查詢請求時,這個查詢請求報文就發(fā)送給本地域名服務(wù)器。

每一級域名都有自己的NS記錄,NS記錄指向該級域名的域名服務(wù)器。這些服務(wù)器知道下一級域名的各種記錄。

所謂"分級查詢",就是從根域名開始,依次查詢每一級域名的NS記錄,直到查到最終的IP地址,過程大致如下。

  1. 從"根域名服務(wù)器"查到"頂級域名服務(wù)器"的NS記錄和A記錄(IP地址)
  2. 從"頂級域名服務(wù)器"查到"次級域名服務(wù)器"的NS記錄和A記錄(IP地址)
  3. 從"次級域名服務(wù)器"查出"主機名"的IP地址

仔細看上面的過程,你可能發(fā)現(xiàn)了,沒有提到DNS服務(wù)器怎么知道"根域名服務(wù)器"的IP地址?;卮鹗?根域名服務(wù)器"的NS記錄和IP地址一般是不會變化的,所以內(nèi)置在DNS服務(wù)器里面。

四、域名解析過程

一、主機向本地域名服務(wù)器的查詢一般都是采用遞歸查詢。所謂遞歸查詢就是:如果主機所詢問的本地域名服務(wù)器不知道被查詢的域名的IP地址,那么本地域名服務(wù)器就以DNS客戶的身份,向其它根域名服務(wù)器繼續(xù)發(fā)出查詢請求報文(即替主機繼續(xù)查詢),而不是讓主機自己進行下一步查詢。因此,遞歸查詢返回的查詢結(jié)果或者是所要查詢的IP地址,或者是報錯,表示無法查詢到所需的IP地址。

二、本地域名服務(wù)器向根域名服務(wù)器的查詢的迭代查詢。迭代查詢的特點:當(dāng)根域名服務(wù)器收到本地域名服務(wù)器發(fā)出的迭代查詢請求報文時,要么給出所要查詢的IP地址,要么告訴本地服務(wù)器:“你下一步應(yīng)當(dāng)向哪一個域名服務(wù)器進行查詢”。然后讓本地服務(wù)器進行后續(xù)的查詢。根域名服務(wù)器通常是把自己知道的頂級域名服務(wù)器的IP地址告訴本地域名服務(wù)器,讓本地域名服務(wù)器再向頂級域名服務(wù)器查詢。頂級域名服務(wù)器在收到本地域名服務(wù)器的查詢請求后,要么給出所要查詢的IP地址,要么告訴本地服務(wù)器下一步應(yīng)當(dāng)向哪一個權(quán)限域名服務(wù)器進行查詢。最后,知道了所要解析的IP地址或報錯,然后把這個結(jié)果返回給發(fā)起查詢的主機。

image

五、示例

1、在瀏覽器中輸入www . qq .com 域名,操作系統(tǒng)會先檢查自己本地的hosts文件是否有這個網(wǎng)址映射關(guān)系,如果有,就先調(diào)用這個IP地址映射,完成域名解析。

2、如果hosts里沒有這個域名的映射,則查找本地DNS解析器緩存,是否有這個網(wǎng)址映射關(guān)系,如果有,直接返回,完成域名解析。

3、如果hos s與本地DNS解析器緩存都沒有相應(yīng)的網(wǎng)址映射關(guān)系,首先會找TCP/ip參數(shù)中設(shè)置的首選DNS服務(wù)器,在此我們叫它本地DNS服務(wù)器,此服務(wù)器收到查詢時,如果要查詢的域名,包含在本地配置區(qū)域資源中,則返回解析結(jié)果給客戶機,完成域名解析,此解析具有權(quán)威性。

4、如果要查詢的域名,不由本地DNS服務(wù)器區(qū)域解析,但該服務(wù)器已緩存了此網(wǎng)址映射關(guān)系,則調(diào)用這個IP地址映射,完成域名解析,此解析不具有權(quán)威性。

5、如果本地DNS服務(wù)器本地區(qū)域文件與緩存解析都失效,則根據(jù)本地DNS服務(wù)器的設(shè)置(是否設(shè)置轉(zhuǎn)發(fā)器)進行查詢,如果未用轉(zhuǎn)發(fā)模式,本地DNS就把請求發(fā)至13臺根DNS,根DNS服務(wù)器收到請求后會判斷這個域名(.com)是誰來授權(quán)管理,并會返回一個負責(zé)該頂級域名服務(wù)器的一個IP。本地DNS服務(wù)器收到IP信息后,將會聯(lián)系負責(zé).com域的這臺服務(wù)器。這臺負責(zé).com域的服務(wù)器收到請求后,如果自己無法解析,它就會找一個管理.com域的下一級DNS服務(wù)器地址(http://qq.com)給本地DNS服務(wù)器。當(dāng)本地DNS服務(wù)器收到這個地址后,就會找http://qq.com域服務(wù)器,重復(fù)上面的動作,進行查詢,直至找到www . qq .com主機。

6、如果用的是轉(zhuǎn)發(fā)模式,此DNS服務(wù)器就會把請求轉(zhuǎn)發(fā)至上一級DNS服務(wù)器,由上一級服務(wù)器進行解析,上一級服務(wù)器如果不能解析,或找根DNS或把轉(zhuǎn)請求轉(zhuǎn)至上上級,以此循環(huán)。不管是本地DNS服務(wù)器用是是轉(zhuǎn)發(fā),還是根提示,最后都是把結(jié)果返回給本地DNS服務(wù)器,由此DNS服務(wù)器再返回給客戶機。

從客戶端到本地DNS服務(wù)器是屬于遞歸查詢,而DNS服務(wù)器之間就是的交互查詢就是迭代查詢。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 目錄: 一些基本概念主機名DNS名稱解析DNS 解析的后端存儲名稱解析總結(jié) 大規(guī)模域名解析的體系架構(gòu)DNS 解析需...
    C86guli閱讀 12,769評論 3 34
  • 14.1 引言 域名系統(tǒng)(DNS)是一種用于TCP/IP應(yīng)用程序的分布式數(shù)據(jù)庫,它提供主機名字和IP地址之間的轉(zhuǎn)換...
    張芳濤閱讀 2,030評論 0 8
  • 1. 概述 在網(wǎng)絡(luò)環(huán)境中一般用戶只需要在瀏覽器中輸入url如www.sunny.com就可以到對應(yīng)服務(wù)器獲取相應(yīng)的...
    ghbsunny閱讀 3,409評論 0 7
  • DNS(Domain Name System,域名系統(tǒng)),因特網(wǎng)上作為域名和IP地址相互映射的一個分布式數(shù)據(jù)庫,能...
    一直在努力hard閱讀 4,807評論 3 19
  • 一、域名系統(tǒng)1、域名系統(tǒng)概述域名系統(tǒng)DNS(Domain Name System)是因特網(wǎng)使用的命名系統(tǒng),用來把便...
    放風(fēng)箏的小小馬閱讀 2,820評論 0 0

友情鏈接更多精彩內(nèi)容