...

36 張圖詳解 DNS :網絡世界的(de)導航

2021-07-23


我們平時(shí)在(zài)訪問網站時(shí),不(bù)使用 IP 地(dì / de)址,而(ér)是(shì)網站域名。但是(shì)抓包發現:交互報文是(shì)以(yǐ) IP 地(dì / de)址進行的(de)。那麽 IP 地(dì / de)址是(shì)從哪來(lái)的(de)呢?這(zhè)是(shì)因爲(wéi / wèi) DNS 把網站域名自動轉換爲(wéi / wèi) IP 地(dì / de)址



DNS 出(chū)現

TCP/IP 是(shì)基于(yú) IP 地(dì / de)址進行通信的(de),但是(shì) IP 地(dì / de)址不(bù)太好記。于(yú)是(shì)出(chū)現了(le/liǎo)另一(yī / yì /yí)種方便記憶的(de)标識符,那就(jiù)是(shì)主機名。爲(wéi / wèi)計算機配置主機名,在(zài)進行網絡通信時(shí),直接使用主機名,而(ér)不(bù)用輸入一(yī / yì /yí)大(dà)串的(de) IP 地(dì / de)址。同時(shí),系統通過一(yī / yì /yí)個(gè)叫 hosts 的(de)文件,實現主機名轉換 IP 地(dì / de)址的(de)功能。hosts 文件包括主機名和(hé / huò) IP 地(dì / de)址的(de)對應關系。當需要(yào / yāo)通過主機名訪問主機時(shí),它就(jiù)會查看本地(dì / de)的(de) hosts 文件,從文件中找到(dào)相對應的(de) IP 地(dì / de)址,然後進行報文發送。如果在(zài) hosts 文件中沒找到(dào)相關信息,則主機訪問失敗。

hosts 文件是(shì)主機的(de)本地(dì / de)文件,優點是(shì)查找響應速度快。它主要(yào / yāo)用來(lái)存儲一(yī / yì /yí)些本地(dì / de)網絡的(de)主機名和(hé / huò) IP 地(dì / de)址的(de)對應信息。這(zhè)樣,主機在(zài)以(yǐ)主機名訪問本地(dì / de)網絡主機時(shí),通過 hosts 文件可以(yǐ)迅速獲得相應的(de) IP 地(dì / de)址。



每台主機的(de) hosts 文件都需要(yào / yāo)單獨手工更新。随着網絡規模的(de)不(bù)斷擴大(dà)、接入計算機的(de)數量不(bù)斷增加,維護難度越來(lái)越大(dà),每台主機同步更新,幾乎是(shì)一(yī / yì /yí)件不(bù)可能完成的(de)任務。



爲(wéi / wèi)了(le/liǎo)解決 hosts 文件維護困難的(de)問題,出(chū)現了(le/liǎo) DNS 域名系統,一(yī / yì /yí)個(gè)可以(yǐ)解決主機名和(hé / huò) IP 地(dì / de)址互相轉換的(de)系統。無論網絡規模變得多麽龐大(dà),都能在(zài)一(yī / yì /yí)個(gè)小範圍内通過 DNS 進行管理。



DNS 介紹

DNS ,全稱 Domain Name System 。采用 client/server 模式,DNS client 發出(chū)查詢請求,DNS server 響應請求。DNS client 通過查詢 DNS server 獲得主機的(de) IP 地(dì / de)址,進而(ér)完成後續的(de) TCP/IP 通信過程。



當 Windows 系統用戶使用 nslookup hostname/domainname 命令時(shí),DNS 會自動查找注冊了(le/liǎo)主機名和(hé / huò) IP 地(dì / de)址的(de)數據庫,并返回對應的(de) IP 地(dì / de)址。



DNS 域名

