DNS原理及其解析過(guò)程

為什么需要DNS解析域名為IP地址?

網(wǎng)絡(luò)通訊大部分是基于TCP/IP的,而TCP/IP是基于IP地址的,所以計(jì)算機(jī)在網(wǎng)絡(luò)上進(jìn)行通訊時(shí)只能識(shí)別如“202.96.134.133”之類(lèi)的IP地址,而不能認(rèn)識(shí)域名。我們無(wú)法記住10個(gè)以上IP地址的網(wǎng)站,所以我們?cè)L問(wèn)網(wǎng)站時(shí),更多的是在瀏覽器地址欄中輸入域名,就能看到所需要的頁(yè)面,這是因?yàn)橛幸粋€(gè)叫“DNS服務(wù)器”的計(jì)算機(jī)自動(dòng)把我們的域名“翻譯”成了相應(yīng)的IP地址,然后調(diào)出IP地址所對(duì)應(yīng)的網(wǎng)頁(yè)。

具體什么是DNS?
DNS( Domain Name System)是“域名系統(tǒng)”的英文縮寫(xiě),是一種組織成域?qū)哟谓Y(jié)構(gòu)的計(jì)算機(jī)和網(wǎng)絡(luò)服務(wù)命名系統(tǒng),它用于TCP/IP網(wǎng)絡(luò),它所提供的服務(wù)是用來(lái)將主機(jī)名和域名轉(zhuǎn)換為IP地址的工作。DNS就是這樣的一位“翻譯官”,它的基本工作原理可用下圖來(lái)表示。

image

DNS 的過(guò)程?

關(guān)于DNS的獲取流程:
DNS是應(yīng)用層協(xié)議,事實(shí)上他是為其他應(yīng)用層協(xié)議工作的,包括不限于HTTP和SMTP以及FTP,用于將用戶(hù)提供的主機(jī)名解析為ip地址。
具體過(guò)程如下:
①用戶(hù)主機(jī)上運(yùn)行著DNS的客戶(hù)端,就是我們的PC機(jī)或者手機(jī)客戶(hù)端運(yùn)行著DNS客戶(hù)端了
②瀏覽器將接收到的url中抽取出域名字段,就是訪(fǎng)問(wèn)的主機(jī)名,比如

http://www.baidu.com/

, 并將這個(gè)主機(jī)名傳送給DNS應(yīng)用的客戶(hù)端
③DNS客戶(hù)機(jī)端向DNS服務(wù)器端發(fā)送一份查詢(xún)報(bào)文,報(bào)文中包含著要訪(fǎng)問(wèn)的主機(jī)名字段(中間包括一些列緩存查詢(xún)以及分布式DNS集群的工作)
④該DNS客戶(hù)機(jī)最終會(huì)收到一份回答報(bào)文,其中包含有該主機(jī)名對(duì)應(yīng)的IP地址
⑤一旦該瀏覽器收到來(lái)自DNS的IP地址,就可以向該IP地址定位的HTTP服務(wù)器發(fā)起TCP連接

DNS服務(wù)的體系架構(gòu)是怎樣的?

DNS domain name system 主要作用就是將主機(jī)域名轉(zhuǎn)換為ip地址

假設(shè)運(yùn)行在用戶(hù)主機(jī)上的某些應(yīng)用程序(如Webl瀏覽器或者郵件閱讀器)需要將主機(jī)名轉(zhuǎn)換為IP地址。這些應(yīng)用程序?qū)⒄{(diào)用DNS的客戶(hù)機(jī)端,并指明需要被轉(zhuǎn)換的主機(jī)名。(在很多基于UNIX的機(jī)器上,應(yīng)用程序?yàn)榱藞?zhí)行這種轉(zhuǎn)換需要調(diào)用函數(shù)gethostbyname())。用戶(hù)主機(jī)的DNS客戶(hù)端接收到后,向網(wǎng)絡(luò)中發(fā)送一個(gè)DNS查詢(xún)報(bào)文。所有DNS請(qǐng)求和回答報(bào)文使用的UDP數(shù)據(jù)報(bào)經(jīng)過(guò)端口53發(fā)送(至于為什么使用UDP,請(qǐng)參看為什么域名根服務(wù)器只能有13臺(tái)呢? - 郭無(wú)心的回答)經(jīng)過(guò)若干ms到若干s的延時(shí)后,用戶(hù)主機(jī)上的DNS客戶(hù)端接收到一個(gè)提供所希望映射的DNS回答報(bào)文。這個(gè)查詢(xún)結(jié)果則被傳遞到調(diào)用DNS的應(yīng)用程序。因此,從用戶(hù)主機(jī)上調(diào)用應(yīng)用程序的角度看,DNS是一個(gè)提供簡(jiǎn)單、直接的轉(zhuǎn)換服務(wù)的黑盒子。但事實(shí)上,實(shí)現(xiàn)這個(gè)服務(wù)的黑盒子非常復(fù)雜,它由分布于全球的大量DNS服務(wù)器以及定義了DNS服務(wù)器與查詢(xún)主機(jī)通信方式的應(yīng)用層協(xié)議組成。

