關於域名系統DNS(Domain Name System)
從域名中解析出IP地址。
DNS主要由3部分組成:
① 名稱解析器(resolver)
② 域名空間(domain name space)
③ 名稱服務器(name server)
DNS服務器獲取域名空間的部分信息的方法:
① 由管理員編輯一個原始區域文件;
② 從其他名稱服務器那里復制區域文件;
③ 通過向其他DNS服務器查詢來獲取具有一定時效的緩存信息。
名稱服務器的3種主要類型:
① 主(primary)名稱服務器:擁有一個區域文件的原始版本的服務器。
② 次(secondary)名稱服務器:從其他主名稱服務器那里復制一個區域文件。是一個只讀版本。次名稱服務器通過區域傳輸(zone transfer)跟隨主名稱服務器上的區域文件進行變化。
③ 惟高速緩存(caching-only)名稱服務器:沒有區域文件。它的職責是幫助名稱解析器完成名稱解析,並緩存解析結果,便於以后使用。當惟高速緩存名稱服務器第一次啟動時,他沒有存儲任何DNS信息。它是在啟動之后,通過緩存查詢的結果來逐漸建立DNS信息。緩存表項的生存時間TTL由提供授權解析結果的名稱服務器決定。該服務器將查詢的生存時間和名稱解析一起返回。
域名解析
TCP/IP 的域名系統是一個有效的、可靠的、通用的、分布式的 名稱——地址 映射系統。
域名解析有兩種方式:正向解析和反向解析。
① 正向解析:根據域名查詢對其對應的IP地址或其他相關信息。
② 反向解析:根據主機的IP地址查詢其對應的域名。
DNS在名稱空間中設置了一個稱謂in-addr.arpa的特殊域,專門用於反向解析。
為了能夠使反向解析用與正向解析相同的方法進行解析,反向解析將IP地址的字節倒過來寫,構成反向解析的“名稱空間”。如:地址是202.119.80.126的主機的域名寫成126.80.119.202.in-addr.arpa。
DNS服務器和客戶端屬於TCP/IP模型的應用層,DNS既可以使用TCP,也可以使用UDP,使用的是TCP/UDP的53號端口。
DNS接收兩種類型的解析:遞歸解析和反復解析
① 遞歸解析(遞歸查詢):

要求名稱服務器系統一次性完成名稱——地址變換。
遞歸查詢強制指定的DNS服務器對請求做出響應(響應要么是一個包含相應解析結果的成功的響應,要么是一個失敗的響應)。
本地的DNS服務器可能需要通過再查詢一些其他的DNS服務器才能完成解析,當DNS服務器從其他服務器得到響應后,再向客戶端發送回答。
② 反復解析(迭代查詢):

要求客戶端本身反復尋求名稱服務器的服務來獲得最終的解析結果。
過程:名稱服務器收到請求后,若能夠給出解析結果,則返回最終結果到客戶端;如果本名稱服務器無法給出解析結果,則返回給請求者它認為能夠給出解析結果的服務器的IP地址。
請求者收到該IP地址后,將向該地址發送解析請求,直到獲得最終的解析結果或失敗的響應。
名稱服務器在沒有任何可以回答的信息時,將返回一個失敗的響應。
怎樣提高解析效率
可以采用兩步名稱解析機制和高速緩存技術解決這個問題。
① 兩步名稱解析機制
Ⅰ. 先通過本地名稱服務器進行解析;
Ⅱ. 如果不行,再采用自頂向下的方法搜索。
優點:既提高了效率,又保證了域名管理的層次結構。
② 高速緩存
在名稱服務器中使用高速緩存技術,存放最近解析過的 名稱——地址 映射和描述解析該名稱服務器位置的信息。
優點:可以避免每次解析非本地名稱時都進行自頂向下的搜索,從而減少非本地名稱解析帶來的開銷。
缺點:若授權名稱服務器中的 名稱——地址 映射已經發生了變化。而高速緩存未能作出相應的刷新,會有一個有效性的問題,緩存失效,從而導致解析錯誤。
有效性問題解決辦法:
服務器向解析器報告緩存信息時,必須注明該信息是非授權的,同時還要指出能夠給出授權解析結果的名稱服務器的地址。
此外,高速緩存中的每一個映射表項都有一個生存時間TTL,一旦某個表的TTL時間到期,便將它從緩存中刪除。
