天天看點

域名分級與域名解析過程(DNS)1 域名及域名分級的原因2 域名分級3 域名體系與域名解析流程4 主機名5 參考連結:

前幾天被其他同僚的一個問題給問到了,域名的問題,問本人現在的域名很長,當時随口一說是這是一個二級域名,但後面一想有點不對,這種基礎的東西搞不清楚是顯得又low又蠢,得學習記錄一波。今天晚上有空轉身就把綠殼計算機網絡摸出來了,果然說錯了……

本文參考:計算機網絡第六版

文章目錄

  • 1 域名及域名分級的原因
  • 2 域名分級
  • 3 域名體系與域名解析流程
    • 3.1 域名體系
    • 3.2 域名伺服器分類
    • 3.3 域名解析過程
    • 3.4 舉例
    • 3.5 域名前的www
    • 3.6 linux 檢視域名對應ip的指令
  • 4 主機名
    • 4.1 廣域網
    • 4.2 區域網路
    • 4.3 host檔案
  • 5 參考連結:

1 域名及域名分級的原因

域名系統DNS(domain name system)是網際網路使用的命名系統,用于把便于人們記憶的機器名字(域名)轉換成ip位址。

那麼為什麼存在域名分級呢?

因為整個網際網路不可能隻使用一個域名伺服器提供服務,是以,域名系統DNS使用成層次樹狀結命名,并使用分布式的域名系統。這一點可以參考第三節中域名解析過程。

2 域名分級

任何連接配接到網際網路上的主機或路由都有唯一層次結構的名字即域名(domain name)。

網際網路采用層次樹狀結構命名方法。域是名字空間中一個可被管理的劃分(按機構組織劃分),域可被劃分為子域,子域可再被劃分,即形成了頂級域名、二級域名、三級域名等。從右向左為頂級域名、二級域名、三級域名等,用點隔開。如:

tieba.baidu.com

它由三個标号組成, com即為頂級域名,baidu為二級域名,tieba即為三級域名。且域名不分區大小寫。

PS:沒有一級域名的說法。

現在也有人把baidu.com連在一起稱為二級域名,但從wiki定義上來說二級域名隻是baidu而已。

3 域名體系與域名解析流程

3.1 域名體系

上面隻是從文法上對域名解析進行了分析,但實際上對域名解析真實流程應該有一個基礎的概念。

我們可以用一個域名樹來表示一個來表示域名網絡結構,最上面的是根,但沒有對應的名字。根下面一級的節點就是最高一級的頂級域名(因為根沒名字,是以根下面一級域名就是頂級域名)。頂級域名往下劃分就是二級域名,再往下劃分就是三級四級域名。這裡就解釋了域名系統中根的概念。

域名分級與域名解析過程(DNS)1 域名及域名分級的原因2 域名分級3 域名體系與域名解析流程4 主機名5 參考連結:

DNS域名伺服器同樣具有類似的結構

域名分級與域名解析過程(DNS)1 域名及域名分級的原因2 域名分級3 域名體系與域名解析流程4 主機名5 參考連結:

在圖中每一個域名伺服器都能進行部分域名到IP位址的解析,當某個DNS伺服器不能進行域名到IP位址的轉換時,它就會到網絡上其他域名伺服器進行解析。從圖中也可看出,DNS域名伺服器也是按照層次安排。每一個域名伺服器都隻對域名體系中的一部分進行管轄。

3.2 域名伺服器分類

個人認為本地域名伺服器的概念比較重要 和前面三類是不一樣的。

(1) 根伺服器

根域名伺服器是最高層次的域名伺服器,所有的根域名伺服器都知道所有頂級域名伺服器的域名和ip。根域名伺服器一版情況下不會把待查詢的域名直接轉換IP,而是告訴本地域名伺服器下一步應該找哪一個頂級域名伺服器進行查詢。

(2)頂級域名伺服器

頂級域名伺服器管理在該頂級域名伺服器注冊的所有二級域名,但受到DNS查詢就會有相應應答。(可能是給出最後的結果或下一步一應當找的域名伺服器ip)

(3)權限域名伺服器

可以了解為二級域名下 負責一個區的域名伺服器、如abc.com和y.abc.com應各設有一個權限域名伺服器。