先了(le/liǎo)解什麽是(shì)域名,才能理解 DNS 。域名是(shì)爲(wéi / wèi)了(le/liǎo)識别主機名或機構的(de)一(yī / yì /yí)種分層的(de)名稱。因爲(wéi / wèi)單獨的(de)一(yī / yì /yí)台域名服務器是(shì)不(bù)可能知道(dào)所有域名信息,所以(yǐ)域名系統是(shì)一(yī / yì /yí)個(gè)分布式數據庫系統,域名(主機名)到(dào) IP 地(dì / de)址的(de)解析可以(yǐ)由若幹個(gè)域名服務器共同完成。每一(yī / yì /yí)個(gè)站點維護自己的(de)信息數據庫,并運行一(yī / yì /yí)個(gè)服務器程序供互聯網上(shàng)的(de)客戶端查詢。DNS 提供了(le/liǎo)客戶端與服務器的(de)通信協議,也(yě)提供了(le/liǎo)服務器之(zhī)間交換信息的(de)協議。由于(yú)是(shì)分布式系統,即使單個(gè)服務器出(chū)現故障,也(yě)不(bù)會導緻整個(gè)系統失效,消除了(le/liǎo)單點故障。

DNS 域名組成

DNS 域的(de)本質是(shì)一(yī / yì /yí)種管理範圍的(de)劃分,最大(dà)的(de)域是(shì)根域,向下可以(yǐ)劃分爲(wéi / wèi)頂級域二級域三級域四級域等。相對應的(de)域名是(shì)根域名頂級域名二級域名三級域名等。不(bù)同等級的(de)域名使用點号分隔,級别最低的(de)域名寫在(zài)最左邊,而(ér)級别最高的(de)域名寫在(zài)最右邊。



舉個(gè)栗子(zǐ):網站域名 http://www.tsinghua.edu.cn 中,從右到(dào)左開始,cn 是(shì)頂級域名,代表中國(guó),edu 是(shì)二級域名,代表教育機構,tsinghua 是(shì)三級域名,表示清華大(dà)學,www 則表示三級域名中的(de)主機,并提供了(le/liǎo) web 服務。



除了(le/liǎo) www 主機外,常見的(de)主機還有 arch 、sem 、mail ,域名如下:



每一(yī / yì /yí)級的(de)域名都由英文字母和(hé / huò)數字組成,域名不(bù)區分大(dà)小寫,長度不(bù)能超過 63 字節,一(yī / yì /yí)個(gè)完整的(de)域名不(bù)能超過 255 個(gè)字節。根域名用 “ . ”(點)表示。目前我們看到(dào)的(de)域名例子(zǐ)都是(shì)完全合格域名( FQDN ),FQDN 的(de)完整格式是(shì)以(yǐ)點結尾的(de)域名。接入互聯網的(de)主機、服務器或其它網絡設備都可以(yǐ)擁有一(yī / yì /yí)個(gè)唯一(yī / yì /yí)的(de) FQDN 。與 FQDN 對應的(de),系統中的(de)默認域名是(shì)非合格域名,會把當前的(de)區域域名添加到(dào)尾部。例如,tsinghua 域内的(de)主機上(shàng)查找 mail ,本地(dì / de)解析器就(jiù)會将這(zhè)個(gè)名稱轉換爲(wéi / wèi) FQDN ,即 http://mail.tsinghua.edu.cn ,然後解析出(chū) IP 地(dì / de)址。



DNS 域名空間

域名空間結構像是(shì)一(yī / yì /yí)棵倒過來(lái)的(de)樹,也(yě)叫做樹形結構根域名就(jiù)是(shì)樹根( root ),用點号表示,往下是(shì)這(zhè)棵樹的(de)各層枝葉。根域名的(de)下一(yī / yì /yí)層叫頂級域名,頂級域名包括三大(dà)類:



  • 國(guó)家頂級域名

國(guó)家頂級域名采用 ISO3166 的(de)規定。比如:.cn 表示中國(guó),.us 表示美國(guó),.uk表示英國(guó)等。現在(zài)使用的(de)國(guó)家頂級域名大(dà)約在(zài) 200個(gè)左右。



  • 國(guó)際頂級域名

國(guó)際頂級域名采用 .int 。國(guó)際性的(de)組織可以(yǐ)在(zài) .int 下注冊。

  • 通用頂級域名



最早的(de)頂級域名共有 6 個(gè)。分别爲(wéi / wèi):

.com 表示公司企業,

.net 表示網絡服務機構,

.org 表示非盈利組織,

.edu 表示教育機構(僅限美國(guó)),

.gov 表示政府部門(僅限美國(guó)),