DNS為什么不采用單點(diǎn)的集中式的設(shè)計(jì)方式,而是使用分布式集群的工作方式?

DNS的一種簡(jiǎn)單的設(shè)計(jì)模式就是在因特網(wǎng)上只使用一個(gè)DNS服務(wù)器,該服務(wù)器包含所有的映射,在這種集中式的設(shè)計(jì)中,客戶(hù)機(jī)直接將所有查詢(xún)請(qǐng)求發(fā)往單一的DNS服務(wù)器,同時(shí)該DNS服務(wù)器直接對(duì)所有查詢(xún)客戶(hù)機(jī)做出響應(yīng),盡管這種設(shè)計(jì)方式非常誘人,但他不適用當(dāng)前的互聯(lián)網(wǎng),因?yàn)楫?dāng)今的因特網(wǎng)有著數(shù)量巨大并且在持續(xù)增長(zhǎng)的主機(jī),這種集中式設(shè)計(jì)會(huì)有單點(diǎn)故障(嗝屁一個(gè),全球著急),通信容量(上億臺(tái)主機(jī)發(fā)送的查詢(xún)DNS報(bào)文請(qǐng)求,包括但不限于所有的HTTP請(qǐng)求,電子郵件報(bào)文服務(wù)器,TCP長(zhǎng)連接服務(wù)),遠(yuǎn)距離的時(shí)間延遲(澳大利亞到紐約的舉例),維護(hù)開(kāi)銷(xiāo)大(因?yàn)樗械闹鳈C(jī)名-ip映射都要在一個(gè)服務(wù)站點(diǎn)更新)等問(wèn)題

DNS服務(wù)器一般分三種,根DNS服務(wù)器,頂級(jí)DNS服務(wù)器,權(quán)威DNS服務(wù)器。

image

使用分布式的層次數(shù)據(jù)庫(kù)模式以及緩存方法來(lái)解決單點(diǎn)集中式的問(wèn)題。

DNS域名稱(chēng)
域名系統(tǒng)作為一個(gè)層次結(jié)構(gòu)和分布式數(shù)據(jù)庫(kù),包含各種類(lèi)型的數(shù)據(jù),包括主機(jī)名和域名。DNS數(shù)據(jù)庫(kù)中的名稱(chēng)形成一個(gè)分層樹(shù)狀結(jié)構(gòu)稱(chēng)為域命名空間。域名包含單個(gè)標(biāo)簽分隔點(diǎn),例如:

im.qq.com

完全限定的域名 (FQDN) 唯一地標(biāo)識(shí)在 DNS 分層樹(shù)中的主機(jī)的位置,通過(guò)指定的路徑中點(diǎn)分隔從根引用的主機(jī)的名稱(chēng)列表。 下圖顯示與主機(jī)稱(chēng)為 im 內(nèi)

qq.com

DNS 樹(shù)的示例。 主機(jī)的 FQDN 是

 im.qq.com

DNS 域的名稱(chēng)層次結(jié)構(gòu)

image

DNS域名稱(chēng)空間的組織方式
按其功能命名空間中用來(lái)描述 DNS 域名稱(chēng)的五個(gè)類(lèi)別的介紹詳見(jiàn)下表中,以及與每個(gè)名稱(chēng)類(lèi)型的示例。