PS: 這裡感覺有了解有點誤差,在阿裡雲上買了某個域名abc.com 後面的三級域名都是可以自己設定的,如果通路量較小,整個abc.com僅一個區。下面的y.abc.com和 a.abc.com應該是公用的同一個權限域名伺服器。

(4)本地域名伺服器

本地域名伺服器并不屬于3.1域名伺服器圖中的層級結構,但對域名系統非常重要。但一台主機發出DNS請求時就是發給本地域名伺服器。

每一個網際網路服務提供ISP(電信聯通移動),或一個大學都可以擁有一個本地域名伺服器。這種伺服器有時也被稱為預設域名伺服器。本地域名伺服器一般離使用者較近,一般不超過幾個路由的距離。如果要查詢的IP同屬一個本地ISP時即可直接傳回結果位址ip。

域名伺服器同樣具有主從模式保證服務可用

3.3 域名解析過程

在3.2中了解到了幾種域名伺服器的差別之後,這裡就學習最重要的一個域名是如何變成ip的。

域名伺服器(DNS)實際上記錄域名與ip的對應關系。

主機發起查詢請求到得到結果有以下流程:

1 主機向本地域名伺服器發起查詢。

2 本地域名伺服器向網絡上各DNS域名伺服器發起請求得到結果

3 本地域名伺服器告訴主機結果。

而DNS查詢流程有兩種模式

遞歸模式(用于上訴查詢1過程中 主機與本地域名伺服器的查詢):

如果主機所詢問的本地域名伺服器不知道被查詢的域名的IP位址,那麼本地域名服 務器就以DNS客戶的身份,向其它根域名伺服器繼續發出查詢請求封包(即替主機繼續查詢),而不是讓主機自己進行下一步查詢。是以,遞歸查詢傳回的查詢結 果或者是所要查詢的IP位址,或者是報錯,表示無法查詢到所需的IP位址。

疊代模式(用于上訴查詢過程2 本地域名伺服器與各DNS域名伺服器的查):

當根域名伺服器收到本地域名伺服器發出的疊代查詢請求封包時,要麼給出所要查詢的 IP位址,要麼告訴本地伺服器:“你下一步應當向哪一個域名伺服器進行查詢”。然後讓本地伺服器進行後續的查詢。根域名伺服器通常是把自己知道的頂級域名伺服器的IP位址告訴本地域名伺服器,讓本地域名伺服器再向頂級域名伺服器查詢。頂級域名伺服器在收到本地域名伺服器的查詢請求後,要麼給出所要查詢的 IP位址,要麼告訴本地伺服器下一步應當向哪一個權限域名伺服器進行查詢。最後,知道了所要解析的IP位址或報錯,然後把這個結果傳回給發起查詢的主機。

真實DNS解析流程:主機與本地域名伺服器遞歸查詢,本地域名伺服器疊代查詢

域名分級與域名解析過程(DNS)1 域名及域名分級的原因2 域名分級3 域名體系與域名解析流程4 主機名5 參考連結:

真實DNS實作上一般都采用高速緩存技術,各級域名伺服器緩存一段時間查詢結果。

3.4 舉例

這裡通過一個計算機網絡書上的一個舉例來說明解析流程:

假定域名為m.xyz.com的主機想知道另一個主機y.abc.com的IP位址。例如,主機m.xyz.com打算發送郵件給y.abc.com。這時就必須知道主機y.abc.com的IP位址。下面是上圖a的幾個查詢步驟:

1、主機m.abc.com先向本地伺服器dns.xyz.com進行遞歸查詢。

2、本地伺服器采用疊代查詢。它先向一個根域名伺服器查詢。

3、根域名伺服器告訴本地伺服器,下一次應查詢的頂級域名伺服器dns.com的IP位址。

4、本地域名伺服器向頂級域名伺服器dns.com進行查詢。

5、頂級域名伺服器dns.com告訴本地域名伺服器,下一步應查詢的權限伺服器dns.abc.com的IP位址。

6、本地域名伺服器向權限域名伺服器dns.abc.com進行查詢。

7、權限域名伺服器dns.abc.com告訴本地域名伺服器,所查詢的主機的IP位址。

8、本地域名伺服器最後把查詢結果告訴m.xyz.com。

