對於DNS簡單總結中的圖:
首先,比如說要訪問www.linkingcloud.com,第一步是從DNS服務器解析該域名的IP地址,然後再進行訪問。解析大致過程如上圖所示。從客戶端開始分析:
1. 解析器
解析器位於客戶端中,一般有默認設置。一般允許用戶設置:本地域名domain、搜索列表search、解析器查詢的本地名字服務器地址nameserver,選擇地址優先級sortlist。具體配置不詳細介紹,一般來說默認即可?
2. 本地名字服務器
遞歸查詢將大部分的解析負擔置於一個名字服務器上。遞歸或遞歸解析(recursive resolution)指的是名字服務器在收到遞歸查詢時所使用的解析過程。正如編程中的遞歸算法,名字服務器只重複一個簡單的過程(向遠程名字服務器提出查詢,再遵照指示)直到收到結果。
處理遞歸查詢的名字服務器可能需要發送好幾個查詢才能找到結果。緩存這些名字服務器是哪些區的權威,也知道這些服務器的地址。
因此本地服務器先查詢是否對查詢域名有直接的權威,比如說,本地服務器就是區linkingcloud.com.的名字服務器,則直接返回結果。否則查詢本地名字服務器是否有緩存,存儲有www.linkingcloud.com則直接返回,或者存儲有查詢過linkingcloud.com域的緩存,則直接查詢linkingcloud.com.的名字服務器,或者存儲有com.的緩存也同理。
若沒有其他信息,則依次查詢根目錄。
3. 各級名字服務器
對於同一個區的名字服務器來說首先分爲主名字服務器和輔名字服務器,主名字服務器是從文件信息中獲取信息,可以進行修改,輔名字服務器從主名字服務器獲取信息。
(如對於根目錄來說,全球有13個根目錄名字服務器)
以com域爲例,首先存在若干名字服務器,假設名字爲ns1.com、ns2.com…每一個名字服務器都是該區的權威。
每個服務器上首先包含一個配置文件:named.conf。一般包含option、zone。內容大致如下:
options{
directory"/home/liuxiaokai/cloudin/bind/bind";
forwarders {
8.8.8.8;
};
listen-on port 53 { any ; } ;
};
zone"." in{
type hint;
file "db.root";
};
zone"0.0.127.in-addr.arpa" in{
type master;
file "db.0.0.127";
};
…
其中每個zone中對應的是一個區數據文件夾的路徑。(可以是相對路徑也可以是絕對路徑)
區數據文件分爲兩種,一種是從域名到IP的解析,一種是從IP到域名的解析。區文件配置如下:
$TTL 604800 ;TTL紀錄
com. IN SOA ns1.com. admin.com. ( ;SOA紀錄
2006081401
28800
3600
604800
38400
)
com. IN NS ns1.com.
com. IN NS ns2.com. ;NS紀錄
localhost.com. IN A 127.0.0.1 ;從域名到IP的解析
first.com. IN A 192.168.199.1
ns1.com IN A 192……
ns2.com IN A 192……
baidu.com. IN A 192.168.199.5
second.com. IN A 192.168.199.12
linkingcloud.com. IN A 168.199.1.5
ns1.linkingcloud.com. IN A ……..
third.com. IN A 192.168.199.4
IN A168.199.1.2
one.com. IN CNAME first.com.
two.com. IN CNAME second.com. ;別名
具體的縮寫在這兒不進行詳細描述。
對於每一項紀錄不進行具體描述。
重點總結NS紀錄、MX紀錄。
如果訪問linkingcloud.com,則直接返回其IP地址。但是若訪問www.linkingcloud.com,則沒有直接紀錄,需要訪問域linkingcloud.com. 的名字服務器,即ns1. linkingcloud.com.然後再進行查詢。
NS紀錄紀錄每個區的權威名字服務器的信息。
服務器紀錄的是區信息而不是域信息,即對於已授權出去的域,只保留一個指向該域名的指針如:ns1.linkingcloud.com.。對於區來說有多個名字服務器,一般訪問最近的那個名字服務器。
MX紀錄紀錄郵件的訪問信息。
4. 對於郵件的查詢
對於郵件IP的查詢,將@變爲.,其後是其域名信息。也是通過DNS這套系統,只不過郵件查詢的是MX信息,域名查詢的是A信息。其他類似。
如區linkingcloud.com中,會用幾臺專用的服務器來解析郵件,假如mail. linkingcloud.com. 。則本地名字服務通過查詢MX信息查詢到linkingcloud.com域的名字服務器,然後該服務器將查詢導向mail. linkingcloud.com.即可,過程類似。
MX紀錄中有優先級。使用MX算法。
郵件收發器在決定向哪兒發送消息之前將放棄某些MX紀錄。先將MX紀錄按照優先級進行排序,然後查找自己所在主機的規範域名,若本地主機本身就是一個郵件交換器,則刪除代表本身的那個MX紀錄,以及優先級值更大的那些記錄,這樣保證不會向他自己或者遠離目的地的方向發送。