例如:

www.uestc.edu.cn

image

DNS 和 Internet 域
互聯(lián)網(wǎng)域名系統(tǒng)由名稱(chēng)注冊(cè)機(jī)構(gòu)負(fù)責(zé)維護(hù)分配由組織和國(guó)家/地區(qū)的頂級(jí)域在 Internet 上進(jìn)行管理。 這些域名按照國(guó)際標(biāo)準(zhǔn) 3166。 一些很多現(xiàn)有縮寫(xiě),保留以供組織中,以及兩個(gè)字母和三個(gè)字母的國(guó)家/地區(qū)使用的縮寫(xiě)使用下表所示。一些常見(jiàn)的DNS域名稱(chēng)如下圖:

image

資源記錄
DNS 數(shù)據(jù)庫(kù)中包含的資源記錄 (RR)。 每個(gè) RR 標(biāo)識(shí)數(shù)據(jù)庫(kù)中的特定資源。我們?cè)诮NS服務(wù)器時(shí),經(jīng)常會(huì)用到SOA,NS,A之類(lèi)的記錄,在維護(hù)DNS服務(wù)器時(shí),會(huì)用到MX,CNAME記錄。
常見(jiàn)的RR見(jiàn)下圖:

image

Dns服務(wù)的工作過(guò)程
當(dāng) DNS 客戶(hù)機(jī)需要查詢(xún)程序中使用的名稱(chēng)時(shí),它會(huì)查詢(xún)本地DNS 服務(wù)器來(lái)解析該名稱(chēng)??蛻?hù)機(jī)發(fā)送的每條查詢(xún)消息都包括3條信息,以指定服務(wù)器應(yīng)回答的問(wèn)題。
● 指定的 DNS 域名,表示為完全合格的域名 (FQDN) 。
● 指定的查詢(xún)類(lèi)型,它可根據(jù)類(lèi)型指定資源記錄,或作為查詢(xún)操作的專(zhuān)門(mén)類(lèi)型。
● DNS域名的指定類(lèi)別。
對(duì)于DNS 服務(wù)器,它始終應(yīng)指定為 Internet 類(lèi)別。例如,指定的名稱(chēng)可以是計(jì)算機(jī)的完全合格的域名,如

im.qq.com

,并且指定的查詢(xún)類(lèi)型用于通過(guò)該名稱(chēng)搜索地址資源記錄。
DNS 查詢(xún)以各種不同的方式進(jìn)行解析。客戶(hù)機(jī)有時(shí)也可通過(guò)使用從以前查詢(xún)獲得的緩存信息就地應(yīng)答查詢(xún)。DNS 服務(wù)器可使用其自身的資源記錄信息緩存來(lái)應(yīng)答查詢(xún),也可代表請(qǐng)求客戶(hù)機(jī)來(lái)查詢(xún)或聯(lián)系其他 DNS 服務(wù)器,以完全解析該名稱(chēng),并隨后將應(yīng)答返回至客戶(hù)機(jī)。這個(gè)過(guò)程稱(chēng)為遞歸。
另外,客戶(hù)機(jī)自己也可嘗試聯(lián)系其他的 DNS 服務(wù)器來(lái)解析名稱(chēng)。如果客戶(hù)機(jī)這么做,它會(huì)使用基于服務(wù)器應(yīng)答的獨(dú)立和附加的查詢(xún),該過(guò)程稱(chēng)作迭代,即DNS服務(wù)器之間的交互查詢(xún)就是迭代查詢(xún)。
DNS 查詢(xún)的過(guò)程如下圖所示。

image

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

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

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

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

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

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

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

