原文:https://dyn.com/blog/dns-why-its-important-how-it-works/
域名系統(Domain Name System,也就是 DNS)被用來將人類可讀的諸如 www.dyn.com
這樣的主機名稱處理成類似 204.13.248.115
的機器可讀的 IP 地址。DNS 也提供一些關於域名的其他資訊,比如郵件服務(譯註:可參閱 https://baike.baidu.com/item/郵件伺服器#3_4
)。
但是為什麼說 DNS 如此重要?它是如何工作的?還有什麼是你應該知道的呢?
為什麼說 DNS 如此重要 ?
DNS 就像網際網路上的電話簿。如果你知道某人的名字但不知道他的電話號碼,在電話簿上就可以輕易查詢到。DNS 在網際網路上就提供了同樣的服務。
當你用瀏覽器訪問 http://www.dyn.com
時,你的計算機使用 DNS 檢索到該網站的 IP 地址為 204.13.248.115
。如果沒有 DNS,那就只能用 IP 地址直接訪問網站了。
DNS 是如何工作的 ?
當你訪問諸如 http://www.dyn.com
這樣的域名時,你的計算機會按以下順序,一步步的將人類可讀的 web 地址轉換為機器可讀的 IP 地址。在每次使用到域名時都是這樣,不管你是瀏覽網站、傳送郵件還是收聽 Pandora 這種線上廣播(譯註:僅美國可用的一個極簡線上音樂站點)時。
Step 1: 請求資訊
整個過程開始於你要求計算機處理一個主機名的時候,比如說訪問 http://www.dyn.com
。計算機的目光首先會投向其本地的 DNS 快取(譯註:還會優先考慮代理外掛、瀏覽器設定、hosts 檔案等),那裡儲存了計算機最近接收過的資訊。
如果計算機沒有得到答案,就需要執行 DNS 查詢 了。
Step 2: 詢問遞迴式 DNS 伺服器
如果本地沒有儲存所需的資訊,計算機會聯絡你的 ISP(網路服務提供商)的遞迴式 DNS 伺服器。這些專門的機器幫你幹了 DNS 查詢 的跑腿兒活。遞迴式伺服器也有其自身的快取,所以常常在這步就能完成查詢過程,並將資訊返回給使用者了。
Step 3: 詢問 root 伺服器
如果遞迴式伺服器也沒有答案,它們就會去查詢 root nameservers 。一個 nameserver 就是一臺用以回答關於域名的問題(如 IP 地址)的機器。全球的 13 個 root 伺服器(譯註:每個又有若干臺映象,截至2017年11月,全球共有800臺根域名伺服器在執行)扮演著 DNS 的電話接線總機的角色。它們並不知道答案,但可以告訴我們去問誰,從而可以找到答案。
Step 4: 詢問 TLD 伺服器
root 伺服器根據請求的首個部分,按從右向左讀的順序,找到 www.dyn.com 裡面的 .com
,並將請求導向 .com
對應的 TLD nameservers
(頂級域名伺服器)。每個 TLD,如 .com
、.org
及 .us
,擁有其自己的一組域名伺服器,扮演其接線員的角色。這些伺服器也沒有我們需要的資訊,但可以直接將我們引薦到持有資訊的伺服器上去。
Step 5: 詢問 DNS 權威伺服器
TLD 伺服器繼續審視請求的下一個部分 -- www.dyn.com,並將查詢引導至負責這部分域名的伺服器 -- 這些被稱為權威伺服器(authoritative nameservers) 的機器負責將特定域名的所有資訊儲存在 DNS 記錄(DNS records) 中。記錄有很多種,每種包含一種不同的資訊。
在本例中,我們想知道 www.dyn.com
對應的 IP 地址,所以我們向權威伺服器詢問 地址記錄(A,也就是Address Record)。
Step 6: 接收一條記錄
遞迴式伺服器從權威伺服器接收到 dyn.com
的 A 記錄後,將其儲存在自身的本地快取中。當其他人再請求 dyn.com
的主機記錄,遞迴式伺服器就成竹在胸了,不用再走一遍查詢流程了。
所有記錄都有一個 time-to-live 值,類似於過期時間。一段時間之後,遞迴式伺服器就需要記錄的新拷貝,以確保資訊不會過期。
Step 7: 得到答案
你的計算機得到遞迴式伺服器返回的帶有答案的記錄後,將其儲存在自身的快取中;然後從記錄中讀出 IP 地址,並將該資訊告知你的瀏覽器。隨後瀏覽器就會建立一個和伺服器的連線,並接收到網站資料。
從始到終,這一整個過程,只消數毫秒便可完成。
長按二維碼或搜尋 fewelife 關注我們哦