.mil 表示軍事部門(僅限美國(guó))。

随着互聯網用戶不(bù)斷增加,又增加了(le/liǎo) 7 個(gè)通用頂級域名。分别爲(wéi / wèi):

.aero 用于(yú)航空運輸業,

.biz 用于(yú)公司和(hé / huò)企業,

.coop 用于(yú)合作團體,

.info 用于(yú)各種情況,

.museum 用于(yú)博物館,

.name 用于(yú)個(gè)人(rén),

.pro 用于(yú)自由職業者。

頂級域名下面是(shì)二級域名。國(guó)家頂級域名下注冊的(de)二級域名均由國(guó)家自行确定。我國(guó)二級域名分爲(wéi / wèi)類别域名和(hé / huò)行政域名兩大(dà)類,類别域名如:.com ,.edu ,.gov 等分别代表不(bù)同的(de)機構;行政域名如:.bj 表示北京,.sh 表示上(shàng)海,代表我國(guó)各省、自治區及直轄市等。



二級域名下面是(shì)三級域名四級域名等。命名樹上(shàng)任何一(yī / yì /yí)個(gè)節點的(de)域名就(jiù)是(shì)從這(zhè)個(gè)節點到(dào)最高層的(de)域名串起來(lái),中間以(yǐ) “ . ” 分隔。



在(zài)域名結構中,節點在(zài)所屬域中的(de)主機名标識可以(yǐ)相同,但是(shì)域名必須不(bù)同。比如:清華大(dà)學和(hé / huò)新浪公司下都有一(yī / yì /yí)台主機的(de)标識是(shì) mail ,但是(shì)兩者的(de)域名卻是(shì)不(bù)同的(de),前者爲(wéi / wèi) http://mail.tsinghua.edu.cn ,而(ér)後者爲(wéi / wèi) http://mail.sina.com.cn 。



DNS 域名解析

域名轉換爲(wéi / wèi)對應的(de) IP 地(dì / de)址的(de)過程叫做域名解析。在(zài)域名解析過程中,DNS client 的(de)主機調用解析器( Resolver ),向 DNS server 發出(chū)請求,DNS server 完成域名解析。



域名解析是(shì)按照 DNS 分層結構的(de)特點,自頂向下進行的(de)。但是(shì)如果每一(yī / yì /yí)個(gè)域名解析都從根域名服務器開始,那麽根域名服務器有可能無法承載海量的(de)流量。在(zài)實際應用中,大(dà)多數域名解析都是(shì)在(zài)本地(dì / de)域名服務器完成。通過合理設置本地(dì / de)域名服務器,由本地(dì / de)域名服務器負責大(dà)部分的(de)域名解析請求,提高域名解析效率。



DNS 解析器

從應用程序的(de)角度看,訪問 DNS 是(shì)通過一(yī / yì /yí)個(gè)叫解析器( Resolver )的(de)應用程序來(lái)完成的(de)。發送一(yī / yì /yí)個(gè) TCP 或 UDP 數據包之(zhī)前,解析器必須将域名(主機名)轉換爲(wéi / wèi) IP 地(dì / de)址。一(yī / yì /yí)個(gè)解析器至少要(yào / yāo)注冊一(yī / yì /yí)個(gè)域名服務器的(de) IP 地(dì / de)址。通常,它至少包括本地(dì / de)域名服務器的(de) IP 地(dì / de)址。



DNS 域名服務器

DNS 域名空間的(de)層次結構,允許不(bù)同的(de)域名服務器管理域名空間的(de)不(bù)同部分。域名服務器是(shì)指管理域名的(de)主機及軟件,它可以(yǐ)管理所在(zài)分層的(de)域。其所管理的(de)分層叫做區域( zone )。一(yī / yì /yí)個(gè) zone 是(shì) DNS 域名空間的(de)一(yī / yì /yí)棵子(zǐ)樹,它可以(yǐ)單獨管理而(ér)不(bù)受其它 zone 影響。每層都設有一(yī / yì /yí)個(gè)域名服務器。



