1. 程式人生 > >計算機網路--DNS完全解析

計算機網路--DNS完全解析

前言

前幾天,因為要申請一個VR方面的專利在網上找參考資料,準備基於Oculus的sdk進行二次開發。突然發現進不了Oculus的官方網站,後面發現是電腦網路設定中的DNS在作妖。最近幾天正好看計算機網路的方面的書,就抽時間把DNS總結一下。

DNS的作用

TCP/IP網路中要求每一個互連的計算機都具有其唯一的IP地址,並基於這個IP地址進行通訊。由於IP地址是有一串數字組成不好記,因此為每一臺計算機賦唯一的主機名,使用者可以用要通訊計算機或伺服器的主機名而無需直接用IP地址進行通訊。但在網路層必須使用IP地址進行,因此域名系統DNS(Domain Name System)是因特網使用的命名系統,用於把便於人們使用的主機名字(如baidu.com)轉換為ip地址。計算機中c盤下會存一個叫做hosts的資料庫檔案,如下圖:

這裡寫圖片描述

域名解析器

進行域名查詢的主機和軟體叫做域名解析器。使用者使用的工作站或電腦都屬於解析器,當某個應用程序要把主機名解析為IP地址使,比如訪問(baidu.com)時,就會呼叫域名解析程式,域名解析程式先訪問本地的hosts資料庫,大部分的域名解析都在本地進行,如果hosts裡面有主機名與對應的IP地址則返回該IP地址。只有hosts裡面沒有的才會把待解析的域名放在DNS請求報文中以UDP使用者報的形式發給本地域名解析器,本地域名解析器在查詢域名後,把對應的IP地址放在回答報文中返回,應用程序獲得目的的主機IP地址後就可以進行通訊。若本地域名伺服器不能回答該請求,則此域名伺服器暫時成為DNS中的另一個客戶,並向其他域名伺服器發出查詢請求。這個過程直到找到能夠回答該請求的域名伺服器為止。

域名的構成

域名是指為了識別主機名稱和組織機構名稱而採用的一種具有分層的名稱。例如,華中科技大學的域名如下:hust.edu.cn 最左邊的 hust 表示華中科技大學,edu表示教育機構,cn表示中國。dns的分層如下圖所示:

這裡寫圖片描述

域名伺服器

域名伺服器是指管理域名的主機和相應的軟體,它可以管理所在分層的域的相關資訊。其所管理的分層叫做ZONE。如下圖所示每一層都有一個域名伺服器:

這裡寫圖片描述

由上圖可以得出以下三點結論

① 各個域的分層上都有各自的域名伺服器

②各層域名伺服器都瞭解該層一下分層中所有域名伺服器的IP地址。因此它們從根節點開始呈樹狀結構相互連線。

③由於所有域名伺服器都瞭解根域名伺服器的IP地址,所以若從根開始按順序追蹤,可以訪問世界上所有域名伺服器的地址。

根域名伺服器:根域名伺服器是最高層次的域名伺服器,也是最重要的域名伺服器。所有的根域名伺服器都知道所有的頂級域名伺服器的域名和IP地址。不管是哪一個本地域名伺服器,若要對因特網上任何一個域名進行解析(轉換為IP地址),只要自己無法解析,就首先要求助於根域名伺服器。

DNS查詢

這裡寫圖片描述

域名的查詢過程注意兩點:
①主機向本地域名伺服器的查詢採用遞迴查詢。所謂遞迴查詢就是:如果主機所詢問的本地域名伺服器不知道被查詢域名的IP地址,那麼本地域名伺服器就以DNS客戶的身份,向根域名伺服器繼續發出查詢請求報文,而不是讓主機自己進行下一步查詢。因此,遞迴查詢返回的結果或者是要查詢的IP地址,或者是報錯,表示無法查詢到所需的IP地址。

②本地域名伺服器向根域名伺服器的查詢通常採用迭代查詢。迭代查詢的特點是這樣的:當根域名伺服器收到本地域名伺服器發出的迭代查詢請求報文是,要麼給出所要查詢的IP地址,要麼告訴域名伺服器下一步要向哪個域名伺服器進行查詢。然後本地域名伺服器繼續進行下一步查詢。

這裡寫圖片描述

總結

其實弄懂DNS主要弄懂兩點:①域名解析器 ②域名伺服器

參考文獻