DNS原理

DNS簡介

DNS全稱Domain Name System,即域名解析系統(tǒng)。

域名(domain name)是IP地址的代號,域名解析系統(tǒng)(DNS, domain name system)就負(fù)責(zé)將域名翻譯為對應(yīng)的IP地址。DNS協(xié)議主要基于UDP,是應(yīng)用層協(xié)議。

1、在瀏覽器的地址欄輸入域名,而不是IP地址。減輕了互聯(lián)網(wǎng)用戶的記憶負(fù)擔(dān)。

2、網(wǎng)站可能會變更IP地址。可以更改DNS中的對應(yīng)關(guān)系,從而保持域名不變,而IP地址更新。

域名和IP地址的對應(yīng)關(guān)系存儲在DNS服務(wù)器(DNS server)中

域名的層級結(jié)構(gòu)

主機(jī)名.次級域名.頂級域名.根域名

host.sld.tld.root

DNS解析過程

以下步驟中,DNS緩存中存在域名對應(yīng)IP則DNS解析成功,若DNS服務(wù)器緩存中不存在域名對應(yīng)IP,則自動進(jìn)入下一步

  1. 瀏覽器緩存,當(dāng)用戶通過瀏覽器訪問某域名時,瀏覽器首先會在自己的緩存中查找是否有該域名對應(yīng)的IP地址

  2. 系統(tǒng)緩存,檢查用戶計算機(jī)系統(tǒng)Hosts文件是否有該域名對應(yīng)IP;

  3. 路由器緩存,當(dāng)瀏覽器及系統(tǒng)緩存中均無域名對應(yīng)IP則進(jìn)入路由器緩存中檢查,以上三步均為客服端的DNS緩存;

  4. ISP(互聯(lián)網(wǎng)服務(wù)提供商)DNS緩存,當(dāng)在用戶客服端查找不到域名對應(yīng)IP地址,則將進(jìn)入ISP DNS緩存中進(jìn)行查詢。比如你用的是電信的網(wǎng)絡(luò),則會進(jìn)入電信的DNS緩存服務(wù)器中進(jìn)行查找;

  5. 根域名服務(wù)器,全球僅有13臺根域名服務(wù)器,1個主根域名服務(wù)器,其余12為輔根域名服務(wù)器。根域名收到請求后會查看區(qū)域文件記錄,若無則將其管轄范圍內(nèi)頂級域名(如.com)服務(wù)器IP告訴本地DNS服務(wù)器;

  6. 頂級域名服務(wù)器,頂級域名服務(wù)器收到請求后查看區(qū)域文件記錄,若無則將其管轄范圍內(nèi)主域名(如ecdoer.com)服務(wù)器的IP地址告訴本地DNS服務(wù)器;

  7. 主域名服務(wù)器,主域名服務(wù)器接受到請求后查詢自己的緩存,如果沒有則進(jìn)入下一級域名服務(wù)器(www.ecdoer.com)進(jìn)行查找,并重復(fù)該步驟直至找到正確紀(jì)錄;

  8. 保存結(jié)果至緩存,本地域名服務(wù)器把返回的結(jié)果保存到緩存,以備下一次使用,同時將該結(jié)果反饋給客戶端,客戶端通過這個IP地址與web服務(wù)器建立鏈接

hosts 映射

可以配置本地的域名解析

cat /etc/hosts
##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting.  Do not change this entry.
##
127.0.0.1   localhost
255.255.255.255 broadcasthost
::1             localhost 

DNS查詢

查詢是否正常解析

nslookup kailian.github.io
Server:     202.96.134.33
Address:    202.96.134.33#53

Non-authoritative answer:
kailian.github.io   canonical name = github.map.fastly.net.
github.map.fastly.net   canonical name = prod.github.map.fastlylb.net.
Name:   prod.github.map.fastlylb.net
Address: 151.101.36.133

查詢注冊情況

whois github.com

Whois Server Version 2.0

Domain names in the .com and .net domains can now be registered
with many different competing registrars. Go to http://www.internic.net
for detailed information.

GITHUB.COM.KHALEDELANSARI.COM
GITHUB.COM

...

dig顯示整個查詢過程

dig kailian.github.io

# 查詢參數(shù)和統(tǒng)計
<<>> DiG 9.8.3-P1 <<>> kailian.github.io
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 60058
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 0

# 查詢內(nèi)容
;; QUESTION SECTION:
;kailian.github.io.     IN  A

# DNS答復(fù)
;; ANSWER SECTION:
kailian.github.io.  2566    IN  CNAME   github.map.fastly.net.
github.map.fastly.net.  600 IN  CNAME   prod.github.map.fastlylb.net.
prod.github.map.fastlylb.net. 600 IN    A   151.101.16.133

#DNS傳輸信息
;; Query time: 39 msec
;; SERVER: 202.96.134.33#53(202.96.134.33)
;; WHEN: Sat Jul 16 21:46:39 2016
;; MSG SIZE  rcvd: 125 

分級查詢

  • 從"根域名服務(wù)器"查到"頂級域名服務(wù)器"的NS記錄和A記錄(IP地址)

  • 從"頂級域名服務(wù)器"查到"次級域名服務(wù)器"的NS記錄和A記錄(IP地址)

  • 從"次級域名服務(wù)器"查出"主機(jī)名"的IP地址

dig +trace kailian.github.io

