想知道更深:鳥哥的 Linux 私房菜|第十九章、主機名稱控制者: DNS 伺服器
Domain Name System (網域名稱系統,port 53), 可以將人類看的懂的網域名稱EX:www.amazon.com ,轉成機器看得懂的IP位址 EX:192.0.2.44。
註: map 是映射,也是資料庫的意思
hostname = domainname
DNS(Domain Name System) 是域名和IP位址相互對映的一個階層式的資料庫。DNS 系統的工作原理和電話簿很像,
A: IPv4 可以存2^16個,但IP位址,但如果單一個Database系統要存那麼多真的很沒效率,既然一台沒效率,那就分很多台分散吧!
不過想想前面學過的,IP 轉 Domain 理想中應該是網路七層的第三層router做的事情啊!但是router不僅要負責網路的連接、送封包還要選路徑,那我們就讓resolve(解析)的工作交給DNS吧!
是從最高層級往下問到最低層級負責的DNS。
13台Root name server (當然,全世界散布著至少1000台這些Root name server的複製品)已經寫死在我們作業系統中了,剛開始會先挑其中一台問。
名詞解釋:
An authoritative name server provides actual answer to your DNS queries such as – mail server IP address or web site IP address (A resource record). (就是為你解答完整IP位址的 DNS servers)
DNS分為Client和Server,Client一開始先發出一個Request 封包 問Local DNS server 某個Domain Name的真正IP地址(圖片的例子是: gaia.cs.umass.edu),而Local的DNS server先會查自己的資料庫。如果自己的資料庫沒有,則會往root DNS server尋問。
Root name server
而之後的查詢有分兩種方式,分別是Iterative (迭代)與Recursive (遞迴):
因為每個上一層的 DNS 伺服器所記錄的資訊,其實只有其下一層的主機名稱而已!
1)接續上面local DNS server 資料庫沒有的情況,local DNS server 往 13台root DNS server中隨機一台 問。
2)root DNS 給它線索,要local DNS server去找負責 .edu 的 Top-Level Domain(TLD) server
3)找到 TLD server,TLD server 告訴 local DNS server 去找負責 umass.edu 的次級DNS server
4)local DNS server繼續又問又找的,直到找到最終完全解開該IP 位址之謎的 DNS server(authoritative DNS server),得到了答案,這才回傳給 client。
最累的是 local DNS server (幫QQ)
local DNS server 會用cache記一段時間
註:
前面說DNS 有maping 功能,那麼它是怎麼記住這些紀錄呢?
這裡就要提到 Resource Record(RR)!
DNS records are used to map each website dns configuration so the DNS server knows which IP address is associated with each record.
RR 的內內容大致上有這些:
(name, value, type, ttl)
名詞解釋:
補充: 還有
IN
這樣的 Fieldclass(目前使用的也只有IN
這種,會省略)
下圖是更明確的格式定義
它說 TTL 與 Fieldclass 是可以沒有的
DNS RR 有分很多種,課本只有教4種。網路上都可以查到,如圖:
截自:賞月齋|DNS資源紀錄(Resource Record)介紹
這裡就課本來介紹幾個
domain / [ttl] / class / rr / ipv4
joe IN A 192.168.254.3
或是這種
domain / rr / ipv4 / ttl
@ A 192.0.2.1 14400
NS :它的 value 會是 authoritative DNS 的 domainname
CNAME :不給IP,給別名。也就是canonical-name,它的value 是該domainname的別名,拿下面的圖來解釋
bar.example.com.會對應到它的別名,foo.example.com.,
並在foo.example.com重新啟動檢查,然後返回 192.0.2.23。
使用CNAME的好處:若伺服器IP位址改變,則只需修改該域名的A記錄即可。
MX : 它的value 會是email server "@"後面的那一串
EX:
注:圖中的 "preference" 是指優先偏好,數字愈小優先權愈高,0最優先。
所以可能會有這種情況:
nccu.edu.tw, 1.2.3.4, A 指的是 web server
nccu.edu.tw, 1.2.3.5, MX 指的是 mail server
兩個指的是不同的server
下一篇文章:阿沁的DNS(2)
參考資料:
域名系統
什麼是 DNS?
List of Internet top-level domains
Root name server
鳥哥的 Linux 私房菜|第十九章、主機名稱控制者: DNS 伺服器
cloudflare|DNS record
NIXCP|What is a DNS record? DNS Record Types Explained
DNS記錄類型列表|WIKI