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