【白话科普】聊聊 DNS 的那些小知识
你是否在上網時,遇到過這樣的情況:QQ 能正常發送消息,但是網頁卻打不開,查看網絡連接又正常顯示。面對這種情況很多小伙伴都感到有些無措。那究竟要怎么處理,這究竟是怎么回事呢?
上網查詢得知,一般情況下電腦都是自動獲取 DNS 服務器的,無需手動設置,但一些特殊情況下,沒有獲取到 DNS 服務器,或者服務器出現故障,那我們就需要手動更換 DNS 來保證正常訪問網頁。而這類無法顯示的情況,恰好都是因為 DNS 配置錯誤導致的,可以通過修改 DNS 來解決。
那么 DNS 到底在哪里,它要如何修改呢?
什么是 DNS
DNS(Domain Name System)是域名系統的縮寫。它是 Internet 的基礎之一,用于將域名映射到 IP 地址,就像手機電話簿里將人的名字對應到電話號碼一樣。當我們在瀏覽器中輸入 Web 地址時,就可以通過 DNS 查詢將其轉換為關聯服務器對應的 IP 地址。如果沒有 DNS,我們需要記住每個站點的 IP 地址才能訪問它。
這在互聯網剛興起時,還是可以比較輕松做到的,當時人們可以輕松地將特定 IP 地址與特定計算機相對應,通過在瀏覽器中直接輸入特定的 IP 地址以訪問網站。后來,隨著越來越多的設備和人們加入到這個不斷發展的網絡,IP 越來越多,記憶就變成了一項極大的負擔,網民都想要一個更易于記憶的單詞組成的地址,因此誕生了域名。
在 70 年代和 80 年代初,這些名稱和地址是由一個人(斯坦福大學的 Elizabeth Feinler)分配的,此人在名為 HOSTS.TXT 的文本文件中維護了所有與互聯網連接的計算機的主列表。
顯而易見隨著 Internet 的發展,這是站不住腳的局面,越來越多的地址不可能由一個人維護。所以 1983 年,南加州大學的研究人員 Paul Mockapetris 因此開發了最初的域名系統,并命名為 DNS。盡管此后 DNS 發生了很大變化,但從根本上講,它的工作方式仍與 40 年前一樣。
在具體了解 DNS 在網絡中的作用于工作原理前,我們先來看一下 DNS 的類別。
DNS 服務器類別
所有 DNS 服務器都屬于以下四個類別之一:遞歸解析器、根域名服務器、TLD 域名服務器和權威性域名服務器。在典型的 DNS 查找中,這四種 DNS 服務器通過協同工作來完成將指定域的 IP 地址提供給客戶端的任務。
DNS 遞歸解析器
遞歸解析器(也稱為 DNS 解析器)是 DNS 查詢中的第一站。它屬于客戶端與 DNS 域名服務器的中間人。從 Web 客戶端收到 DNS 查詢的請求后,遞歸解析器將使用緩存的數據進行響應,或者向根域名服務器發送請求,接著向 TLD 域名服務器發送另一個請求,然后向權威性域名服務器發送最后一個請求。收到來自包含已請求 IP 地址的權威性域名服務器的響應后,遞歸解析器將向客戶端發送響應。
在此過程中,遞歸解析器將緩存住從權威性域名服務器收到的信息。當一個客戶端請求的域名 IP 地址是另一個客戶端最近請求的 IP 地址時,解析器可繞過與域名服務器進行通信的過程,并從緩存中為客戶端提供所請求的記錄。
DNS 根域名服務器
每個遞歸解析器都知道 13 個 DNS 根域名服務器,它們是遞歸解析器搜尋 DNS 記錄的第一站。根服務器接受包含域名的遞歸解析器的查詢,根域名服務器根據該域的擴展名(.com、.net、.org 等),通過將遞歸解析器定向到 TLD 域名服務器進行響應。根域名服務器由一家名為 Internet 名稱與數字地址分配機構(ICANN)的非營利組織進行監督。
TLD 域名服務器
頂級域名服務器(Top Level Domain)維護共享通用域擴展名的所有域名的信息,例如 .com、.net 等。例如,.com TLD 域名服務器包含以“.com”結尾的每個網站的信息。如果用戶正在搜索 upyun.com,那么在收到來自根域名服務器的響應后,遞歸解析器將向 .com TLD 域名服務器發送查詢,后者將通過針對該域的權威性域名服務器進行響應。
權威性域名服務器
當遞歸解析器收到來自 TLD 域名服務器的響應時,該響應會將解析器定向到權威性域名服務器。權威性域名服務器通常是解析器查找 IP 地址過程中的最后一步。權威名稱服務器包含特定域名的信息(例如,upyun.com),并且它可為遞歸解析器提供在 DNS A 記錄中找到的服務器 IP 地址。或者如果該域具有 CNAME (別名)記錄,它將為遞歸解析器提供一個別名域,這時遞歸解析器將必須執行全新的 DNS 查找,以便從權威性域名服務器獲取記錄(通常為包含 IP 地址的 A 記錄)。
DNS 記錄
在權威性域名服務器中,DNS 記錄是不可或缺的存在。
DNS 記錄(又名區域文件)是位于權威 DNS 服務器中的指令,它提供了一個域的相關信息,包括哪些 IP 地址與該域關聯,以及如何處理對該域的請求。此外,所有 DNS 記錄都有一個 “TTL”,代表生存時間,指 DNS 服務器多久刷新一次該記錄。
常見的 DNS 記錄有以下幾種:
-
A 記錄:保存域的 IP 地址的記錄。
-
CNAME 記錄:別名,將一個域或子域轉發到另一個域,不提供 IP 地址。
-
MX 記錄:將郵件定向到電子郵件服務器。
-
TXT 記錄:可使管理員在記錄中存儲文本注釋。
-
NS 記錄:存儲 DNS 條目的名稱服務器。
-
SOA 記錄:存儲域的管理信息。
-
SRV 記錄:指定用于特定服務的端口。
-
PTR 記錄:在反向查詢中提供域名。
其中 A 記錄和 CNAME 這兩個是解析域名最常用的記錄。
DNS A 記錄
“A”代表“地址”,這是 DNS 記錄的最基本類型,它指出了域的 IP 地址。例如,提取 upyun.com 的 DNS 記錄,其“A”記錄目前會返回 IP 地址 115.231.97.2。“A”記錄僅保存 IPv4 地址,如果站點具有 IPv6 地址,它將使用“AAAA”記錄。
DNS CNAME 記錄
當域或子域是另一個域的別名時,使用“規范名稱”記錄代替 A 記錄。假設 www.example.com 有一個 CNAME 記錄,其值是“example.com”。這意味著,當 DNS 服務器訪問 www.example.com 的 DNS 記錄時,它實際上會觸發對 example.com 的另一個 DNS 查找,返回 example.com 的 IP 地址。所有 CNAME 記錄都必須指向一個域,而不是 IP 地址。
對于 CDN 來說,由于 CDN 中存在著遍布各地的節點,A 記錄是完全不夠用的。而節點又需要根據用戶本地 DNS 所在地區和運營商不斷變動。所以使用 CNAME 記錄進行域名解析,是一個非常方便的管理方法。做了別名記錄后,就不用再去管節點的 IP 怎么變化了。
DNS 的工作方式
了解了 DNS 有幾種,我們就可以來看一下 DNS 的工作方式了。
因為每一個上網設備都被分配了一個IP地址,所以當用戶在 Web 瀏覽器中輸入訪問域名時,由客戶端計算機發起請求,之后 DNS 在幕后通過一個名為“DNS解析”的過程,查詢對應服務器IP,并進行連接。特別需要注意的是,如果你曾經訪問過一次這個域名,那么你的本地會留有緩存,DNS 就會查找過程中會跳過一些步驟,從而使查找更快。
而完整的 DNS 查找則需要經歷以下幾個步驟:
-
以訪問“upyun.com”為例,用戶在瀏覽器中輸入入 “upyun.com”,查詢傳輸到 Internet 中,并被 DNS 遞歸解析器接收。
-
解析器查詢 DNS 根域名服務器(.)。
-
根服務器使用存儲其域信息的 TLD 域名服務器(.com)的地址響應該解析器。在搜索 upyun.com 時,我們的請求指向 .com TLD。
-
解析器向 .com TLD 發出請求。
-
TLD 服務器隨后使用該域的域名服務器 upyun.com 的 IP 地址進行響應。
-
遞歸解析器將查詢結果發送到域的域名服務器。
-
upyun.com 的 IP 地址之后從域名服務器返回解析器。
-
DNS 解析器使用最初請求的域的 IP 地址響應 Web 瀏覽器。
通過 DNS 查找的這幾步返回 upyun.com 的 IP 地址后,瀏覽器便能發出對該網頁的請求:
-
瀏覽器向該 IP 地址發起 HTTP 請求。
-
位于該 IP 的服務器返回網頁到瀏覽器(第 10 步)。
看完了 DNS 的介紹,你是不是已經對 DNS 有所了解了呢,了解了 DNS,再遇到無法訪問網頁的情況,就可以通過修改 DNS 來解決了。是不是簡單又方便呢?
總結
以上是生活随笔為你收集整理的【白话科普】聊聊 DNS 的那些小知识的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 最容易被盗的密码,你中了么?
- 下一篇: WebSoket 的广泛应用