DNS 是域名系統 (Domain Name System) 的縮寫,它是由解析器和域名服務器組成的數據庫
要知道DNS是什麼,須要從域這個概念開始瞭解緩存
這裏的域指並不是平時咱們所說的地理域之類,而指的是"名稱域"——"名稱空間"服務器
名稱域/名稱空間能夠"倒置的樹"來解釋dom
"倒置的樹"由根域開始,接着根的下一層是各個頂級域,每一個頂級域之下又有多個二級域,每一個二級域下又有子域,以此類推下去...最後到主機名ide
根域(.)
頂級域(Top Level Domain, TLD, tld)
組織域:標識域的組織結構;
com, net, org, gov, edu, mil, ...
地理域:標識域所在的地理範圍;
tw, hk, cn, jp, iq, ...
反向域:in-addr.arpa
二級域及下級子域:由企業,組織,團體或我的維護的域;
主機名:標識特定域中的特定主機名稱;spa
瞭解了域的概念後,就要說域的表示方法:
FQDN:Full Qualified Domain Name,徹底合格域名;主機名的完整名稱;
從枝葉到根域的順序書寫——從主機名.最低級的子域.次級的子域.(以此類推到)子域.二級域.頂級域.(根)
其中最後的"."是根域的,其他的"."表示域與域之間的鏈接符號指針
每一個名稱域都對應着某個地址,而這時候就須要經過解析到某個的地址;
解析的方式有兩種:正向解析:FQDN --> IP
反向解析:IP --> FQDN繼承
注意:正向解析和反向解析所使用的名稱屬於不一樣空間,不是同一棵樹,也不是同一個數據庫;ip
這裏的數據庫就存放在服務器中,而這裏的服務器就跟DNS有關係了。資源
DNS(Domain Name Server,域名服務器)是進行域名(domain name)和與之相對應的IP地址 (IP address)轉換的服務器。
而這服務器中還存放了域名與IP地址之間轉換的數據內容,是用於完成名稱解析工做的,咱們稱爲"資源記錄";即:Resource Record,簡稱爲"RR";
資源記錄咱們又能夠分爲下列幾種:
A,AAAA,PTR,SOA,NS,CNAME,MX
下面介紹各個資源類型:
SOA:Start Of Authority,起始受權記錄;
在任何一個區域數據庫中必須有且只能有一條SOA記錄,並且該記錄必須放在數據庫中的第一條;其中包括:
域名;
數據緩存的時間;
NS服務器的主機名;
管理員的郵箱地址;
序列號,刷新時間間隔,重試時間間隔,過時時間及否認答案的緩存時間;
A:Address,主機記錄;
標識從徹底合格域名到IPv4地址的映射關係;
AAAA:Address,主機記錄;
標識從徹底合格域名到IPv6地址的映射關係;
PTR:PoinTeR,反向指針記錄;
標識從IP地址到徹底合格域名的映射關係;
NS:Name Server,名稱服務器記錄;
標識當前域中被受權的名稱服務器;
CNAME:Conanical Name,別名記錄;
標識從徹底合格域名到徹底合格域名的映射關係;
MX:Mail eXchange,郵件交換記錄;
標識域中的郵件服務器的主機名稱,標識從域名到徹底合格域名的映射關係;
MX資源記錄包含了一個優先級,0-65535,數字越小優先級越高;
介紹完不一樣的資源記錄類型後,咱們還須要熟悉這些資源記錄在數據庫(服務器)中是如何存在的,也就是它們是如何書寫的
格式:DN|FQDN [TTL] IN RR_TYPE VALUE
TTL:TTL是以秒爲默認時間單位的時間標識符號,若是省略,則從全局定義的宏中繼承,一般是$TTL;
RR_TYPE:資源記錄類型;
VALUE:變量(ip地址...)
接下來介紹的是不一樣的資源記錄根據格式的書寫及注意事項:
SOA: DN|FQDN:當前域的域名,如:qhdlink.com. 或者使用"@"代替域名;@符號會使用主配置文件中定義的域名來代替; VALUE:由如下幾個部分組成: 1.當前域中的主名稱服務器的FQDN;ns.qhdlink.com. 2.當前域的數據庫管理員的郵箱地址,須要使用"."來代替"@";root.qhdlink.com. 3.主名稱服務器進行區域傳送的相關時間參數的定義: (Serial Refresh Retry Expeir TTL) (Serial; Refresh; Retry; Expeir; TTL;) 示例: qhdlink.com. 86400 IN SOA ns1.qhdlink.com. master.qhdlink.com. ( 2018040601; 1H; 10M; 1W; 5M;) @ 86400 IN SOA ns1.qhdlink.com. master.qhdlink.com. (2018040601 1H 10M 1W 5M) NS記錄: name:當前域的域名;能夠寫徹底合格域名FQDN;能夠寫@佔位;還能夠省略不寫,若是省略不寫,則意味着該資源記錄的名稱與其上一條資源記錄的名稱相同; value:當前區域內被受權的名稱服務器的FQDN; 注意: 1.一個域中有多少臺名稱服務器就須要寫多少個NS資源記錄; 2.每一個NS資源記錄都必需要有一個A記錄與之對應; 示例: qhdlink.com. IN NS ns1.qhdlink.com. @ IN NS ns1 IN NS ns2 MX記錄: name:當前域的域名;能夠寫徹底合格域名FQDN;能夠寫@佔位;還能夠省略不寫,若是省略不寫,則意味着該資源記錄的名稱與其上一條資源記錄的名稱相同; RR_TYPE:MX priority value:當前域中有效的郵件服務器的FQDN; 注意: 1.一個域中,能夠有多條MX資源記錄,經過優先級的大小決定被使用的次序; 2.每一個MX資源記錄都必須對應一條A記錄; 示例: qhdlink.com. IN MX 10 mail.qhdlink.com. @ IN MX 10 mail A記錄: name:域中指定主機的FQDN; value:該主機上真實有效的IPv4地址; 示例: www.qhdlink.com. 43200 IN A 192.168.1.100 www 43200 IN A 192.168.1.100 泛域名: *.qhdlink.com. 43200 IN A 192.168.1.100 * 43200 IN A 192.168.1.100 直接域名解析: qhdlink.com. 43200 IN A 192.168.1.100 一般,泛域名或直接域名都是爲了防止用戶寫錯名稱而致使沒法給出正確的解析結果; CNAME記錄: name:域中指定主機的別名; value:真正的主機的FQDN; 示例: ftp.qhdlink.com [86400] IN CNAME www.qhdlink.com. ftp [86400] IN CNAME www PTR記錄: name:將IP地址的四個八位組反過來,將IP地址中的主機部分加上反向域的域名後綴; 若是IP地址是:172.16.1.100/16,其對應的名稱的寫法: 100.1 IN PTR www.qhdlink.com. 100.1.16.172.in-addr.arpa. IN PTR www.qhdlink.com. value:域中與指定的IP地址對應的FQDN; 注意:value部分必須寫FQDN,絕對不能省略域名後綴,最後必須以"."結尾;不然bind程序會將反向域的域名補在名稱以後