DNS請(qǐng)求中百匆,經(jīng)常涉及到的概念有很多砌些,例如A記錄,CNAME,TTL存璃,NS仑荐,遞歸服務(wù)器,遞歸查詢等纵东;我們先通過熟悉DNS的一次請(qǐng)求過程粘招,再來(lái)逐一介紹這些概念;
一篮迎、DNS查詢過程
首先client對(duì)一個(gè)網(wǎng)址發(fā)起請(qǐng)求男图,這時(shí)候需要DNS服務(wù),把網(wǎng)址轉(zhuǎn)換為相對(duì)應(yīng)的IP地址甜橱,DNS服務(wù)首先需要知道自己的DNS服務(wù)器是誰(shuí)逊笆,這個(gè)一般都是系統(tǒng)里面的配置,比如 windows岂傲,mac電腦網(wǎng)絡(luò)設(shè)置中都會(huì)有DNS服務(wù)器难裆,如果不手動(dòng)修改,DNS地址一般都為本地局域網(wǎng)的DNS服務(wù)器镊掖;linux系統(tǒng)乃戈,DNS服務(wù)器在 /etc/resolv.conf 文件中設(shè)置;
假如client現(xiàn)在查詢 www.baidu.com
步驟一亩进,client向遞歸服務(wù)器發(fā)起DNS查詢
步驟二症虑,遞歸服務(wù)器收到請(qǐng)求之后,開啟發(fā)起DNS的遞歸查詢归薛;遞歸查詢的過程如 圖中2谍憔,3,4主籍;在介紹遞歸查詢之前习贫,先看一下域名的組成結(jié)構(gòu):
例如 www.baidu.com. ,
client ————》 local DNS
local DNS ————》.根記錄
local DNS ————》.com記錄
local DNS ————》域名NS記錄
local DNS ————》返回A記錄
下面通過抓包看一下具體的過程:
圖中包72 遞歸服務(wù)器向 根服務(wù)器查詢 www.baidu.com
包141 根服務(wù)器返回 com.的地址
遞歸服務(wù)器向com.發(fā)起www.baidu.com查詢
com.返回 百度ns 的地址
遞歸服務(wù)器向百度NS發(fā)起請(qǐng)求
百度NS發(fā)回最終www.baidu.com的cname解析
因?yàn)?a target="_blank">www.baidu.com是 cname到其他域名千元,下圖又進(jìn)行了一次對(duì)shifen.com的查詢苫昌,查詢過程和以上的過程一樣
最后 遞歸服務(wù)器取到了www.baidu.com的解析,把解析返回給client幸海;
二祟身、涉及到的概念
A記錄,A記錄是域名對(duì)應(yīng)的IP地址物独,例如我們想把服務(wù)器對(duì)外提供服務(wù)袜硫,把域名映射到我們的服務(wù)器地址上就可以;
CNAME议纯,是域名的別名父款,比如www.baidu.com的 CNAME是www.a.shifen.com.溢谤;一般大流量的域名都是有CNAME記錄的瞻凤,在實(shí)際的場(chǎng)景中憨攒,CNAME記錄方便做調(diào)度,比如CDN場(chǎng)景中阀参,CDN廠商只提供給我們CNAME肝集,具體CNAME后端服務(wù)的IP地址他們就可以控制了;
TTL:DNS服務(wù)器對(duì)域名的緩存時(shí)間蛛壳,直接的感受
如果client發(fā)起了一次域名查詢杏瞻,遞歸服務(wù)器發(fā)現(xiàn)這個(gè)域名的TTL還沒有過期,就不用重新發(fā)起查詢了衙荐,可以直接把上次查詢的結(jié)果直接返回給client捞挥;假如遞歸服務(wù)器發(fā)現(xiàn)www.baidu.com這條記錄的TTL請(qǐng)求過期了,但是 baidu.com的NS的TT了沒有過期忧吟,就可以省去前面 2砌函,3步驟,直接向baidu.com發(fā)起查詢溜族。例如:
NS 就是實(shí)驗(yàn)過程中提到的baidu.com這個(gè)地址讹俊,他是www.baidu.com記錄的上游。baidu.com里面有 xxx.baidu.com所有的地址煌抒,這個(gè)服務(wù)器一般是企業(yè)自己的服務(wù)器仍劈,向權(quán)威機(jī)構(gòu)注冊(cè),就是向 com.注冊(cè)告訴他所有查詢 帶有 baidu.com后綴的請(qǐng)求都發(fā)給他寡壮;
遞歸服務(wù)器:就是上面所說(shuō)的代替client去查詢DNS請(qǐng)求的服務(wù)器贩疙;
以上就是DNS相關(guān)的一些基礎(chǔ)概念,可以用dig, nslookup這些命令查詢一些常見的域名诬像,看看他們 TTL屋群,NS 的返回結(jié)果;