天天看點

DNS概念、相關概念及解析流程

DNS概念

DNS,即Domain Name System,中文翻譯為網域名稱系統。是一項聯網的服務,本質上可以了解為一個分布式的資料庫,提供将域名轉換為IP的服務。

  • 使用TCP和UDP端口53;
  • 每一級域名長度的限制是63個字元;
  • 域名總長度則不能超過253個字元;

相關概念

根伺服器

是DNS中最進階别的域名伺服器,負責傳回頂級域的伺服器位址。

目前邏輯上有13台根伺服器,13台是因為早期的UDP封包限制了傳回封包中的資源記錄數量。簡單講就是在DNS查詢前先要初始化根伺服器清單,需要先查下13台根伺服器的位址,這個過程是通過UDP封包傳輸來完成的。而UDP封包最多傳輸13組【根伺服器-IP】的資源内容,是以這個數目就定在13。

然而,之是以說邏輯上有13台,是因為目前通過任播技術,已經将根伺服器的實體伺服器數量擴大至很大的數量,而我們實際做DNS解析時會用到的根伺服器實際上是離我們較近的一台實體伺服器。

頂級域名

頂級域名就是域名的最後一段,例如blog.csdn.net的頂級域名就是.net。

頂級域名目前分為三類:

  • 國家和地區頂級域名(ccTLDs):.cn,.ai等;
  • 通用頂級域名(gTLDs):.com,.net等;
  • 新頂級域名(New gTLD):.xyz,.red等;

資源類型

資源類型即通過DNS解析能得到的結果資料。一般分為:

  • 主機記錄(A記錄):RFC 1035定義,A記錄是用于名稱解析的重要記錄,它将特定的主機名映射到對應主機的IP位址上。
  • 别名記錄(CNAME記錄): RFC 1035定義,CNAME記錄用于将某個别名指向到某個A記錄上,這樣就不需要再為某個新名字另外建立一條新的A記錄。
  • IPv6主機記錄(AAAA記錄): RFC 3596定義,與A記錄對應,用于将特定的主機名映射到一個主機的IPv6位址。
  • 服務位置記錄(SRV記錄): RFC 2782定義,用于定義提供特定服務的伺服器的位置,如主機(hostname),端口(port number)等。
  • NAPTR記錄:RFC 3403定義,它提供了正規表達式方式去映射一個域名。NAPTR記錄非常著名的一個應用是用于ENUM查詢。

DNS解析流程

DNS解析,一般指的是正向解析,也就是根據域名查找對應的IP的過程。當然也有反向解析,即根據IP查找域名。反向解析不常用,這裡也不做讨論。DNS解析流程分為兩種:遞歸和疊代。

  • 遞歸:網際網路使用者向DNS伺服器解析域名的過程。
  • 疊代:多見于DNS伺服器之間互相查詢。
遞歸解析

舉個例子,使用者請求blog.csdn.net的域名解析。在不考慮本地緩存的情況下:

1)請求本地DNS伺服器(營運商配置設定)或者你指定的公共DNS伺服器(例如8.8.8.8),如果有緩存傳回;

2)本地DNS伺服器沒有,則向根域名伺服器請求

.net

這個頂級域名伺服器的位址;

3)收到

.net

頂級域名伺服器位址後,請求該伺服器,查詢

csdn.net

這個域名伺服器位址;

4)接着去

csdn.net

伺服器去查詢

blog.csdn.net

這個域名的位址,傳回後以此傳回給使用者,此為遞歸過程;

疊代解析

疊代解析:A問B,B不知,答去問C,A複問C,C亦不知,答去問D,A複問D,D答,完。

參考文獻:

  1. 根域名伺服器-維基百科
  2. DNS-維基百科
  3. 百度DNS-幫助中心
  4. 根域名伺服器隻有13台?(知乎)

繼續閱讀