36 張圖詳解 DNS :網絡世界的(de)導航
我們平時(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)解析過程如下:
DNS 客戶端向本地(dì / de)域名服務器發送請求,查詢 http://www.tsinghua.edu.cn 主機的(de) IP 地(dì / de)址;
本地(dì / de)域名服務器查詢數據庫,發現沒有域名爲(wéi / wèi) http://www.tsinghua.edu.cn 的(de)主機,于(yú)是(shì)将請求發送給根域名服務器;
根域名服務器查詢數據庫,發現沒有這(zhè)個(gè)主機域名記錄,但是(shì)根域名服務器知道(dào) cn 域名服務器可以(yǐ)解析這(zhè)個(gè)域名,于(yú)是(shì)将 cn 域名服務器的(de) IP 地(dì / de)址返回給本地(dì / de)域名服務器;
本地(dì / de)域名服務器向 cn 域名服務器查詢 http://www.tsinghua.edu.cn 主機的(de) IP 地(dì / de)址;
cn 域名服務器查詢數據庫,也(yě)沒有相關記錄,但是(shì)知道(dào) http://edu.cn 域名服務器可以(yǐ)解析這(zhè)個(gè)域名,于(yú)是(shì)将 http://edu.cn 域名服務器的(de) IP 地(dì / de)址返回給本地(dì / de)域名服務器;
本地(dì / de)域名服務器再向 http://edu.cn 域名服務器查詢 http://www.tsinghua.edu.cn 主機 IP 地(dì / de)址;
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)域名服務器;
本地(dì / de)域名服務器向 http://tsinghua.edu.cn 域名服務器查詢 http://www.tsinghua.edu.cn 主機的(de) IP 地(dì / de)址;
http://tsinghua.edu.cn 域名服務器查詢數據庫,發現有主機域名記錄,于(yú)是(shì)給本地(dì / de)域名服務器返回 http://www.tsinghua.edu.cn 對應的(de) IP 地(dì / de)址;
最後本地(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 - 竹下隆史
路由交換技術 - 杭州華三通信技術有限公司