DNS 域名解析流程: 什么是 DNS DNS(Domain Name System)是域名系統(tǒng)的英文縮寫,是一種組織成域?qū)哟谓Y(jié)構(gòu)的計(jì)算機(jī)和網(wǎng)絡(luò)服務(wù)命名系統(tǒng),用于 TCP/IP 網(wǎng)絡(luò)。
當(dāng)我們在瀏覽器輸入一個 URL 地址時,瀏覽器要向這個 URL 的主機(jī)名對應(yīng)的服務(wù)器發(fā)送請求,就得知道服務(wù)器的 IP,對于瀏覽器來說,DNS 的作用就是將主機(jī)名轉(zhuǎn)換成 IP 地址。
DNS域名解析流程
DNS 域名解析,簡單地說就是把域名翻譯成 IP 地址
瀏覽器緩存檢查
瀏覽器會首先搜索瀏覽器自身的 DNS 緩存,緩存時間比較短,大概只有1分鐘,且只能容納 1000 條緩存,看自身的緩存中是否有對應(yīng)的條目,而且沒有過期,如果有且沒有過期則解析到此結(jié)束。
操作系統(tǒng)緩存檢查 + hosts 解析
如果瀏覽器的緩存里沒有找到對應(yīng)的條目,操作系統(tǒng)也會有一個域名解析的過程,那么瀏覽器先搜索操作系統(tǒng)的 DNS 緩存中是否有這個域名對應(yīng)的解析結(jié)果,如果找到且沒有過期則停止搜索,解析到此結(jié)束。
在 Linux 中可以通過 /etc/hosts 文件來設(shè)置,可以將任何域名解析到任何能夠訪問的IP 地址。如果在這里指定了一個域名對應(yīng)的 IP 地址,那么瀏覽器會首先使用這個 IP地址。當(dāng)解析到這個配置文件中的某個域名時,操作系統(tǒng)會在緩存中緩存這個解析結(jié)果,緩存的時間同樣是受這個域名的失效時間和緩存的空間大小控制的。
第一步
客戶端通過瀏覽器訪問域名為 www.baidu.com (http://www.baidu.com) 的網(wǎng)站,發(fā)起查詢該域名的 IP 地址的 DNS 請求。該請求發(fā)送到了本地 DNS 服務(wù)器上。本地 DNS 服務(wù)器會首先查詢它的緩存記錄,如果緩存中有此條記錄,就可以直接返回結(jié)果。如果沒有,本地 DNS 服務(wù)器還要向 DNS 根服務(wù)器進(jìn)行查詢。
第二步
本地 DNS 服務(wù)器向根服務(wù)器發(fā)送 DNS 請求,請求域名為 www.baidu.com(http://www.baidu.com) 的 IP 地址。
第三步
根服務(wù)器經(jīng)過查詢,沒有記錄該域名及 IP 地址的對應(yīng)關(guān)系。但是會告訴本地 DNS 服務(wù)器,可以到域名服務(wù)器上繼續(xù)查詢,并給出域名服務(wù)器的地址(.com 服務(wù)器)。
第四步
本地 DNS 服務(wù)器向 .com 服務(wù)器發(fā)送 DNS 請求,請求域名 www.baidu.com(http://www.baidu.com) 的 IP 地址。
第五步
com 服務(wù)器收到請求后,不會直接返回域名和 IP 地址的對應(yīng)關(guān)系,而是告訴本地DNS 服務(wù)器,該域名可以在 http://baidu.com 域名服務(wù)器上進(jìn)行解析獲取 IP 地址,并告訴 http://baidu.com 域名服務(wù)器的地址。
第六步
本地 DNS 服務(wù)器向 http://baidu.com 域名服務(wù)器發(fā)送 DNS 請求,請求域名 www.baidu.com(http://www.baidu.com) 的 IP 地址。
第七步
http://baidu.com 服務(wù)器收到請求后,在自己的緩存表中發(fā)現(xiàn)了該域名和 IP 地址的對應(yīng)關(guān)系,并將 IP 地址返回給本地 DNS 服務(wù)器。
第八步
本地 DNS 服務(wù)器將獲取到與域名對應(yīng)的 IP 地址返回給客戶端,并且將域名和 IP 地址的對應(yīng)關(guān)系保存在緩存中,以備下次別的用戶查詢時使用。