新聞動態(tài)
1前言
在當下互聯(lián)網(wǎng)時代,我們?nèi)粘I詈凸ぷ骰径茧x開不域名和 DNS ,如通過一個網(wǎng)址打開一個網(wǎng)站進行購物、使用百度/谷歌搜索信息及通過 APP 看游戲直播。隨著移動互聯(lián)網(wǎng)爆發(fā),為提升用戶使用網(wǎng)站或 APP 的體驗,大多數(shù)企業(yè)都采購了 CDN 服務(wù)進行內(nèi)容加速,而 CDN 服務(wù)的核心調(diào)度也離不開 DNS。可以說 DNS 和我們的生活工作息息相關(guān),如果 DNS 發(fā)生故障,將會導致互聯(lián)網(wǎng)服務(wù)大面積癱瘓,會給大部分互聯(lián)網(wǎng)企業(yè)帶來巨額損失。
那么我們的計算機是如何打開一個網(wǎng)站的呢?這與 DNS 有什么關(guān)系呢?為什么大多數(shù)應用服務(wù)都需要 DNS 來支撐呢?為什么人們需要 DNS 和域名?DNS 又是如何將域名解析成 IP 地址的呢?如果您對這些問題較感興趣,那么我們一起來探討下 DNS 的前世今生。
2DNS 和域名的產(chǎn)生由來
(上圖左為保羅·莫卡派喬斯 Paul Mockapetris)
通?;ヂ?lián)網(wǎng)計算機都是通過 IP 地址進行標識和通信的,如 IP 地址 112.45.23.56 ,這樣的 IP 地址,人們不容易記憶,因此產(chǎn)生了域名這樣的字符型標識。通過域名,我們可以更加方便的記憶一個計算機的地址,如通過 www.fastcp.cn 來記 42.62.101.185 這個 IP 地址。 這有點像我們的身份證和姓名的關(guān)系,身份證號代表我們唯一的身份標識,但由于比較長難以記憶,固用姓名來代替身份證號碼,但在現(xiàn)實生活中,身份證號才是我們辦事的有效標識。而通常我們打開的一個網(wǎng)址,都是由協(xié)議、域名、網(wǎng)站路徑、文件名組成。因此當計算機瀏覽器需要打開一個網(wǎng)址的時候,必須先將網(wǎng)址中的域名解析成 IP 地址,再向這個 IP 地址請求網(wǎng)站內(nèi)容,而解析 IP 地址的過程中,就必須用到 DNS 這個分布式數(shù)據(jù)庫。
在 DNS 產(chǎn)生之前,人們是通過 HOSTS.TXT 文件進行域名和 IP 地址之間的映射,但隨著網(wǎng)絡(luò)上主機爆炸性的增長,出現(xiàn)了域名沖突、一致性差、流量和負載過大等問題,無法及時的解析出需要的 IP 地址,1983 年由保羅·莫卡派喬斯(Paul Mockapetris)發(fā)明了 DNS 協(xié)議,于 1987 年正式發(fā)布至 RFC 1034 和 RFC 1035 ,有興趣的同學可以去下載 RFC 英文版閱讀。
DNS(Domain Name System)域名解析系統(tǒng),是互聯(lián)網(wǎng)基礎(chǔ)資源的核心服務(wù),主要用于承載 IP 地址和互聯(lián)網(wǎng)域名之間的轉(zhuǎn)換,通過 DNS 能夠使人們更方便快捷的訪問互聯(lián)網(wǎng)。DNS 是一個域名分布式的數(shù)據(jù)庫,同時數(shù)據(jù)庫的各個部分可以進行本地控制和訪問,如 CN 域名由 CNNIC (中國互聯(lián)網(wǎng)絡(luò)信息中心)在進行管理和控制。DNS的產(chǎn)生解決了流量負載大、域名沖突及一致性差等問題,直到當下,DNS 系統(tǒng)依然在各個行業(yè)、各種業(yè)務(wù)中發(fā)揮著巨大的作用。
“ If I can control your DNS, I control your world! ”
3DNS 系統(tǒng)的組成
DNS 系統(tǒng)是為解析域名為 IP 地址而存在的,它是由 域名空間、資源記錄、名稱服務(wù)器、解析器組成。
域名空間是包含一個樹狀結(jié)構(gòu),用于存儲資源記錄的空間。
資源記錄是與域名相關(guān)的數(shù)據(jù),如 IP 和域名的對應關(guān)系等。
名稱服務(wù)器是用于存儲 DNS 區(qū)(zone)域名空間數(shù)據(jù),并處理由解析器發(fā)送過來的請求。
解析器是用來發(fā)送域名解析請求并將結(jié)果返回給用戶的程序。
當計算機需要解析域名時,計算機通過調(diào)用本地解析器進行 DNS 查詢。解析器將 DNS 查詢請求發(fā)送至名稱服務(wù)器,名稱服務(wù)器查詢區(qū)中域名空間中數(shù)據(jù),獲得需要查詢域名的資源記錄,并返回給解析器,解析器將返回的結(jié)果反饋給計算機或瀏覽器。
4DNS 之域名空間
DNS 是以域名為索引的,域名是是由一串用“點”分隔的字符組成的Internet上某一臺計算機或計算機組的名稱,如下圖所示,域名的結(jié)構(gòu)為一顆倒立的樹,每個域名就是圖中的一個分支,這顆逆向樹就稱為域名空間。
(1)如逆向樹所示,樹中的每一個分支,都稱為域,一個域名可以屬于多個域,如域名 www.fastcp.cn 屬于fastcp.cn 域的一部分,同時也是 cn 域的一部分。
(2)“.” 是最樹狀結(jié)構(gòu)中最頂層的域名,統(tǒng)稱為“根”,即每個域名都是由根開始索引的,所有域名都屬于根。
(3)由根分支出的域名叫頂域域名(一般簡稱為 TLD ),一般分為國家地區(qū)頂級域名和通用頂級域名。
國家頂級域名如我們了解的 cn、jp等。
通用頂級域名如我們了解的 com、org、net、edu等,其中表示工商企業(yè)的是 .com;表示網(wǎng)絡(luò)提供商的 .net,表示非盈利組織的 .org ;表示教育的 .edu 。
通常我們只能注冊二級域名,如果需要注冊頂級域名,比如注冊類似 .com 這樣的域名,在國內(nèi)需要聯(lián)系 CNNIC ,由他們進行代理注冊,通常價格不菲。大多數(shù)情況下,二級域名已經(jīng)可以完全滿足當下的業(yè)務(wù)需求。
(4)頂級域名下面的分支是二級域名,即我們平時通過萬網(wǎng)或新網(wǎng)注冊的域名,如 baidu.com 、fastcp.cn 、dianrong.com 等。
(5)二級域名下面的分支為三級域名,有時也可稱為服務(wù)器名稱,如 baidu下面 www 代表了百度的網(wǎng)站服務(wù)名稱,music 代表了百度的音樂網(wǎng)站服務(wù)器名稱。
(6)域名體系是通過倒著來敘述一個域名,如 www.fastcp.cn 是先寫最下面的 www,在寫中間的 fastcp ,接著寫上面的 cn ,最后寫 “.”
(7)由此我們看出,一個最完整的域名應該是 “ www.fastcp.cn. ” ,即在每個域名后面會有一個 “.” 來表示根,我們統(tǒng)稱這種域名叫絕對域名“ Fully Qualified Domain Name ”(FQDN),相當于 Unix 系統(tǒng)中的文件絕對路徑??梢酝ㄟ^在計算機中輸入 “ www.baidu.com. ” 或 “ www.dianrong.com. ” 來確認是否可以打開網(wǎng)站。(通常我們不需要輸入這個“.” ,因為計算機和瀏覽器默認已幫我們輸入了這個點)
當然三級域名下還可以在分支四級域名出來,DNS 類似于 Unix 文件系統(tǒng)的結(jié)構(gòu),由根節(jié)點在上的反轉(zhuǎn)樹表示。最多分分支 127 層,每一層可以由最多 63 個字符組成,每層中間都以 “.” 進行分隔,類似 Unix 文件中以 “/” 分隔每一個目錄。域名的總長度不可超過255個字符,僅可使用字符、數(shù)字和連字符,不區(qū)分大小寫。
5DNS 之名稱服務(wù)器
DNS 名稱服務(wù)器用于存儲域名空間數(shù)據(jù),并處理并處理由解析器發(fā)送過來的請求。域名空間數(shù)據(jù)一般以 zone 進行劃分,不同的 zone 分布式存儲于不同的名稱服務(wù)器中。如 baidu.com 的域名相關(guān)數(shù)據(jù)存儲在 baidu.com 的服務(wù)器中,dianrong.com 的域名相關(guān)數(shù)據(jù)存儲在 dianrong.com 的服務(wù)器中。zone 是域名空間逆向樹中的每一個點,也可以將一個域授權(quán)給其它組織進行管理,比如將 music.baidu.com 授權(quán)給其它組織進行存儲和管理。
通常 DNS 名稱服務(wù)器都是一個整體服務(wù),即提供區(qū)數(shù)據(jù)管理,又提供解析處理。隨著越來越多的互聯(lián)網(wǎng)應用需要 DNS 解析,為解決互聯(lián)網(wǎng)域名解析高并發(fā)和性能問題,一般將 DNS 服務(wù)器從功能上劃分為三類:授權(quán)服務(wù)器、遞歸服務(wù)器、緩存服務(wù)器,分別承擔不同的解析功能。
(1)授權(quán)服務(wù)器
DNS 授權(quán)也稱 DNS 權(quán)威,即一個區(qū)域的 DNS 數(shù)據(jù)的維護者,如 www.baidu.com 的資源記錄是由 baidu.com 的權(quán)威服務(wù)器 “ ns2.baidu.com ” 來進行輸入和維護的,只有 “ns2.baidu.com ” 服務(wù)器的管理者才可進行 www.baidu.com 域名記錄的配置。一個授權(quán)服務(wù)器可管理多個區(qū)域 ,即管理多個 zone ,前提是將當前區(qū)已授權(quán)給當前授權(quán)服務(wù)器進行管理。
一般授權(quán)服務(wù)器又分為主名字服務(wù)器和輔名字服務(wù)器,主名稱服務(wù)器主要進行對區(qū)文件管理,輔名字服務(wù)器是主名字服務(wù)器的備份,同時承載一部分解析負載。輔助服務(wù)器中的 zone 文件一般為只讀,zone 文件通過特殊協(xié)議進行主輔同步。一般管理員只需要修改主名字服務(wù)器的 DNS 記錄,即可全網(wǎng)生效。
我們大多數(shù)情況下聽到的智能 DNS 平臺,基本都屬于 DNS 授權(quán)服務(wù)器的種類,如 DNSPOD、CLOUDXNS,或是萬網(wǎng)(阿里云)的 DNS 解析平臺、新網(wǎng)的 DNS 解析平臺。也有很多大學或政府機構(gòu),通過搭建屬于自己的 DNS 授權(quán)服務(wù)器進行區(qū)和域的管理。
(2)遞歸服務(wù)器
遞歸服務(wù)器主要是用于接收并應答從 DNS 客戶端或解析器發(fā)來的初始 DNS 查詢,若本地沒有查詢的數(shù)據(jù),則代替 DNS 客戶端從根逐級發(fā)起迭代查詢,直到請求到結(jié)果,并將結(jié)果返回給 DNS 客戶端;同時對從其它權(quán)威服務(wù)器獲取的域名 IP 地址信息進行緩存。一般遞歸服務(wù)器主要用于運營商或 Global DNS,大多數(shù)企業(yè)不需要搭建屬于自己的遞歸服務(wù)器。
遞歸服務(wù)器一般稱為 Local DNS ,如北京聯(lián)通的 202.106.0.20 ,或者你拉帶寬時,運營商的網(wǎng)絡(luò)自動為您分配的 DNS 地址。Global DNS 一般指全求性的 Local DNS,如谷歌的 8.8.8.8 、CNNIC 的 1.2.4.8 及 114.114.114.114 等。
(3)緩存服務(wù)器
緩存服務(wù)器是遞歸服務(wù)器的前置緩存部分,專門用來存儲并緩存已請求過的請求數(shù)據(jù),當用戶查詢相同的域名信息時,則使用緩存服務(wù)器中的數(shù)據(jù)直接應答,加快用戶查詢 DNS 請求的應答速度,提升用戶打開網(wǎng)頁的速度。
上文說的 8.8.8.8 一般為緩存服務(wù)器地址,真正的遞歸服務(wù)器地址,一般都會隱藏在緩存服務(wù)器后面,通常DNS 服務(wù)器都是通過 AnyCast 的架構(gòu)搭建集群,提升負載能力的同時,可分擔 DDOS 攻擊的流量等。緩存服務(wù)器的性能將隨著緩存服務(wù)器的數(shù)量改變而改變。
6DNS 之資源記錄
資源記錄是每個域用來存放與域名相關(guān)的數(shù)據(jù),每個域名通過 DNS 解析得到的結(jié)果都是由資源記錄提供的。當一個解析器向 DNS 查詢一個域名時,它得到的其實是和這個域名相關(guān)的資源記錄,因此資源記錄是域名解析的最根本數(shù)據(jù)。每條資源記錄都包括一個五元組,分別是域名、TTL、信息類型、資源記錄類型、值五項,如下圖所示:
(1)域名
域名是查詢的主關(guān)鍵字,即每一個絕對域名的值,一般是管理員需要增加的域名,如為 fastcp.cn 增加一條 www 的 A 記錄,則域名為 “ www.fastcp.cn. ”。代表當用戶查詢 “ www.fastcp.cn. ” 時,則通過該當資源記錄提供應答。
(2)TTL
TTL 即生存期,表示當前資源記錄的生存周期為多長時間,一般指遞歸服務(wù)器從授權(quán)服務(wù)器拿到該條資源記錄時的默認生存周期,如 TTL 為 600 ,則代表當前資源記錄被緩存的時間為 600 秒,600 秒過后,緩存到期,必須重新到授權(quán)服務(wù)器進行請求。(一般運營商為了提高帶寬用戶體驗,都會將這個 TTL 值修改為較大的數(shù)值,以提升遞歸服務(wù)器和緩存服務(wù)器的性能)
一般情況下比較穩(wěn)定的資源記錄,建議將 TTL 值設(shè)為較大的數(shù)值,而對于經(jīng)常需要更改值的資源記錄,建議可以設(shè)置較小的值,如 60 秒。
(3)信息類型
對于 Internet 信息,該項值總為IN ,其它類型信息很少見。
(4)資源類型
常用資源類型包括 SOA、A、AAAA、CNAME、MX、NS、PTR、TXT等。
(5)值
值可以是一個 IP 、域名、ASCII 串,值的定義與資源記錄類型強關(guān)聯(lián)。
(6)資源記錄例子(僅作為參考)
7DNS 之解析器
DNS 解析器一般指 DNS 客戶端,用于發(fā)送 DNS 請求,并將結(jié)果返回給用戶。通常情況下指電腦、手機、終端設(shè)備、解析軟件工具(如 dig 、nslookup 等)
8DNS 工作原理
了解了 DNS 系統(tǒng)的組成部分,接下來看一下 DNS 是如何工作的,即 DNS 是如何將一個域名解析成一個 IP 地址的流程。如下圖所示,是 DNS 一次完整的解析流程:
如上圖所示,DNS 一次完整的域名解析流程如下:(DNS 解析器所在的計算機或瀏覽器自己有緩存的情況下,會先查詢自己計算機和瀏覽器本地緩存,當本地沒有緩存且 HOST 文件中沒有域名記錄的情況下,才會觸發(fā)上圖的流程。)
(1)解析器向本地 Local DNS 發(fā)起 www.fastcp.cn 的域名遞歸解析請求;
(2)Local DNS 會先查詢自己的本地緩存是否有該域名的 A 記錄,如果有則直接返回結(jié)果給解析器;如果本地緩存中無該域名的 A 記錄,則 Local DNS 會向根服務(wù)器發(fā)起查詢該域名 IP 地址的迭代請求;
(3)根域名服務(wù)器向 Local DNS 返回 CN 域的授權(quán)服務(wù)器地址;
(4)Local DNS 向 CN 域的授權(quán)服務(wù)器請求該域名的 IP 地址的迭代請求;
(5)cn 域服務(wù)器向 Local DNS 返回 fastcp.cn 的授權(quán)服務(wù)器地址;
(6)Local DNS 向 fastcp.cn 域的授權(quán)服務(wù)器請求該域名的 IP 地址的迭代請求;
(7)fastcp.cn 域服務(wù)器向 Local DNS 返回 www.fastcp.cn 的 A 記錄,告訴 Local DNS 該域名的 IP 地址是 192.168.1.2 。
(8)Local DNS 拿到該域名的 A 記錄,緩存在自己的服務(wù)器中,并將結(jié)果返回給解析器。解析器返回給計算機或瀏覽器,則計算機通過 HTTP 協(xié)議拿到該域名的 IP 地址網(wǎng)址內(nèi)容,并通過瀏覽器打開。
為看到實際效果,我在我本地完整請求一次 www.fastcp.cn ,來看看是否按照這個流程來給出結(jié)果,如下圖中使用 dig 工具的域名請求:
上圖中的請求,我們可以看出,解析器先去請求 “.” 根服務(wù)器,然后再去的 cn 服務(wù)器,接下來解析器去請求了 fastcp.cn 的服務(wù)器,最終通過 lv3ns2.ffdns.net. 拿到了 42.62.101.185 這個 IP 地址。(有關(guān) Dig 工具的使用方法可自行搜索)
9DNS 緩存機制
通過上個章節(jié)講的 DNS 請求過程,域名在解析的過程中,DNS 名稱服務(wù)器,會將請求來的域名空間數(shù)據(jù)保存至緩存中。通過 DNS 緩存,可以加快 DNS 的解析速度,有點類似 CPU 和內(nèi)存的關(guān)系。在每一次請求中,DNS 服務(wù)器都將先查詢自己的緩存是否有需要查詢的內(nèi)容,若有則自動返回緩存中的內(nèi)容,若沒有則進行 DNS 遞歸或迭代查詢。
DNS 的緩存無法永久存儲,否則 DNS 的記錄發(fā)生變化時,有可能無法及時更新,導致用戶無法打開相應的域名地址。通常情況下 DNS 緩存是有生命周期的,簡稱 TTL 值,該 TTL 值是由每個域名的授權(quán)服務(wù)器管理員配置決定的,即我們前面章節(jié)講到的資源記錄的 TTL 值。默認情況下 Local DNS 服務(wù)器拿到的資源記錄 TTL 值為授權(quán)服務(wù)器配置的。但各大運營商為了減輕遞歸服務(wù)器的壓力,都會通過手段將大多數(shù)域名的 TTL 值改為較大的數(shù)值,以給用戶帶來更好的體驗。
10DNS 查詢
DNS 域名解析的過程中,由 DNS 解析器和 DNS 服務(wù)器完成的整個解析過程。在所有的解析過程中,大概會發(fā)生遞歸查詢、迭代查詢、正向查詢、反向查詢等。
(1)遞歸查詢是指 DNS 客戶端或解析器向本地 Local DNS 發(fā)起的查詢。
(2)迭代查詢是指由本地 Local DNS 向授權(quán)服務(wù)器逐級發(fā)起的查詢,即 Local DNS 向根、cn、com、baidu.com 等發(fā)起的查詢。
(3)正向查詢是指通過域名查詢 IP 地址,即查詢 A 或 AAAA 記錄等。
(4)反向查詢是指通過 IP 地址查詢主機名。反向查詢只由查詢的名字服務(wù)器進行處理,即當收到請求后,查詢本地數(shù)據(jù)庫或緩存中有記錄,則返回,若無記錄,則直接放棄查詢,不在進行迭代請求。
11我該如何查詢自己現(xiàn)在用的 Local DNS 地址呢?
(1)如果您是 Windows 用戶,你可以打開命令提示符,輸入 nslookup 或 ipconfig /all 命令,即可查看自己的 DNS 地址;
(2)如果您是 MAC/linux 用戶,你可以通過終端,輸入 cat /etc/resolv.conf 或 ifconfig ,即可查看自己的 DNS地址;
(3)如果您是手機用戶,您可通過你已連接的 Wi-Fi信息中的 IP 地址查看自己的 DNS 地址。
(4)當然您也可以對 DNS 進行修改,通常可以修改為 Global DNS 地址,如 114.114.114.114 。
DNS 一個隱藏在互聯(lián)網(wǎng)身后的賢內(nèi)助,幾乎所有的互聯(lián)網(wǎng)應用基本都需要 DNS 支撐或幫助,才可以達到最佳的通信效果。本篇是對 DNS 的基礎(chǔ)探討,接下來會基于 DNS 協(xié)議、DNS 架構(gòu)、安全、搭建、運維、DNS 工具、智能 DNS、全球根節(jié)點、頂級域名及 CDN 相關(guān)周邊話題進行探討。
15周年慶鉅惠活動,免費獲取報價方案請致電400-0592-888或提交留言,我們馬上為您服務(wù)!