文章目錄
1.DNS系統
域名系統(Domain Name System, DNS)
是因特網使用的命名系統,用來把便於人們記憶的具有特定含義的主機名(如www.BitHachi.com)轉換爲便於機器處理的IP地址
。- 相對於IP地址,人們更喜歡使用具有特定含義的字符串來標識因特網上的計算機。
- DNS系統採用客戶/服務器模型,其協議運行在
UDP
之上,使用53
號端口。 - 從概念上可將DNS分爲3部分:
層次域名空間、域名服務器和解析器
。
- 某臺主機訪問網站www.bithachi.cn網站爲例,DNS的大致流程
2.域名
因特網採用層次樹狀結構的命名方法
。採用這種命名方法,任何一個連接到因特網的主機或路由器,都有一個唯一的層次結構名稱,即域名(Domain Name)
。域(Domain)
是名字空間中一個可被管理的劃分。- 域還可以劃分爲子域,而子域還可以繼續劃分爲子域的子域,這樣就形成
了頂級域、二級域、三級域等。
在域名系統中,每個域分別由不同的組織進行管理。每個組織都可以將它的域再分成一定數目的子域,並將這些子域委託給其他組織去管理。
- 例如,管理CN域的中國將EDU.CN子域授權給中國教育和科研計算機網(CERNET)來管理。
- 比如我的域名bithachi.cn是一個二級域名,我可以任意分配三級域名,比如1001.bithachi.cn和1002.bithachi.cn,這兩個網址是可以訪問的,小項目。
域名空間的樹狀結構:
每個域名都由標號
序列組.成,而各標號之間用點(“.”)
隔開。
關於域名中的標號有以下幾點需要注意:
- 1)標號中的英文
不區分大小寫
。. - 2)標號中除連字符(-) 外不能使用其他的標點符號。
- 3)每個標號不超過63個字符,多標號組成的完整域名最長不超過255個字符。
- 4)級別最低的域名寫在最左邊,級別最高的頂級域名寫在最右邊。
頂級域名(Top Level Domain, TLD)
分爲如下三大類:
- 1)國家頂級域名(nTLD)。國家和某些地區的域名,如“.cn”表示中國,“.us”表示美國,.uk”表示英國。
- 2)通用頂級域名(gTLD)。 常見的有“.com” (公司)、“.net" (網絡服務機構)、“.org”(非營利性組織)和“.gov" (國家或政府部門)等。
- 3)基礎結構域名。
這種頂級域名只有一個,即arpa,用於反向域名解析
,因此又稱反向域名。反向域名解析與通常的正向域名解析相反,提供IP地址到域名的對應
,反向域名格式如:X.X.X.in-addr.arpa。很多網絡服務提供商要求訪問的IP地址具有反向域名解析的結果,否則不提供服務。
國家頂級域名下注冊的二級域名均由該國家自行確定。
3.域名服務器
-
因特網的域名系統被設計成一個聯機分佈式的數據庫系統,並採用客戶/服務器模型
。 -
域名到IP地址的解析是由運行在域名服務器上的程序完成的,
一個服務器所負責管轄的(或有權限的)範圍稱爲區(不以“域”爲單位)
,各單位根據具體情況來劃分自己管轄範圍的區,但在一個區中的所有結點必須是能夠連通的,每個區設置相應的權限域名服務器
,用來保存該區中的所有主機的域名到IP地址的映射。 -
每個域名服務器不但能夠進行一些域名到IP地址的解析,而且還必須具有連向其他域名服務器的信息。當自己不能進行域名到IP地址的轉換時,能夠知道到什麼地方去找其他域名服務器。
-
DNS使用了大量的域名服務器,它們以層次方式組織。沒有一臺域名服務器具有因特網上所有主機的映射,相反,該映射分佈在所有的DNS上。
-
採用分佈式設計的DNS,是一個在因特網上實現分佈式數據庫的精彩範例。主要有4種類型的域名服務器。
(1)根域名服務器
根域名服務器
是最高層次
的域名服務器,所有的根域名服務器
都知道所有
的頂級域名服務器的IP地址
。- 根域名服務器也是最重要的域名服務器,不管是哪個
本地域名服務器
,若要對因特網上任何一個域名進行解析,只要自己無法解析,就首先要求助於根域名服務器
。 - 因特網上有
13個根域名服務器
,儘管我們將這13個根域名服務器中的每個都視爲單個服務器,但每個“服務器”實際上是冗餘服務器的集羣
,以提供安全性和可靠性。 - 需要注意的是,
根域名服務器
用來管轄頂級域(如.com)
, 通常它並不直接把待查詢的域名直接轉換成IP地址,而是告訴本地域名服務器
下一步應當找哪個頂級域名服務器
進行查詢。
(2)頂級域名服務器
- 這些域名服務器負責
管理在該頂級域名服務器註冊的所有二級域名
。 - 收到DNS查詢請求時,就給出相應的回答(可能是最後的結果,也可能是下一步應當查找的域名服務器的IP地址)。
(3)授權域名服務器(權限域名服務器)
每臺主機
都必須在授權域名服務器
處登記。爲了更加可靠地工作,一臺主機最好至少有兩個授權域名服務器。- 實際上,許多
域名服務器
都同時
充當本地域名服務器
和授權域名服務器
。 授權域名服務器
總能將其管轄的主機名
轉換爲該主機的IP地址
。
(4)本地域名服務器
- 本地域名服務器對域名系統非常重要。
- 每個因特網服務提供者(ISP), 或一所大學,甚至一所大學中的各個系,都可以擁有一個本地域名服務器。
當一臺主機發出DNS查詢請求時,這個查詢請求報文就發送給該主機的本地域名服務器
。- 事實上,我們在Windows系統中配置
“本地連接”
時,就需要填寫DNS地址,這個地址就是本地DNS (域名服務器)的地址
。
4.域名解析過程
域名解析是指把域名映射成爲IP地址或把IP地址映射成域名的過程。前者稱爲正向解析,後者稱爲反向解析。
- 當客戶端需要域名解析時,通過本機的DNS客戶端構造一個
DNS請求報文
,以UDP數據報
方式發往本地域名服務器
。 - 域名解析有兩種方式:
遞歸查詢
和遞歸與迭代
相結合的查詢。
(1)遞歸查詢方式
- 遞歸查詢的過程如下圖所示, 由於該方法給根域名服務造成的負載過大,所以在實際中幾乎不使用。
(2) 常用遞歸與迭代相結合的查詢方式
常用遞歸與迭代相結合的查詢方式如下圖所示,該方式分爲兩個部分。
(1)主機
向本地域名服務器
的查詢採用的是遞歸
查詢
- 也就是說,如果
本地主機
所詢問的本地域名服務器
不知道被查詢域名的IP 地址,那麼本地域名服務器
就以DNS客戶
的身份,向根域名服務器
繼續發出查詢請求報文
(即替該主機繼續查詢),而不是讓該主機自己進行下一步的查詢。 - 在這種情況下,
本地域名服務器
只需向根域名服務器查詢
一次,後面的幾次查詢都是遞歸地在其他幾個域名服務器之間進行的[見圖6.6(a)中的步驟③~⑥]。 - 在步驟⑦中,
本地域名服務器
從根域名服務器
得到了所需的IP地址
,最後在步驟⑧中,本地域名服務器
把查詢結果告訴主機
m.xyz.com.
(2)本地域名服務器
向根域名服務器
的查詢採用迭代
查詢
- 當
根域名服務器
收到本地域名服務器
發出的迭代查詢請求報文
時,要麼給出所要查詢的IP地址,要麼告訴本地域名服務器
:“你下一步應當向哪個頂級域名服務器
進行查詢”。 - 然後讓
本地域名服務器
向這個頂級域名服務器
進行後續的查詢,如圖6.6(b)所示。 - 同樣,
頂級域名服務器
收到查詢報文後,要麼給出所要查詢的IP地址,要麼告訴本地域名服務器
下一步應向哪個·權限域名服務器·查詢。 - 最後,知道所要
解析的域名的IP地址
後,把這個結果返回
給發起查詢的主機
。
下面舉例說明域名解析的過程:
假定某客戶機想獲知域名爲y.abc.com主機的IP地址,域名解析的過程(共使用8個UDP報文)如下:
- ①
客戶機
向其本地域名服務器
發出DNS請求報文
。 - ②
本地域名服務器
收到請求後,查詢本地緩存
,若沒有該記錄,則以DNS客戶的身份向根域名服務器
發出解析請求。 - ③
根域名服務器
收到請求後,判斷該域名屬於.com域,將對應的頂級域名服務器
dns.com的IP地址返回給本地域名服務器
。 - ④
本地域名服務器
向頂級域名服務器dns.com
發出解析請求報文
。 - ⑤
頂級域名服務器dns.com
收到請求後,判斷
該域名屬於abc.com域
,因此將對應的授權域名服務器dns.abc.com
的IP地址返回給本地域名服務器
。 - ⑥
本地域名服務器
向授權域名服務器dns.abc.com
發起解析請求報文
。 - ⑦
授權域名服務器dns.abc.com
收到請求後,將查詢結果
返回給本地域名服務器
。 - ⑧
本地域名服務器
將查詢結果保存到本地緩存
,同時返回給客戶機
。
- 爲了提高DNS的查詢效率,並減少因特網上的DNS查詢報文數量,在域名服務器中廣泛地使用了
高速緩存
。- 當一個DNS服務器接收到DNS查詢結果時,它能將該DNS信息緩存在高速
緩存中。這樣,當另一個相同的域名查詢到達該DNS服務器時,該服務器就能夠直接提供所要求的IP地址,而不需要再去向其他DNS服務器詢問。- 因爲
主機名和IP地址之間的映射不是永久的,所以DNS服務器將在一段時間後丟棄高速緩存中的信息
。