我們在使用瀏覽器訪問互聯(lián)網(wǎng)資源時,想獲取指定的服務(wù)和信息闷供。首先就要了解瀏覽器是如何定位到我們的站點的拳芙。輸入一個域名(如:www.jd.com)瀏覽器會首先從自身的緩存中查詢是否有歷史域名對應(yīng)的IP并且有效,如果有就使用該緩存通過IP直接訪問到指定的站點埂息。如果沒有則查詢本地的Host緩存技潘,如果有就使用本地的緩存直接訪問站點,沒有則向本地DNS服務(wù)器發(fā)起請求查詢千康,如果本地DNS服務(wù)也沒有找到享幽,則向公網(wǎng)DNS服務(wù)發(fā)起查詢請求獲取對應(yīng)的有效IP,并返回緩存到瀏覽器和本地緩存中拾弃,供后續(xù)請求使用值桩。
DNS記錄會有一個ttl值(time to live),單位是秒豪椿,意思是這個記錄最大有效期是多少奔坟。操作系統(tǒng)緩存會參考ttl值携栋,但是不完全等于ttl值,而瀏覽器DNS緩存的時間跟ttl值無關(guān)咳秉,每種瀏覽器都使用一個固定值婉支。
DNS查詢請求類型:
1、權(quán)威答復(fù):權(quán)威答復(fù)是返回給客戶的正向答復(fù)澜建,并且設(shè)置了DNS消息中的權(quán)威位向挖。此答復(fù)代表從具有權(quán)威的DNS服務(wù)器處發(fā)出。
2炕舵、正向答復(fù):正向答復(fù)包含了匹配客戶端解析請求的資源記錄何之。
3、參考答復(fù):參考答復(fù)只在DNS服務(wù)器工作在迭代模式下使用咽筋,包含了其他有助于客戶端解析請求的信息溶推。例如,當(dāng)DNS服務(wù)器不能為客戶端發(fā)起的解析請求找到某個匹配值時奸攻,則向DNS客戶端發(fā)送參考回復(fù)悼潭,告訴它有助于解析請求的信息。
4舞箍、否定答復(fù):否定答復(fù)指出權(quán)威服務(wù)器在解析客戶端的請求時可能遇到了以下兩種情況之一:
權(quán)威DNS服務(wù)器報告客戶端查詢的名字不存在;
權(quán)威DNS服務(wù)器報告存在對應(yīng)的名字,但是不存在指定類型的資源記錄皆疹。
DNS服務(wù)器解析返回IP分配策略與客戶端對域名IP選擇策略,無論正向答復(fù)還是否定答復(fù)疏橄,DNS客戶端都將結(jié)果保存在自己的本地緩存中
瀏覽器緩存:
瀏覽器在獲取網(wǎng)站域名的實際IP地址后會對其IP進(jìn)行緩存,減少網(wǎng)絡(luò)請求的損耗略就。每種瀏覽器都有一個固定的DNS緩存時間捎迫。
參考瀏覽器DNS緩存時間:
本地緩存:
每種操作系統(tǒng)都有自己的DNS緩存時間控制。
1表牢、Windows DNS默認(rèn)值是MaxCacheTTL窄绒,它的默認(rèn)值是86400s,也就是一天崔兴。
2彰导、MacOS遵循DNS協(xié)議中的TTL,根據(jù)各種網(wǎng)絡(luò)協(xié)議不同對不同的域名采用不同的緩存時間策略。在IPv4包頭中TTL是一個8 bit字段敲茄,它位于IPv4包的第9個字節(jié)位谋。
參考本地DNS緩存時間:
在命令行執(zhí)行nslookup指令可以看到一個域名對應(yīng)的IP地址,并且可以幫助我們判斷是否有DNS劫持堰燎。隨便解析一個網(wǎng)站掏父,比如
www.jd.com應(yīng)該返回的是正常的地址
然后再解析一個不存在的網(wǎng)站,比如123123.aaaa.com.cn如果返回的結(jié)果是
DNS request timed out.
timeout was 2 seconds.
那么證明你的DNS沒有被劫持秆剪。
如果返回的結(jié)果是一個IP地址赊淑,比如說網(wǎng)通的返回地址是230.xxx.xxx.xxx爵政,那么證明你的DNS被劫持了。
通過了解瀏覽器陶缺、本地緩存可以幫助我們更好的為用戶服務(wù)钾挟。
1、大型的互聯(lián)網(wǎng)公司都有IP流量監(jiān)控组哩,當(dāng)發(fā)生網(wǎng)絡(luò)故障或劫持時可以第一時間發(fā)現(xiàn)等龙。
2、頁面是我們與用戶面對面溝通的渠道和方式伶贰,當(dāng)我們的網(wǎng)頁和服務(wù)呈現(xiàn)在用戶面前時蛛砰,我們要了解我們提供的服務(wù)是如何影響到用戶的體驗的,比如我們前端頁面的JS黍衙、CSS等文件的動態(tài)版本號處理方式結(jié)合緩存是如何變化的泥畅,每次發(fā)版會對什么樣的用戶有影響,都需要嚴(yán)謹(jǐn)琅翻。
3位仁、機(jī)房內(nèi)部的各個應(yīng)用程序服務(wù),比如Zookeeper方椎、Redis聂抢、RPC、DB在DNS緩存變化時棠众,可能引起的網(wǎng)絡(luò)抖動琳疏,是否會對用戶請求造成影響,也是我們必須要注意的問題闸拿。