根所設置的(de) DNS 叫做根域名服務器,它對 DNS 的(de)檢索數據功能起着至關重要(yào / yāo)的(de)作用。根域名服務器中注冊了(le/liǎo)頂級域名服務器的(de) IP 地(dì / de)址。如果想要(yào / yāo)新增一(yī / yì /yí)個(gè)一(yī / yì /yí)級域名,或者修改已有的(de)頂級域名,就(jiù)要(yào / yāo)在(zài)根域名服務器中進行新增或變更。

類似的(de),頂級域名服務器中注冊了(le/liǎo)二級域名服務器的(de) IP 地(dì / de)址。如果域名服務器下面沒有其它分層,就(jiù)可以(yǐ)自由地(dì / de)指定主機名稱。如果想重新設置域名服務器的(de) IP 地(dì / de)址或修改域名,必須在(zài)上(shàng)一(yī / yì /yí)層的(de)域名服務器中進行修改。

域名和(hé / huò)域名服務器都需要(yào / yāo)按照分層進行設置。如果域名服務器出(chū)現故障,那麽針對這(zhè)個(gè)域的(de) DNS 查詢就(jiù)無法正常工作。因此,爲(wéi / wèi)了(le/liǎo)提高可用性,至少設置兩台域名服務器。一(yī / yì /yí)旦第一(yī / yì /yí)台域名服務器無法提供查詢時(shí),就(jiù)會自動轉到(dào)第二個(gè)甚至第三個(gè)域名服務器上(shàng)進行。

DNS 域名服務器類型

  • 本地(dì / de)域名服務器

互聯網接入服務運營商或者一(yī / yì /yí)個(gè)大(dà)的(de)網絡機構,像公司、大(dà)學等都有一(yī / yì /yí)台或多台可以(yǐ)自行管理的(de)域名服務器,這(zhè)類域名服務器稱爲(wéi / wèi)本地(dì / de)域名服務器,也(yě)稱爲(wéi / wèi)默認域名服務器。本地(dì / de)域名服務器離客戶端較近。當一(yī / yì /yí)個(gè) DNS客戶端發出(chū) DNS 查詢時(shí),首先送到(dào)本地(dì / de)域名服務器。如果本地(dì / de)域名服務器數據庫中有對應的(de)域名信息,會将查詢的(de)域名轉換爲(wéi / wèi) IP 地(dì / de)址返回客戶端。如果沒有,它會以(yǐ) DNS 客戶端的(de)身份向根域名服務器進行查詢。根域名服務器收到(dào)本地(dì / de)域名服務器的(de)查詢後,會返回相關域名服務器的(de) IP 地(dì / de)址,本地(dì / de)域名服務器再向相關域名服務器發送查詢請求。



  • 根域名服務器

通常根域名服務器用來(lái)管理頂級域,本身并不(bù)對域名進行解析,但它知道(dào)相關域名服務器的(de) IP 地(dì / de)址。IPv4 根域名服務器全球有 13 台,主機名分别爲(wéi / wèi) A ~ M 。1 台爲(wéi / wèi)主根服務器在(zài)美國(guó),其餘 12 個(gè)均爲(wéi / wèi)輔根服務器,其中 9 個(gè)在(zài)美國(guó),2 個(gè)在(zài)歐洲,位于(yú)英國(guó)和(hé / huò)瑞典,1 台在(zài)亞洲,位于(yú)日本。所有的(de)域名服務器都必須注冊根域名服務器的(de) IP 地(dì / de)址,因爲(wéi / wèi) DNS 根據 IP 地(dì / de)址進行檢索時(shí),需要(yào / yāo)按順序從根域名服務器開始。



  • 授權域名服務器

互聯網上(shàng)的(de)主機在(zài)域名服務器上(shàng)進行注冊,這(zhè)個(gè)域名服務器就(jiù)是(shì)主機的(de)授權域名服務器。通常,主機的(de)授權域名服務器就(jiù)是(shì)本地(dì / de)域名服務器。實際上(shàng),主機會有兩個(gè)授權域名服務器,防止單點故障。授權域名服務器上(shàng)有注冊主機域名與 IP 地(dì / de)址的(de)映射信息,當查詢注冊主機域名時(shí),它會返回相應主機的(de) IP 地(dì / de)址。如果主機域名和(hé / huò) IP 地(dì / de)址需要(yào / yāo)進行變更,隻需要(yào / yāo)在(zài)授權域名服務器處理即可,不(bù)用再向其它域名服務器進行申請或報告。



  • 主域名服務器

