DNS 協議入門
DNS 入門
域名系統(英文:Domain Name System,縮寫:DNS)是網際網路的一項服務。它作為將域名和 IP 地址相互對映的一個分散式資料庫,能夠使人更方便地訪問網際網路。DNS 使用 TCP 和 UDP 埠 53。當前,對於每一級域名長度的限制是 63 個字元,域名總長度則不能超過 253 個字元。
關鍵詞:DNS, 域名解析
簡介
什麼是 DNS?
DNS 是一個應用層協議。
域名系統 (DNS) 的作用是將人類可讀的域名 (如,www.example.com) 轉換為機器可讀的 IP 地址 (如,192.0.2.44)。
什麼是域名?
域名是由一串用點分隔符 .
DNS 的分層
域名系統是分層次的。
在域名系統的層次結構中,各種域名都隸屬於域名系統根域的下級。域名的第一級是頂級域,它包括通用頂級域,例如 .com
.net
和 .org
;以及國家和地區頂級域,例如 .us
、.cn
和 .tk
。頂級域名下一層是二級域名,一級一級地往下。這些域名向人們提供註冊服務,人們可以用它建立公開的網際網路資源或執行網站。頂級域名的管理服務由對應的域名註冊管理機構(域名註冊局)負責,註冊服務通常由域名註冊商負責。
DNS 服務型別
- 授權型 DNS - 一種授權型 DNS 服務提供一種更新機制,供開發人員用於管理其公用 DNS 名稱。然後,它響應 DNS 查詢,將域名轉換為 IP 地址,以便計算機可以相互通訊。授權型 DNS 對域有最終授權且負責提供遞迴型 DNS 伺服器對 IP 地址資訊的響應。Amazon Route 53 是一種授權型 DNS 系統。
- 遞迴型 DNS - 客戶端通常不會對授權型 DNS 服務直接進行查詢。而是通常連線到稱為解析程式的其他型別 DNS 服務,或遞迴型 DNS 服務。遞迴型 DNS 服務就像是旅館的門童:儘管沒有任何自身的 DNS 記錄,但是可充當代表您獲得 DNS 資訊的中間程式。如果遞迴型 DNS 擁有已快取或儲存一段時間的 DNS 參考,那麼它會通過提供源或 IP 資訊來響應 DNS 查詢。如果沒有,則它會將查詢傳遞到一個或多個授權型 DNS 伺服器以查詢資訊。
記錄型別
DNS 中,常見的資源記錄型別有:
- NS 記錄(域名服務) ─ 指定解析域名或子域名的 DNS 伺服器。
- MX 記錄(郵件交換) ─ 指定接收資訊的郵件伺服器。
- A 記錄(地址) ─ 指定域名對應的 IPv4 地址記錄。
- AAAA 記錄(地址) ─ 指定域名對應的 IPv6 地址記錄。
- CNAME(規範) ─ 一個域名對映到另一個域名或
CNAME
記錄( example.com 指向 www.example.com )或對映到一個A
記錄。 - PTR 記錄(反向記錄) ─ PTR 記錄用於定義與 IP 地址相關聯的名稱。 PTR 記錄是 A 或 AAAA 記錄的逆。 PTR 記錄是唯一的,因為它們以 .arpa 根開始並被委派給 IP 地址的所有者。
詳細可以參考:維基百科 - 域名伺服器記錄型別列表
域名解析
主機名到 IP 地址的對映有兩種方式:
- 靜態對映 - 在本機上配置域名和 IP 的對映,旨在本機上使用。Windows 和 Linux 的 hosts 檔案中的內容就屬於靜態對映。
- 動態對映 - 建立一套域名解析系統(DNS),只在專門的 DNS 伺服器上配置主機到 IP 地址的對映,網路上需要使用主機名通訊的裝置,首先需要到 DNS 伺服器查詢主機所對應的 IP 地址。
通過域名去查詢域名伺服器,得到 IP 地址的過程叫做域名解析。在解析域名時,一般先靜態域名解析,再動態解析域名。可以將一些常用的域名放入靜態域名解析表中,這樣可以大大提高域名解析效率。
上圖展示了一個動態域名解析的流程,步驟如下:
- 使用者開啟 Web 瀏覽器,在位址列中輸入 www.example.com,然後按 Enter 鍵。
- www.example.com 的請求被路由到 DNS 解析程式,這一般由使用者的 Internet 服務提供商 (ISP) 進行管理,例如有線 Internet 服務提供商、DSL 寬頻提供商或公司網路。
- ISP 的 DNS 解析程式將 www.example.com 的請求轉發到 DNS 根名稱伺服器。
- ISP 的 DNS 解析程式再次轉發 www.example.com 的請求,這次轉發到 .com 域的一個 TLD 名稱伺服器。.com 域的名稱伺服器使用與 example.com 域相關的四個 Amazon Route 53 名稱伺服器的名稱來響應該請求。
- ISP 的 DNS 解析程式選擇一個 Amazon Route 53 名稱伺服器,並將 www.example.com 的請求轉發到該名稱伺服器。
- Amazon Route 53 名稱伺服器在 example.com 託管區域中查詢 www.example.com 記錄,獲得相關值,例如,Web 伺服器的 IP 地址 (192.0.2.44),並將 IP 地址返回至 DNS 解析程式。
- ISP 的 DNS 解析程式最終獲得使用者需要的 IP 地址。解析程式將此值返回至 Web 瀏覽器。DNS 解析程式還會將 example.com 的 IP 地址快取 (儲存) 您指定的時長,以便它能夠在下次有人瀏覽 example.com 時更快地作出響應。有關更多資訊,請參閱存活期 (TTL)。
- Web 瀏覽器將 www.example.com 的請求傳送到從 DNS 解析程式中獲得的 IP 地址。這是您的內容所處位置,例如,在 Amazon EC2 例項中或配置為網站終端節點的 Amazon S3 儲存桶中執行的 Web 伺服器。
- 192.0.2.44 上的 Web 伺服器或其他資源將 www.example.com 的 Web 頁面返回到 Web 瀏覽器,且 Web 瀏覽器會顯示該頁面。
注意:只有配置了域名伺服器,才能執行域名解析。
例如,在 Linux 中執行
vim /etc/resolv.conf
命令,在其中新增下面的內容來配置域名伺服器地址:nameserver 218.2.135.1
Linux 上的域名相關命令
hostname
hostname 命令用於檢視和設定系統的主機名稱。環境變數 HOSTNAME 也儲存了當前的主機名。在使用 hostname 命令設定主機名後,系統並不會永久儲存新的主機名,重新啟動機器之後還是原來的主機名。如果需要永久修改主機名,需要同時修改
/etc/hosts
和/etc/sysconfig/network
的相關內容。參考:http://man.linuxde.net/hostname
示例:
$ hostname
AY1307311912260196fcZ
nslookup
nslookup 命令是常用域名查詢工具,就是查 DNS 資訊用的命令。
參考:http://man.linuxde.net/nslookup
示例:
[[email protected] ~]# nslookup www.jsdig.com
Server: 202.96.104.15
Address: 202.96.104.15#53
Non-authoritative answer:
www.jsdig.com canonical name = host.1.jsdig.com.
Name: host.1.jsdig.com
Address: 100.42.212.8