域名系统DNS简介
域名系統(tǒng)(Domain Name System, DNS)是互聯(lián)網(wǎng)的核心應(yīng)用層協(xié)議之一, 它用于查詢域名對應(yīng)的IP地址.在使用域名訪問任何網(wǎng)絡(luò)資源時都需要先進行域名解析.
www.cnblogs.com是一個典型的域名, 在進行Http訪問之前它會先被DNS轉(zhuǎn)換為一個ip地址.
域名與目錄樹類似形成一個樹狀結(jié)構(gòu), 最右側(cè)為頂級域, 向左域名級別降低.
所有域名都屬于根域. 根域由13組根域名服務(wù)器管理, 從A.ROOT-SERVERS.NET到M.ROOT-SERVERS.NET.
根域的下一級為頂級域(top level domain, TLD), 如通用頂級域名.com, .net, .gov和地區(qū)頂級域名.cn, .jp等. 下一級為次級域名, 如cnblogs, baidu, google.
最低級的為主機名, 如www, mail等.
根域下頂級域名的分配和使用由非營利性的互聯(lián)網(wǎng)名稱與數(shù)字地址分配機構(gòu)(Internet Corporation for Assigned Names and Numbers, ICNN)管理.
頂級域下次級域名由各地區(qū)的域名管理機構(gòu)管理, 主機名則由域名擁有者自己管理.
域名解析
域名系統(tǒng)是一個典型的分布式數(shù)據(jù)庫, 每個名稱服務(wù)器(nameserver)只存儲著部分?jǐn)?shù)據(jù). 當(dāng)其無法解析某個域名時, 就向其它服務(wù)器請求解析直到成功解析或超時.
下面簡單介紹DNS解析過程:
查詢本地hosts文件, unix系操作系統(tǒng)一般在/etc/hosts
若hosts文件不存在相關(guān)記錄, 則檢查本地DNS緩存.
若本地DNS緩存不存在相關(guān)記錄則查詢首選名稱服務(wù)器.
若目標(biāo)域名處在名稱服務(wù)器的管理之下, 則名稱服務(wù)器可以給出可靠的解析結(jié)果.
若目標(biāo)域名不屬于名稱服務(wù)器管理但在它的緩存中, 名稱服務(wù)器可以根據(jù)它的緩存給出一個不可靠的解析結(jié)果.
若首選名稱服務(wù)器無法解析域名, 根據(jù)名稱服務(wù)器的配置有兩種策略:
若本地DNS配置了轉(zhuǎn)發(fā), 則請求轉(zhuǎn)發(fā)給上一級DNS解析. 上級DNS將解析結(jié)果返回給本地DNS, 由本地DNS返回給客戶端.
- 若本地DNS未配置轉(zhuǎn)發(fā), 則自頂向下查詢:
DNS記錄
DNS是一個分布式的數(shù)據(jù)庫, 名稱服務(wù)器使用DNS記錄(dns record)保存域名和IP之間的關(guān)系.
名稱服務(wù)器使用區(qū)域文件(zone file)保存自己的記錄, 區(qū)域文件中除了DNS記錄外還定義了一些環(huán)境變量.
$ORIGIN表示本NS管理的域, 如$ORIGIN example.com.表示本NS管理example.com域.
$TTL表示解析記錄在緩存中的默認(rèn)過期時間.
這是一個區(qū)域文件的示例, 可以讓我們更好地理解區(qū)域文件:
$ORIGIN example.com. $TTL 1h example.com. IN SOA ns.example.com. username.example.com. ( 2007120710 1d 2h 4w 1h ) example.com. IN NS ns example.com. IN NS ns.somewhere.example. example.com. IN MX 10 mail.example.com. @ IN MX 20 mail2.example.com. @ IN MX 50 mail3 example.com. IN A 192.0.2.1 IN AAAA 2001:db8:10::1 ns IN A 192.0.2.2 IN AAAA 2001:db8:10::2 www IN CNAME example.com. wwwtest IN CNAME www mail IN A 192.0.2.3 mail2 IN A 192.0.2.4 mail3 IN A 192.0.2.5DNS記錄有以下幾種類型:
A記錄和AAAA記錄
A記錄是IPv4主機記錄, AAAA為IPv6主機記錄, 如下面這一條:
example.com. IN A 192.0.2.1IN AAAA 2001:db8:10::1它表示主機example.com對應(yīng)的IPv4地址為192.0.2.1, IPv6地址為2001:db8:10::1.
第二個字段IN表示Internet, 這一字段會出現(xiàn)在很多記錄中.
最后加.表示采用絕對路徑, 區(qū)域文件也可以用相對路徑來配置.
下面兩條記錄的作用是一樣的:
www.example.com. IN A 192.0.2.2相對路徑表示:
www IN A 192.0.2.2@為$ORIGIN記錄了IP地址, 下面這條記錄配置了example.com主機的IP地址:
@ IN A 192.0.2.1SOA記錄
授權(quán)開始(Start of Authority, SOA)記錄是區(qū)域文件的第一條記錄, 用于記錄為本服務(wù)器授權(quán)的上級名稱服務(wù)器.
example.com. IN SOA ns.example.com. username.example.com. ( 2007120710 ; serial number1d ; refresh interval 2h ; retry interval4w ; expiry period1h ; negative TTL )上述記錄表示域example.com的主名稱服務(wù)器為ns.example.com.
username.example.com.表示管理員郵箱為username@example.com, 注意@被替換為..
后面的字段表示:
- serial number表示本服務(wù)器記錄的版本號, 每次修改版本號就會加1. 通過比較本服務(wù)器版本號和上級服務(wù)器版本號已進行同步.
- refresh interval表示向SOA服務(wù)器請求更新記錄的間隔
- retry interval表示向SOA服務(wù)器請求更新記錄失敗時的重試周期
- expiry period表示SOA服務(wù)器若在此時間內(nèi)不響應(yīng), 則不再將其作為SOA服務(wù)器
- negative ttl表示當(dāng)查詢結(jié)果為無此記錄時, 緩存該結(jié)果的時間
NS記錄
ns記錄用于表示某個域的名稱服務(wù)器:
example.com. IN NS ns example.com. IN NS ns2.example.com.上述兩條記錄表示example.com域的名稱服務(wù)器為ns.example.com, 備用名稱服務(wù)器為ns2.example.com.
每個區(qū)域文件中至少定義兩個名稱服務(wù)器,以便在一個服務(wù)器出現(xiàn)問題時還能正確運行. 如果只有一個名稱服務(wù)器,大多數(shù) DNS 服務(wù)器軟件都會認(rèn)為區(qū)域文件無效.
在自頂向下查詢過程中, 父域的名稱服務(wù)器根據(jù)自己的ns記錄確定子域的名稱服務(wù)器.
MX記錄
MX記錄用于表示某個域的郵件服務(wù)器:
example.com. IN MX 10 mail.example.com.上述記錄表示mail.example.com是example.com域的郵件服務(wù)器.
也可以使用@表示根域, 使用相對路徑表示郵件服務(wù)器.
@ IN MX 20 mail2.example.com. @ IN MX 50 mail3記錄中第4個字段的數(shù)字表示優(yōu)先級, 數(shù)字越小優(yōu)先級越高.
CNAME記錄
CNAME記錄用于記錄域名別名:
www IN CNAME example.com. wwwtest IN CNAME www上述記錄表示www.example.com是example.com的一個別名, wwwtest.example.com又是www.example.com的一個別名.
DNS工具
配置本地nameserver
在我們可以使用域名訪問網(wǎng)絡(luò)前, 需要先配置本地的名稱服務(wù)器. 本地名稱服務(wù)器可以由DHCP協(xié)議動態(tài)分配, 也可以手動配置.
Unix系列操作系統(tǒng), 在/etc/resolv.conf配置文件中設(shè)置nameserver:
nameserver 172.18.49.59為自己的網(wǎng)站配置域名
首先, 自己網(wǎng)站的服務(wù)器需要擁有一個公網(wǎng)IP, 使得我們在互聯(lián)網(wǎng)上可以直接訪問該主機.
隨后可以在域名提供商處購買自己的域名, 比如finley.cn. 然后在域名提供商處添加A記錄將域名解析到自己主機的公網(wǎng)ip.
查詢所有者
whois指令可以查詢域名所有者的信息:
& whois cnblogs.com Domain Name: cnblogs.com Registry Domain ID: 866509_DOMAIN_COM-VRSN Registrar WHOIS Server: whois.35.com Registrar URL: http://www.35.com Updated Date: 2016-10-23T22:59:39Z Creation Date: 2003-11-11T04:00:00Z Registrar Registration Expiration Date: 2021-11-11T04:00:00Z Registrar: 35 Technology Co., Ltd. ...DNS查詢
host命令可以查詢某個域名的ip:
$ host cnblogs.com cnblogs.com has address 42.121.252.58cnblogs.com mail is handled by 30 aspmx2.googlemail.com. cnblogs.com mail is handled by 30 aspmx3.googlemail.com. cnblogs.com mail is handled by 30 aspmx4.googlemail.com. cnblogs.com mail is handled by 30 aspmx5.googlemail.com. cnblogs.com mail is handled by 10 aspmx.l.google.com. cnblogs.com mail is handled by 20 alt1.aspmx.l.google.com. cnblogs.com mail is handled by 20 alt2.aspmx.l.google.com.nslookup可以交互式查詢:
$ nslookup > cnblogs.com Server: 172.18.49.59 Address: 172.18.49.59#53Non-authoritative answer: Name: cnblogs.com Address: 42.121.252.58dig命令可以看到DNS解析過程:
dig cnblogs.cn; <<>> DiG 9.8.3-P1 <<>> cnblogs.cn ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 54154 ;; flags: qr rd ra; QUERY: 1, ANSWER: 5, AUTHORITY: 4, ADDITIONAL: 0;; QUESTION SECTION: ;cnblogs.cn. IN A;; ANSWER SECTION: cnblogs.cn. 600 IN CNAME fw1.22.cn. fw1.22.cn. 973 IN CNAME 22url.lncdn.com. 22url.lncdn.com. 27 IN A 103.13.73.87 22url.lncdn.com. 27 IN A 162.251.94.12 22url.lncdn.com. 27 IN A 162.251.94.101;; AUTHORITY SECTION: lncdn.com. 112713 IN NS ns2.360dns.net. lncdn.com. 112713 IN NS ns1.360dns.org. lncdn.com. 112713 IN NS ns2.360dns.org. lncdn.com. 112713 IN NS ns1.360dns.net.;; Query time: 69 msec ;; SERVER: 172.18.49.59#53(172.18.49.59) ;; WHEN: Tue May 9 17:03:53 2017 ;; MSG SIZE rcvd: 218總結(jié)
- 上一篇: MySQL搭建系列之多实例
- 下一篇: Android NDK调试出错Unkno