你真的弄懂了DNS解析過程原理嗎 DNS服務器未響應是什么意思

注意: 因為系統對含有鏈接會降權 , 所以本文中baidu.com用xxxxx代替,shifen.com用bbbbb代替 。
一. 根域就是所謂的“.” , 其實我們的網址xxxxx在配置當中應該是xxxxx.(最后有一點),一般我們在瀏覽器里輸入時會省略后面的點,而這也已經成為了習慣 。
根域服務器我們知道有13臺 , 但是這是錯誤的觀點 。
根域服務器只是具有13個IP地址,但機器數量卻不是13臺 , 因為這些IP地址借助了任播的技術,所以我們可以在全球設立這些IP的鏡像站點,你訪問到的這個IP并不是唯一的那臺主機 。
歡迎關注筆者 , 優質文章都在這里等你 。
二. 域的劃分根域下來就是頂級域或者叫一級域,
有兩種劃分方式,一種互聯網剛興起時的按照行業性質劃分的com.,net.等,一種是按國家劃分的如cn.,jp. , 等 。
具體多少你可以自己去查,我們這里不關心 。
每個域都會有域名服務器,也叫權威域名服務器 。
xxxxx就是一個頂級域名,而x.xxxxx卻不是頂級域名,他是在xxxxx 這個域里的一叫做x的主機 。
一級域之后還有二級域,三級域,只要我買了一個頂級域,并且我搭建了自己BIND服務器(或者其他軟件搭建的)注冊到互聯網中 , 那么我就可以隨意在前面多加幾個域了(當然長度是有限制的) 。
三. 域名服務器能提供域名解析的服務器 , 上面的記錄類型可以是A(address)記錄 , NS記錄(name server),MX(mail),CNAME等 。
A記錄是什么意思呢 , 就是記錄一個IP地址和一個主機名字,比如我這個域名服務器所在的域x.xxxxx,我們知道這是一個二級的域名,然后我在里面有一條A記錄,記錄了主機為a的IP,查到了就返回給你了 。
如果我現在要想xxxxx這個域名服務器查詢a.test.xxxxx,那么這個頂級域名服務器就會發現你請求的這個網址在test.xxxxx這個域中,我這里記錄了這個二級域的域名服務器test.xxxxx的NS的IP 。我返回給你這個地址你再去查主機為a的主機把 。
這些域內的域名服務器都稱為權威服務器,直接提供DNS查詢服務 。
四.解析過程那么我們的DNS是怎么解析一個域名的呢?
1.現在我有一臺計算機,通過ISP接入了互聯網,那么ISP就會給我分配一個DNS服務器,這個DNS服務器不是權威服務器,而是相當于一個代理的dns解析服務器,他會幫你迭代權威服務器返回的應答,然后把最終查到IP返回給你 。
2.現在的我計算機要向這臺ISPDNS發起請求查詢www.xxxxx這個域名了 , (經網友提醒:這里其實準確來說不是ISPDNS,而應該是用戶自己電腦網絡設置里的DNS,并不一定是ISPDNS 。比如也有可能你手工設置了8.8.8.8)
3.ISPDNS拿到請求后,先檢查一下自己的緩存中有沒有這個地址,有的話就直接返回 。這個時候拿到的ip地址,會被標記為非權威服務器的應答 。
4.如果緩存中沒有的話,ISPDNS會從配置文件里面讀取13個根域名服務器的地址(這些地址是不變的,直接在BIND的配置文件中),
5.然后像其中一臺發起請求 。
6.根服務器拿到這個請求后,知道他是com.這個頂級域名下的,所以就會返回com域中的NS記錄 , 一般來說是13臺主機名和IP 。
7.然后ISPDNS向其中一臺再次發起請求,com域的服務器發現你這請求是xxxxx這個域的,一查發現了這個域的NS,那就返回給你,你再去查 。
8.ISPDNS不厭其煩的再次向xxxxx這個域的權威服務器發起請求,xxxxx收到之后,查了下有www的這臺主機 , 就把這個IP返回給你了,
9.然后ISPDNS拿到了之后,將其返回給了客戶端,并且把這個保存在高速緩存中 。
下面我們來用 nslookup 這個工具詳細來說一下解析步驟:
?

你真的弄懂了DNS解析過程原理嗎 DNS服務器未響應是什么意思

文章插圖
你會發現百度有一個cname = www.a.bbbbb 的別名 。這是怎么一個過程呢?
我們用dig工具來跟蹤一下把(linux系統自帶有)
Dig工具會在本地計算機做迭代,然后記錄查詢的過程 。
?
你真的弄懂了DNS解析過程原理嗎 DNS服務器未響應是什么意思

文章插圖
第一步是向我這臺機器的ISPDNS獲取到根域服務區的13個IP和主機名[b-j].root-servers.net. 。
?
你真的弄懂了DNS解析過程原理嗎 DNS服務器未響應是什么意思