附錄:
本地DNS配置轉(zhuǎn)發(fā)與未配置轉(zhuǎn)發(fā)數(shù)據(jù)包分析
新建一DNS,具體怎么建我這里就不再描述了,見(jiàn)我的上一篇博文《在Win2003中安裝bind【部署智能DNS】》
1、DNS服務(wù)器不設(shè)轉(zhuǎn)發(fā)
在192.168.145.228服務(wù)器上安裝上wireshark軟件,并打開(kāi)它,設(shè)置數(shù)據(jù)包為UDP過(guò)濾,在192.168.145.12客戶(hù)機(jī)上用nslookup命令查詢(xún)一下http://www.sohu.com/,馬上可以看到本地DNS服務(wù)器直接查全球13臺(tái)根域中的某幾臺(tái),然后一步步解析,通過(guò)遞代的方式,直到找到www .sohu .com對(duì)應(yīng)的IP為220.181.118.87。
本地DNS服務(wù)器得到搜狐的IP后,它把這個(gè)IP返回給192.168.145.12客戶(hù)機(jī),完成解析。

image

2、DNS服務(wù)器設(shè)置轉(zhuǎn)發(fā)

搜狐域名在第一步的驗(yàn)證中使用過(guò),有緩存,為了不受上步實(shí)驗(yàn)干擾,我們?cè)诳蛻?hù)機(jī)上192.168.145.12上nslookup 百度一下,你就知道。從圖上看,本地DNS把請(qǐng)求轉(zhuǎn)發(fā)至192.168.133.10服務(wù)器,133.10服務(wù)器把得到的IP返回給本地DNS,然后本地DNS再把IP告訴DNS客戶(hù)機(jī),完成解析。

image

解析順序

  1) ****瀏覽器緩存

當(dāng)用戶(hù)通過(guò)瀏覽器訪(fǎng)問(wèn)某域名時(shí),瀏覽器首先會(huì)在自己的緩存中查找是否有該域名對(duì)應(yīng)的IP地址(若曾經(jīng)訪(fǎng)問(wèn)過(guò)該域名且沒(méi)有清空緩存便存在);

  2) ****系統(tǒng)緩存

當(dāng)瀏覽器緩存中無(wú)域名對(duì)應(yīng)IP則會(huì)自動(dòng)檢查用戶(hù)計(jì)算機(jī)系統(tǒng)Hosts文件DNS緩存是否有該域名對(duì)應(yīng)IP;

  3) ****路由器緩存

當(dāng)瀏覽器及系統(tǒng)緩存中均無(wú)域名對(duì)應(yīng)IP則進(jìn)入路由器緩存中檢查,以上三步均為客服端的DNS緩存;

  4) ****ISP****(互聯(lián)網(wǎng)服務(wù)提供商)DNS****緩存

當(dāng)在用戶(hù)客服端查找不到域名對(duì)應(yīng)IP地址,則將進(jìn)入ISP DNS緩存中進(jìn)行查詢(xún)。比如你用的是電信的網(wǎng)絡(luò),則會(huì)進(jìn)入電信的DNS緩存服務(wù)器中進(jìn)行查找;

  5) ****根域名服務(wù)器

當(dāng)以上均未完成,則進(jìn)入根服務(wù)器進(jìn)行查詢(xún)。全球僅有13臺(tái)根域名服務(wù)器,1個(gè)主根域名服務(wù)器,其余12為輔根域名服務(wù)器。根域名收到請(qǐng)求后會(huì)查看區(qū)域文件記錄,若無(wú)則將其管轄范圍內(nèi)頂級(jí)域名(如.com)服務(wù)器IP告訴本地DNS服務(wù)器;

  6) ****頂級(jí)域名服務(wù)器

頂級(jí)域名服務(wù)器收到請(qǐng)求后查看區(qū)域文件記錄,若無(wú)則將其管轄范圍內(nèi)主域名服務(wù)器的IP地址告訴本地DNS服務(wù)器;

  7) ****主域名服務(wù)器

主域名服務(wù)器接受到請(qǐng)求后查詢(xún)自己的緩存,如果沒(méi)有則進(jìn)入下一級(jí)域名服務(wù)器進(jìn)行查找,并重復(fù)該步驟直至找到正確紀(jì)錄;

  8****)保存結(jié)果至緩存

本地域名服務(wù)器把返回的結(jié)果保存到緩存,以備下一次使用,同時(shí)將該結(jié)果反饋給客戶(hù)端,客戶(hù)端通過(guò)這個(gè)IP地址與web服務(wù)器建立鏈接。

轉(zhuǎn)載自:https://www.cnblogs.com/gopark/p/8430916.html

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

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

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