DNS解析的介紹
DNS是什么
DNS 即 Domain Name System,字面上理解,其實(shí)就是一個(gè)域名的名字系統(tǒng),用來(lái)管理域名:ip的對(duì)應(yīng)關(guān)系。通俗來(lái)講,就是一個(gè)鍵值對(duì)的列表。上面保存著 域名:ip。
舉個(gè)例子 www.baidu.com 其實(shí)是www.baidu.com.最后面的.指的是根服務(wù)器root。所以它的結(jié)構(gòu)組成就是:
主機(jī)名.二級(jí)域名.一級(jí)域名.頂級(jí)域名
反正就是從后往前一直類(lèi)推域名的等級(jí)
DNS解析的流程
- 本地host文件
- 本地DNS緩存
- DNS服務(wù)器緩存
- DNS服務(wù)器遞歸查詢(xún)
本地host文件
通過(guò)修改host文件,可以直接通過(guò)域名訪(fǎng)問(wèn)我們想要訪(fǎng)問(wèn)的機(jī)器
本地DNS緩存
如果host文件中并沒(méi)有獲取到ip地址,那么DNS就會(huì)查詢(xún)本地的DNS緩存,如果有的話(huà)就直接返回對(duì)應(yīng)的IP地址。如果沒(méi)有那么會(huì)繼續(xù)進(jìn)行下面的流程
DNS服務(wù)器緩存
如果本地DNS緩存沒(méi)有,那么我們會(huì)直接去到DNS緩存服務(wù)器重查詢(xún)。而這個(gè)DNS服務(wù)器的地址,在我們鏈接了網(wǎng)絡(luò)之后,本機(jī)電腦就會(huì)有該DNS服務(wù)器的地址。
然后DNS接收到了查詢(xún)?cè)L問(wèn)之后,查看自己的緩存中是否有這個(gè)域名對(duì)應(yīng)的ip地址。如果沒(méi)有,那么他會(huì)返回一個(gè)根服務(wù)器的ip地址然后讓我們通過(guò)這個(gè)ip地址去查詢(xún)
DNS服務(wù)器的遞歸查詢(xún)
- 首先,我們會(huì)詢(xún)問(wèn)根域名,獲取頂級(jí)域名(.com)的NS(name Server)和 A(address)。N是頂級(jí)域名的名字,A為該域名的ip
- 獲取到了頂級(jí)域名的ip后,我們會(huì)向頂級(jí)域名獲取二級(jí)域名同樣的獲取它的NS和A
- 此時(shí)我們?cè)傧?a target="_blank">baidu.com請(qǐng)求,www.baidu.com的NS和A
- 最終我們會(huì)向www.baidu.com請(qǐng)求,并且獲取IP,然后返回給本機(jī),并且本機(jī)會(huì)把他們緩存起來(lái)
補(bǔ)充 如果我們的訪(fǎng)問(wèn)的域名有一個(gè)別名,例如www.a.baidu.com。那么在第三步的時(shí)候,我們會(huì)查詢(xún)到兩個(gè)域名的ip分別是www.a.baidu.com 和 www.baidu.com。下面再說(shuō)一下如果獲取到的是前面的域名的情況
- 獲取到www.a.baidu.com的ip的時(shí)候,我們會(huì)重新向.root發(fā)起請(qǐng)求
- 然后向.com發(fā)起請(qǐng)求,然后獲取到baidu.com的ip
- 向a.baidu.com發(fā)起請(qǐng)求,然后獲取到a.baidu.com的ip
- 最后向www.a.baidu.com請(qǐng)求,獲取到ip然后返回給本地
最終,本機(jī)會(huì)獲取到www.baidu.com和www.a.baidu.com的ip地址,并且緩存起來(lái)
最后附上一張網(wǎng)上文章看到的圖,幫助理解

參考文章
https://juejin.cn/entry/6844903590918619144
https://juejin.cn/post/6844903752890056711
https://juejin.cn/post/684490375289005671