文章插圖
第二步是向其中的一臺根域服務器(Servername就是末行小括號里面的)發送www.xxxxx的查詢請求,他返回了com.頂級域的服務器IP(未顯示)和名稱,
?
你真的弄懂了DNS解析過程原理嗎 DNS服務器未響應是什么意思

文章插圖
第三步,便向com.域的一臺服務器192.33.4.12請求,www.xxxxx,他返回了xxxxx域的服務器IP(未顯示)和名稱,百度有四臺頂級域的服務器
【此處可以用dig @192.33.4.12 www.xxxxx查看返回的百度頂級域名服務器IP地址】 。
?
你真的弄懂了DNS解析過程原理嗎 DNS服務器未響應是什么意思

文章插圖
第四步呢,向百度的頂級域服務器(202.108.22.220)請求www.xxxxx,他發現這個www有個別名,而不是一臺主機,別名是www.a.bbbbb 。
?
你真的弄懂了DNS解析過程原理嗎 DNS服務器未響應是什么意思

文章插圖
按照一般的邏輯,當dns請求到別名的時候 , 查詢會終止,而是重新發起查詢別名的請求 , 所以此處應該返回的是www.a.bbbbb而已 。
但是為什么返回a.bbbbb的這個域的NS呢?
我們可以嘗試下面的這個命令:dig +trace 看看有什么結果 。。。。。。。。
你真的弄懂了DNS解析過程原理嗎 DNS服務器未響應是什么意思

文章插圖
?
你會發現第三步時bbbbb這個頂級域的域名服務器和xxxxx這個域的域名服務器是同一臺主機(即:dns.xxxxx)!
當我拿到www.xxxxx的別名www.a.bbbbb的時候,我本來需要重新到com域查找bbbbb域的NS,但是因為這兩個域在同一臺NS上,所以直接向本機發起了 , 
bbbbb域發現請求的www.a.bbbbb是屬于a.bbbbb這個域的,
于是就把a.bbbbb的這個NS和IP返回 , 讓我到a.bbbbb這個域的域名服務器上查詢www.a.bbbbb 。
于是我便從ns X .a.bbbbb中一臺拿到了一條A記錄,最終的最終也便是www.xxxxx的IP地址了.【此處也可以用dig +trace www.a.bbbbb】跟蹤一下
用一個圖來說明一下(圖中第三步的全世界只有13臺是錯誤的)
?
你真的弄懂了DNS解析過程原理嗎 DNS服務器未響應是什么意思

文章插圖
以下內容為在虛擬機中搭建local dns服務器得到的實驗數據,糾正上述結論
在上面的分析中,我們用dig工具進行了追蹤,但是dig沒有繼續追蹤當我們從xxxxx拿到cname和ns2.a.bbbbb的IP之后的事情 。
實際的結果是雖然dns.xxxxx返回了a.bbbbb域的服務器地址和IP,
但是local dns并不是直接向上述返回的IP請求www.a.bbbbb,而是再一次去請求com域 , 得到bbbbb域的服務器(也就是xxxxx的那四臺),
然后又請求www.a.bbbbb , 返回a.bbbbb的域的服務器,最后才是去請求www.a.bbbbb,
雖然上面已經返回了IP,但是實驗的結果就是再走一遍bbbbb域的查詢 。
?
上圖就是localdns在解析www.xxxxx的抓包全過程 。藍色那條就是在收到cname和響應的a.bbbbb的域名服務器IP地址之后,繼續向com域請求bbbbb 。
?
這個圖充分說明了返回cname的同時也返回了ns2.a.bbbbb的IP 。
總結一下①本機向local dns請求www.xxxxx
②local dns向根域請求www.xxxxx,根域返回com.域的服務器IP
③向com.域請求www.xxxxx,com.域返回xxxxx域的服務器IP
④向xxxxx請求www.xxxxx,返回cname www.a.bbbbb和a.bbbbb域的服務器IP
⑤向root域請求www.a.bbbbb
⑥向com.域請求www.a.bbbbb
⑦向bbbbb請求
⑧向a.bbbbb域請求
⑨拿到www.a.bbbbb的IP
⑩localdns返回本機www.xxxxx cname www.a.bbbbb 以及 www.a.bbbbb的IP
文章來源: https://www.cnblogs.com/liyuanhong/articles/7353974.html
您的轉發+關注就是對筆者最大的支持,歡迎關注 。【你真的弄懂了DNS解析過程原理嗎 DNS服務器未響應是什么意思】對大廠架構設計 , BAT面試題分享 , 編程語言理論或者互聯網圈逸聞趣事這些感興趣,歡迎關注筆者 , 沒有錯,干貨文章都在這里 。