主域名服務器是(shì)完成一(yī / yì /yí)個(gè)或多個(gè)區域域名解析工作的(de)主要(yào / yāo)域名服務器,通常也(yě)是(shì)一(yī / yì /yí)個(gè)或多個(gè)區域的(de)授權域名服務器。主域名服務器有區域内主機地(dì / de)址信息的(de)源數據文件,并且是(shì)區域傳送中區域數據的(de)唯一(yī / yì /yí)來(lái)源。

  • 輔助域名服務器

輔助域名服務器可以(yǐ)協助主域名服務器提供域名查詢服務,在(zài)主機很多的(de)情況下,可以(yǐ)有效分擔主域名服務器的(de)壓力。輔助域名服務器也(yě)有冗餘功能,當主域名服務器故障時(shí),輔助域名服務器能夠在(zài)數據有效期内繼續爲(wéi / wèi)主機提供域名解析服務。



一(yī / yì /yí)台主域名服務器可以(yǐ)有多台輔助域名服務器,一(yī / yì /yí)台輔助域名服務器也(yě)可以(yǐ)是(shì)其它區域的(de)主域名服務器。輔助域名服務器中包含區域内主機地(dì / de)址數據的(de)授權信息,通過區域配置文件副本的(de)方式存儲。輔助域名服務器也(yě)是(shì)區域的(de)授權域名服務器,可以(yǐ)完成本區域内域名查詢的(de)授權回答。

輔助域名服務器并不(bù)建立數據文件,它獲得區域數據的(de)唯一(yī / yì /yí)途徑就(jiù)是(shì)通過區域傳送的(de)方式,從主域名服務器上(shàng)獲得區域數據的(de)最新副本。獲得數據副本的(de)方式有兩種,第一(yī / yì /yí)種是(shì)輔助域名服務器定期主動獲得主域名服務器的(de)副本,或更新副本中的(de)數據。第二種是(shì)主域名服務器在(zài)區域數據發生變化時(shí),及時(shí)通知輔助域名服務器更新副本中的(de)數據。

DNS 域名完整解析過程



DNS 客戶端進行域名 http://www.tsinghua.edu.cn 的(de)解析過程如下:

  1. DNS 客戶端向本地(dì / de)域名服務器發送請求,查詢 http://www.tsinghua.edu.cn 主機的(de) IP 地(dì / de)址;

  2. 本地(dì / de)域名服務器查詢數據庫,發現沒有域名爲(wéi / wèi) http://www.tsinghua.edu.cn 的(de)主機,于(yú)是(shì)将請求發送給根域名服務器;

  3. 根域名服務器查詢數據庫,發現沒有這(zhè)個(gè)主機域名記錄,但是(shì)根域名服務器知道(dào) cn 域名服務器可以(yǐ)解析這(zhè)個(gè)域名,于(yú)是(shì)将 cn 域名服務器的(de) IP 地(dì / de)址返回給本地(dì / de)域名服務器;

  4. 本地(dì / de)域名服務器向 cn 域名服務器查詢 http://www.tsinghua.edu.cn 主機的(de) IP 地(dì / de)址;

  5. cn 域名服務器查詢數據庫,也(yě)沒有相關記錄,但是(shì)知道(dào) http://edu.cn 域名服務器可以(yǐ)解析這(zhè)個(gè)域名,于(yú)是(shì)将 http://edu.cn 域名服務器的(de) IP 地(dì / de)址返回給本地(dì / de)域名服務器;

  6. 本地(dì / de)域名服務器再向 http://edu.cn 域名服務器查詢 http://www.tsinghua.edu.cn 主機 IP 地(dì / de)址;

  7. http://edu.cn 域名服務器查詢數據庫,也(yě)沒有相關記錄,但是(shì)知道(dào) http://tsinghua.edu.cn 域名服務器可以(yǐ)解析這(zhè)個(gè)域名,于(yú)是(shì)将 http://tsinghua.edu.cn 的(de)域名服務器 IP 地(dì / de)址返回給本地(dì / de)域名服務器;

  8. 本地(dì / de)域名服務器向 http://tsinghua.edu.cn 域名服務器查詢 http://www.tsinghua.edu.cn 主機的(de) IP 地(dì / de)址;

  9. http://tsinghua.edu.cn 域名服務器查詢數據庫,發現有主機域名記錄,于(yú)是(shì)給本地(dì / de)域名服務器返回 http://www.tsinghua.edu.cn 對應的(de) IP 地(dì / de)址;

  10. 最後本地(dì / de)域名服務器将 http://www.tsinghua.edu.cn 的(de) IP 地(dì / de)址返回給客戶端,整個(gè)解析過程完成。