; <<>> DiG 9.8.3-P1 <<>> +trace kailian.github.io
;; global options: +cmd
.           326984  IN  NS  m.root-servers.net.
.           326984  IN  NS  a.root-servers.net.
.           326984  IN  NS  b.root-servers.net.
.           326984  IN  NS  c.root-servers.net.
.           326984  IN  NS  d.root-servers.net.
.           326984  IN  NS  e.root-servers.net.
.           326984  IN  NS  f.root-servers.net.
.           326984  IN  NS  g.root-servers.net.
.           326984  IN  NS  h.root-servers.net.
.           326984  IN  NS  i.root-servers.net.
.           326984  IN  NS  j.root-servers.net.
.           326984  IN  NS  k.root-servers.net.
.           326984  IN  NS  l.root-servers.net.
;; Received 432 bytes from 202.96.134.33#53(202.96.134.33) in 201 ms

io.         172800  IN  NS  ns-a1.io.
io.         172800  IN  NS  ns-a2.io.
io.         172800  IN  NS  ns-a3.io.
io.         172800  IN  NS  ns-a4.io.
io.         172800  IN  NS  ns-d1.io.
io.         172800  IN  NS  ns-l1.io.
io.         172800  IN  NS  ns-y1.io.
;; Received 427 bytes from 193.0.14.129#53(193.0.14.129) in 9275 ms

github.io.      86400   IN  NS  ns2.p16.dynect.net.
github.io.      86400   IN  NS  ns3.p16.dynect.net.
github.io.      86400   IN  NS  ns4.p16.dynect.net.
github.io.      86400   IN  NS  ns1.p16.dynect.net.
;; Received 121 bytes from 64.251.31.179#53(64.251.31.179) in 512 ms

kailian.github.io.  3600    IN  CNAME   github.map.fastly.net.
;; Received 70 bytes from 204.13.251.16#53(204.13.251.16) in 384 ms

列出根域名.的所有NS記錄,即所有根域名服務(wù)器

根據(jù)內(nèi)置的根域名服務(wù)器IP地址,DNS服務(wù)器向所有這些IP地址發(fā)出查詢請求,詢問域名的頂級域名服務(wù)器io.的NS記錄。

DNS的記錄

記錄格式

Domain_name Time_to_live Class Type Value

Time_to_live 生存時間,記錄最多可以緩存多久

value 如果是A記錄,則value是一個IPv4地址;CNAME記錄,則是別名

常見的記錄類型type如下:

記錄類型 含義
A 主機(jī)的IPv4地址
AAAA 主機(jī)的IPv6地址
NS 該域名所在域的權(quán)威域名服務(wù)器
MX 接受特定域名電子郵件的服務(wù)器域名
CNAME 當(dāng)前域名的一個別名

DNS相關(guān)優(yōu)化

1) 增加DNS服務(wù)器數(shù)量

減小服務(wù)器壓力,當(dāng)單位服務(wù)器需要處理的DNS請求數(shù)量較少時速度會更快;

2) 全國多地分布DNS服務(wù)器

用戶網(wǎng)絡(luò)訪問速度跟用戶計算機(jī)到服務(wù)器的距離有關(guān),若可以讓用戶就近訪問所在省份的服務(wù)器便可以加速DNS解析速度;

3) 雙線線路域名解析

當(dāng)用戶網(wǎng)絡(luò)線路跟服務(wù)器網(wǎng)絡(luò)線路一致時速度較快,而不一致時則較慢,如:用戶使用電信的線路但服務(wù)器是聯(lián)通的線路,訪問速度下降

同時解析聯(lián)通和電信,默認(rèn)的或者通用的走電信線路,聯(lián)通的就走聯(lián)通線路

4) 配置比較快的公共DNS,優(yōu)先配置國內(nèi)的

5) DNS預(yù)解析

DNS預(yù)解析,對頁面出現(xiàn)的的域名提前解析

<link rel="dns-prefetch" >

6)減少域名數(shù)量

減少不同域名的數(shù)量減少DNS的查詢,包括頁面中的鏈接,圖片,腳本文件,樣式表,F(xiàn)lash對象等,將組件分布在兩到四個域名之間

公共DNS

公共DNS服務(wù)器,即系統(tǒng)默認(rèn)的DNS解析服務(wù)器。配置國外的DNS,可能導(dǎo)致域名有時候解析失敗。

查看配置

cat /etc/resolv.conf

search DHCP HOST
nameserver 202.96.134.33
nameserver 202.96.128.86

常用的公共DNS

114 DNS

114.114.114.114
114.114.115.115

阿里 AliDNS

223.5.5.5
223.6.6.6

baidu DNS

180.76.76.76

Google DNS

8.8.8.8
8.8.4.4

廣東電信 DNS

202.96.128.86
202.96.128.166
202.96.134.33
202.96.128.68

參考

DNS解析過程原理

DNS 原理入門

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 網(wǎng)絡(luò)通訊大部分是基于TCP/IP的,而TCP/IP是基于IP地址的,所以計算機(jī)在網(wǎng)絡(luò)上進(jìn)行通訊時只能識別如“202...
    愛睡覺的魚閱讀 627評論 1 4
  • dns查詢過程解析 DNS查詢模式有遞歸查詢和迭代查詢,他們的區(qū)別如下: (1)遞歸查詢 遞歸查詢是一種DNS 服...
    think_lonely閱讀 841評論 0 1
  • 作者:阮一峰原文地址:http://www.ruanyifeng.com/blog/2016/06/dns.htm...
    IT程序獅閱讀 839評論 0 6
  • 古有一人,名懷德,面善而正,好口福,為官數(shù)年,得提攜入京,親屬具往。 是夜,天降大雨,幸得孤宅。宅內(nèi)老翁...
    榆錢串串閱讀 323評論 0 1
  • 這2天接觸了微信服務(wù)號的開發(fā), 分享一下我的小技巧 存在問題 由于需要和微信服務(wù)器進(jìn)行主動和被動通信. 在做微信開...
    PeterQ1998閱讀 891評論 0 1