DNS尋址
前言:當(dāng)我們對瀏覽器輸入 www.baidu.com時,實際上最終還是訪問到對應(yīng)的web服務(wù)器。雖然我們每次訪問網(wǎng)頁,都是使用域名的方式(例如:www.baidu.com)。但對于計算機(jī)來說,它最終訪問的是域名對應(yīng)的IP(例如:10.102.201.253)。所以今天我們要講的這一切,其實就為了說清楚一件事情:DNS是如何為域名找到對應(yīng)的 IP 地址的。
一、什么是DNS
DNS就是域名系統(tǒng),是因特網(wǎng)中的一個核心服務(wù),是用于實現(xiàn)域名和IP地址相互映射的一個分布式數(shù)據(jù)庫,使用戶更方便的訪問網(wǎng)站,不用去記憶ip數(shù)串。
二、瀏覽器DNS緩存
當(dāng)我們在瀏覽器地址欄輸入域名后,瀏覽器首先會去其本身的 DNS 緩存中查找是否有對應(yīng)域名的記錄。如果有,那么直接訪問對應(yīng)的服務(wù)器。
不同瀏覽器會設(shè)置不同的 DNS 緩存時間,一般來說是 2-30 分鐘之間。如果當(dāng)你修改了系統(tǒng) DNS 緩存后,發(fā)現(xiàn)訪問還是沒生效,你可以嘗試清除下瀏覽器的 DNS 緩存。
三、系統(tǒng)DNS緩存
當(dāng)瀏覽器自身的緩存找不到對應(yīng)域名記錄時,則會去系統(tǒng)的DNS緩存中尋找記錄。在 Windows 系統(tǒng)中,DNS 緩存信息存儲在 C:/windows/system32/drivers/etc/hosts 中。而在 Mac OSX 系統(tǒng)中,DNS 緩存信息存儲在 /etc/hosts 文件中。
四、本地DNS服務(wù)器
如果在系統(tǒng) DNS 也找不到域名的記錄,那么瀏覽器就會去本地的 DNS 服務(wù)器(LDNS)上尋找該域名的記錄。
五、域名結(jié)構(gòu)解析
如上圖所示,域名結(jié)構(gòu)是樹狀結(jié)構(gòu),樹的最頂端代表根服務(wù)器,根的下一層就是由我們所熟知的.com、.net、.cn等通用域和.cn、.uk等國家域組成,稱為頂級域。網(wǎng)上注冊的域名基本都是二級域名,比如http://baidu.com、http://taobao.com等等二級域名,它們基本上是歸企業(yè)和運維人員管理。接下來是三級或者四級域名。
六、根DNS服務(wù)器
當(dāng) LDNS 服務(wù)器還是招不到域名對應(yīng)的記錄時,那么其就會去根 DNS 服務(wù)器去尋找域名對應(yīng)的記錄。根 DNS 服務(wù)器全球只有 13 臺,所以在 LDNS 服務(wù)器建立的時候,其會寫死一個根 DNS 服務(wù)器的 IP 地址列表。
但實際上根 DNS 服務(wù)器并不存儲所有域名的信息,其只存儲頂級域名的解析記錄。即對于我們訪問的域名 來說,根 DNS 服務(wù)器并不能告訴我們 這個域名對應(yīng)的 IP 是多少,它只能告訴我們 這個頂級域名應(yīng)該找哪個 DNS 服務(wù)器解析,然后把對應(yīng)頂級 DNS 服務(wù)器的 IP 地址告訴我們。
七、頂級DNS服務(wù)器
我們訪問域名 后,根 DNS 服務(wù)器告訴我們可以找對應(yīng)的 頂級 DNS 服務(wù)器解析。但實際上頂級 DNS 服務(wù)器只能解析二級域名的地址,即它只能告訴你: 這個域名應(yīng)該找哪臺 DNS 服務(wù)器去解析。
這里我們從頂級 DNS 服務(wù)器解析 這個域名得到的 DNS 服務(wù)器,其實就是你買域名時用于管理解析的服務(wù)器。而且也是你設(shè)置域名 NS 記錄時,設(shè)置的 DNS 服務(wù)器的地址。
八、域名DNS服務(wù)器
上一步我們知道 這個頂級域名應(yīng)該找哪臺 DNS 服務(wù)器去解析,其實這臺 DNS 服務(wù)器就是我們購買域名時設(shè)置的用于解析的 DNS 服務(wù)器。在這臺 DNS 服務(wù)器上,我們通過設(shè)置一條 A 記錄(A 記錄就是域名到 IP 地址的映射)就可以讓某個域名與 IP 聯(lián)系起來。
當(dāng)瀏覽器去請求 對應(yīng)的 DNS 服務(wù)器時,其會嘗試尋找解析類型為 A ,并且主機(jī)名為 的解析記錄。如果找到了,那么就返回對應(yīng)的 IP 地址。否則就報告 DNS 解析錯誤,其不會再去其他 DNS 服務(wù)器上尋找了。
九、DNS解析流程
十、遞歸查詢和迭代查詢
主機(jī)向本地域名服務(wù)器的查詢一般都是采用遞歸查詢