DNS 傳輸層協議

DNS 域名服務器使用的(de)端口号是(shì) 53 ,并且同時(shí)支持 UDP 和(hé / huò) TCP 協議。爲(wéi / wèi)什麽同時(shí)使用兩種協議呢?

因爲(wéi / wèi) DNS 響應報文中有一(yī / yì /yí)個(gè)删減标志位,用 TC 表示。當響應報文使用 UDP 封裝,且報文長度大(dà)于(yú) 512 字節時(shí),那麽服務器隻返回前 512 字節,同時(shí) TC 标志位置位,表示報文進行了(le/liǎo)删減。當客戶端收到(dào) TC 置位的(de)響應報文後,将采用 TCP 封裝查詢請求。DNS 服務器返回的(de)響應報文長度大(dà)于(yú) 512 字節。



UDP 報文的(de)最大(dà)長度是(shì) 512 字節,最多可以(yǐ)包含 13 台根域名服務器數據,因此 ipv4 根域名服務器隻能限制在(zài) 13 個(gè),且每個(gè)服務器使用單個(gè)字母命名,也(yě)是(shì) IPv4 根服務器是(shì)從 A ~ M 命名的(de)原因。



當輔助域名服務器啓動時(shí),将從主域名服務器執行區域傳送。正常運行過程中,輔助域名服務器也(yě)會定時(shí)向主域名服務器進行查詢,以(yǐ)便了(le/liǎo)解主域名服務器數據是(shì)否發送變化。如果有變化,将執行一(yī / yì /yí)次區域傳送。因爲(wéi / wèi)區域傳送的(de)數據多,所以(yǐ)傳送的(de)數據采用 TCP 封裝



因此,UDP 用于(yú) client 和(hé / huò) server 的(de)查詢和(hé / huò)響應TCP 用于(yú)主從 server 之(zhī)間的(de)傳送

DNS 查詢方式

DNS 域名解析包括兩種查詢( query )方式,一(yī / yì /yí)種是(shì)遞歸查詢,另一(yī / yì /yí)種是(shì)叠代查詢

遞歸查詢

DNS 服務器如果不(bù)能直接響應解析請求,它将繼續請求其它的(de) DNS 服務器,直到(dào)查詢域名解析的(de)結果。查詢的(de)結果可以(yǐ)是(shì)域名主機的(de) IP 地(dì / de)址,或者是(shì)域名無法解析。無論哪種結果,DNS 服務器都會将結果返回給客戶端。

舉個(gè)栗子(zǐ):當本地(dì / de)域名服務器接收了(le/liǎo)客戶端的(de)查詢請求,本地(dì / de)域名服務器将代表客戶端來(lái)找答案,而(ér)在(zài)本地(dì / de)域名服務器執行工作時(shí),客戶端隻是(shì)等待,直到(dào)本地(dì / de)域名服務器将最終查詢結果返回客戶端。



叠代查詢

如果 DNS 服務器查不(bù)到(dào)相應記錄,會向客戶端返回一(yī / yì /yí)個(gè)可能知道(dào)結果的(de)域名服務器 IP 地(dì / de)址,由客戶端繼續向新的(de)服務器發送查詢請求。對域名服務器的(de)叠代查詢隻得到(dào)一(yī / yì /yí)個(gè)提示,則繼續查詢。

舉個(gè)栗子(zǐ):本地(dì / de)域名服務器發送請求到(dào)根域名服務器,根域名服務器并沒有相應記錄,它隻是(shì)給本地(dì / de)域名服務器返回一(yī / yì /yí)個(gè)提示,引導本地(dì / de)域名服務器到(dào)另一(yī / yì /yí)台域名服務器進行查詢。