整個查詢過程共用到了8個UDP封包。本地域名伺服器經過3次疊代查詢後,從權限域名伺服器dns.abc.com得到主機y.abc.com的IP位址。最後将結果傳回給發起查詢的主機m.xy.comz

這裡還需要進行說明的是浏覽器到本地域名伺服器之前的操作:
1 當我們通路一個 URL,例如 y.abc.com會優先查找浏覽器的 DNS 緩存,如果命中就會傳回,未命中就會繼續下一步,查找作業系統的緩存。
2 浏覽器的 DNS 緩存沒有命中,則檢視作業系統中是否有域名對應的 IP,位于作業系統的 hosts 檔案。
3 當 浏覽器 DNS 緩存 與 系統(OS)緩存 均無映射,則請求會發送到路由器緩存中檢查。(這裡路由緩存已經相當于用疊代模式的本地域名伺服器了)
正如上訴所說各級域名系統均具有高速緩存。而DNS對域名的解析結果會緩存在上訴所得各級域名伺服器内。(這裡也包括浏覽器)**而緩存時長則由DNS服務設定TTL時間決定。**
           

3.5 域名前的www

為什麼很多域名前面都有www,因為曆史遺留原因,早期網際網路公司以域名字首來區分服務,如www.xxx.com,mail.xxx.com,ftp.xxx.com等,是以因為這個遺留原因導緻了www延用至今。

在DNS行為上對www和不帶www的的解析完全是處理成兩個不同域名,如

www.xxx.com

xxx.com

做域名背景解析設定可以将www.xxx.com指向網站ip

xxx.com也同樣指向網站ip。當然從SEO優化上考慮,我們可以将xxx.com做301重定向到www.xxx.com

3.6 linux 檢視域名對應ip的指令

dig 域名

dig www.xxx.com

域名分級與域名解析過程(DNS)1 域名及域名分級的原因2 域名分級3 域名體系與域名解析流程4 主機名5 參考連結:

ANSWER SECTION中内容即為域名對應ip

PS:能通路真外網千萬不要點www.xxx.com這個網址,知乎上來的梗(手動滑稽)

4 主機名

有網友提到主機名和域名差別的問題,一下又被問住了。談起主機名一般都是區域網路裡面用的多。比如區域網路裡搜尋同僚的電腦就是用的主機名。這裡進而聯想到談的比較多的hosts檔案。 這裡也整理一下學習到内容。

主機名,個人認為需要從廣域網和區域網路來看。

4.1 廣域網

在廣域網,域名裡面的主機名是指:

主機名是指二級域名下一級域名(三級域名)這是使用者在自己的域裡面為伺服器配置設定的名稱,是使用者可以任意配置設定的,是以被稱為主機名。

4.2 區域網路

在網絡通信中,每個IP可唯一辨別一台主機,但IP位址的可讀性非常差。于是人們使用英文字母和單詞組成的主機名來替換該主機IP位址。比如

在我所使用内網内,就是用cdoa08的主機名作為172.28.52.200這台伺服器的主機名。實際上ping cdoa08 和ping 172.28.52.200 效果是一樣。

域名分級與域名解析過程(DNS)1 域名及域名分級的原因2 域名分級3 域名體系與域名解析流程4 主機名5 參考連結:

而主機名是如何實作的呢?

1 通過4.3 中host文方式

2 通過内網DNS解析

4.3 host檔案

hosts的作用和dns類似,也是通過域名解析出IP位址,隻不過是在我們本地進行,而且解析優先級比dns還要高。也就是說系統會首先查找hosts檔案裡是否有域名的解析資訊,如果沒有查詢到,才會走第二步,繼續在dns伺服器中查詢。

測試:

C:\Windows\System32\drivers\etc

域名分級與域名解析過程(DNS)1 域名及域名分級的原因2 域名分級3 域名體系與域名解析流程4 主機名5 參考連結:

這裡我在windows host檔案裡添加一個andlitest 主機名并映射到127.0.0.1

我嘗試ping一下 andylitest

域名分級與域名解析過程(DNS)1 域名及域名分級的原因2 域名分級3 域名體系與域名解析流程4 主機名5 參考連結:

果然解析到了 127.0.0.1

5 參考連結:

https://www.zhihu.com/question/29998374

https://blog.csdn.net/qq_15936309/article/details/76896562

https://zhuanlan.zhihu.com/p/117964719

繼續閱讀