客戶端在(zài)查詢 IP 地(dì / de)址時(shí),向本地(dì / de)域名服務器進行遞歸查詢。如果本地(dì / de)域名服務器的(de)數據庫有相應數據,則直接返回相應數據。如果沒有,則本地(dì / de)域名服務器向根域名服務器進行叠代查詢。從根開始對這(zhè)棵樹按照順序進行遍曆,直到(dào)找到(dào)指定的(de)域名服務器,并由這(zhè)個(gè)域名服務器返回相應的(de)數據。客戶端和(hé / huò)本地(dì / de)域名服務器會将收到(dào)的(de)信息保存在(zài)緩存裏,這(zhè)樣可以(yǐ)減少每次查詢時(shí)的(de)性能消耗。

DNS 反向查詢

在(zài) DNS 查詢中,客戶端希望知道(dào)域名對應的(de) IP 地(dì / de)址,這(zhè)種查詢稱爲(wéi / wèi)正向查詢。大(dà)部分的(de) DNS 查詢都是(shì)正向查詢。與正向查詢對應的(de),是(shì)反向查詢它允許 DNS 客戶端通過 IP 地(dì / de)址查找對應的(de)域名。



爲(wéi / wèi)實現反向查詢,在(zài) DNS 标準中定義了(le/liǎo)特色域 in-addr.arpa 域,并保留在(zài)域名空間中,以(yǐ)便執行反向查詢。爲(wéi / wèi)創建反向域名空間,in-addr.arpa 域中的(de)子(zǐ)域是(shì)按照 IP 地(dì / de)址相反的(de)順序構造的(de)。

舉個(gè)栗子(zǐ):http://www.tsinghua.edu.cn 的(de) IP 地(dì / de)址是(shì) 166.111.4.100 ,那麽在(zài) in-addr.arpa 域中對應的(de)節點就(jiù)是(shì) 100.4.111.166 。



DNS 應用場景

靜态域名解析

域名解析分爲(wéi / wèi)動态域名解析和(hé / huò)靜态域名解析。在(zài)解析域名時(shí),首先采用靜态域名解析,如果靜态解析不(bù)成功,再采用動态域名解析。

靜态域名解析是(shì)通過靜态域名解析表進行的(de),手動建立域名和(hé / huò) IP 地(dì / de)址之(zhī)間的(de)對應關系表,該表的(de)作用類似于(yú) Windows 操作系統下的(de) hosts 文件,可以(yǐ)将一(yī / yì /yí)些常用的(de)域名放入表中。當 DNS client 需要(yào / yāo)域名所對應的(de) IP 地(dì / de)址時(shí),即到(dào)靜态域名解析表中去查找指定的(de)域名,從而(ér)獲得所對應的(de) IP 地(dì / de)址,提高域名解析的(de)效率。



動态域名解析

動态域名解析需要(yào / yāo)專用的(de)域名服務器( DNS server )運行域名解析服務器程序,提供從域名到(dào) IP 地(dì / de)址的(de)映射關系,負責接收客戶端( DNS client)提出(chū)的(de)域名解析請求。



DNS 代理

在(zài)使用了(le/liǎo) DNS 代理( DNS proxy )功能的(de)組網中,DNS client 将 DNS 請求報文直接發送給 DNS proxy 。DNS proxy 會先查找本地(dì / de)域名解析表,如果未查詢到(dào)對應的(de)解析表項,會将 DNS 請求報文轉發給 DNS Server ,并在(zài)收到(dào) DNS server 的(de)應答報文後将其返回給 DNS client ,從而(ér)實現域名解析。



因此,當 DNS server 的(de)地(dì / de)址發生變化時(shí),隻需改變 DNS proxy 上(shàng)的(de)配置,無需逐一(yī / yì /yí)改變局域網内每個(gè) DNS client 的(de)配置,從而(ér)簡化了(le/liǎo)網絡管理。


飲水思源:

DNS與BIND - Paul Albitz

TCP/IP詳解 卷1:協議 - Kevin R.Fall

圖解TCP/IP - 竹下隆史

路由交換技術 - 杭州華三通信技術有限公司


來(lái)源:知乎