1. 程式人生 > >DNS域名解析和域名解析系統

DNS域名解析和域名解析系統

1、DNS名稱空間

DNS使用的名稱集合就叫名稱空間,與計算計資料夾和檔案系統類似,都是劃分為層次且大小寫不敏感,類似於樹狀結構

1、頂級域名(TLD)top-level-domain:名稱空間樹的最高層,包括4個頂級域名(通用頂級域名gTLD、國家程式碼頂級域名(ccTLD)、國際化國家程式碼頂級域名(IDN ccTLD)、基礎設施頂級域名(infrastructure TLD)

  • 通用頂級域名(gTLD):包含不受限gTLD、受限gTLD、贊助gTLD三類:

  • 國家程式碼頂級域名(ccTLD):用只能兩個字母的國家程式碼作為頂級域名(如.us、.cn等)

  • 國際化國家程式碼頂級域名(IDN ccTLD):用各國語言表示的國家頂級域名(如.中國等)

  • 基礎設施頂級域名(infrastructure TLD):arpa(只有一個)

2、DNS命名語法

  • 子域名(subdomain):DNS名稱樹中TLD以下的名稱進一步劃分成

  • 完全限定域名(FQDN):帶有後隨點,表示該名稱是完整的,當進行域名解析時,沒有額外的資訊新增到該名稱(如www.baidu.com.)後隨點也可以省略
  • 非限定域名(UQDN):與系統配置中的預設域名結合,會在域名後面新增一個或者多個預設域名,稱為域名拓展(例如在配置了預設域名cs.berkeley.edu的主機上輸入vangogh,本地DNS解析器軟體就會將這個名稱自動轉換為vangogh.cs.berkeley.edu來解析)
  • 每個子域名標籤最多可達到63個字元長,整個FQDN最多255個字元長
  • DNS名稱空間的層次結構允許不同的管理機構管理名稱空間的不同部分(如建立DNS名稱elevator.cs.berkeley.edu只用與cs.berkeley.edu的擁有者協商即可,而不需要詢問berkeley.edu和edu的擁有者

2、名稱伺服器(Name Server)和區域zone

  • 域名解析伺服器(name Servers/DNS Server ):分散式系統主要工作是提供域名-IP地址之間的對映,每個DNS區域至少有兩臺域名解析器(主DNS伺服器和輔DNS伺服器,主DNS伺服器將區域資料庫儲存在磁碟檔案中,輔伺服器作為備份伺服器會定期與主DNS伺服器通訊確保,它的區域資訊保持更新)
  • 區域(Zone):每臺DNS伺服器完成解析的最小單元叫做域(即每一個子域名就是一個域),每個DNS可以解析一個或者多個域每個域名都存在於某個區域中,即使是頂級域名也存在於根區域(root zone)中,每個區域可以獨立管理而不受其他區域影響。當一條新記錄新增到區域中時,該區域的DNS管理員為該新條目分配一個名稱和附加資訊(IP地址),並將這些資訊保持到名稱伺服器的資料庫中。
  • 授權(delegation)DNS伺服器管理的區域被訪問到以提供該名稱的資訊稱為授權
    - 區域傳輸(zone transfer):輔DNS伺服器從主DNS伺服器獲取區域內容的過程
  • 根域名伺服器(root servers):用於管理網際網路的主目錄,儲存了負責每個頂級域名伺服器的地址資訊(全球共有13個根域名伺服器,從A到M命名,其中有9個有IPv6資訊)
  • 通用頂級域名伺服器:用於擴充套件包括COM和NET在內的一些較大的gTLD(全球有13臺gTLD伺服器也是從A到M命名,其中有2臺有IPv6記錄。

3、返回DNS查詢資訊的來源

DNS資訊的三個主要來源渠道:

  • 權威伺服器(authoritative server):直接來自於該負責該區域的DNS伺服器的區域資料庫
  • 來自從屬伺服器的區域傳輸結果
  • 來自某臺DNS伺服器的快取。大部分DNS伺服器(除了一些根域名伺服器)都快取他們學習的區域資訊,知道快取時限(TTL)超時會刪除快取,使用快取DNS條目資訊可以大大減少DNS訊息的流量,DNS伺服器會指明返回資訊是來自快取還是區域授權副本,如果是快取則會包含權威伺服器的域名資訊

4、DNS快取

大部分DNS伺服器(除了一些根域名伺服器)都快取他們學習的區域資訊,知道快取時限(TTL)超時會刪除快取。每個DNS記錄有自己的TTL以控制其快取的時間,TTL指明瞭DNS中一個對映在任何地方能夠被快取的時間,這些TTL值在必要時由區域管理源設定和更改

(如果一個區域變化了,網路中仍然可能存在快取的資料,這就可能導致不正確的DNS解析,直到TTL失效。出於這個原因,一些想要改變區域內容的區域管理員會在實施這些更改之前先減少TTL的值以減少網路中存在不正確的快取資料存在時間。)

現在pc中,客戶端可以儲存快取,並允許同一系統上執行的所有應用程式使用該快取,在Windows中是預設開啟的,在Linux中是可以啟用或禁止的服務

5、DNS協議

DNS協議分為兩個部分:用於執行對DNS特定查詢的查詢/響應協議和名稱伺服器用於交換資料庫記錄的區域傳輸協議

1、DNS訊息格式



  • DNS Message 一般被封裝在UDP/IPv4中傳遞傳送,埠號:53(TCP埠號也是53),且被限定為512個位元組(不包括UDP/IPv4頭),如果回覆DNS資訊大於512位元組會被截斷,主機需要再次傳送TCP/IPv4的DNS去巡查(TCP/IPv4封裝的DNS資訊可以大於512位元組)
  • 除了(問題)區段,其他區段都包含一個或多個資源記錄(Resource Record),問題區段包含一個數據項,其結構於RR相近,RR可以被快取,而問題則不能。
  • 事務ID欄位由客戶端設定,由伺服器返回,客戶端使用事務ID欄位來匹配響應和查詢
  • RD標誌(期待遞迴)是由客戶端設定的,如果設定為0,則查詢伺服器不執行遞迴操作,當查詢伺服器沒有DNS訊息時會返回一個可以聯絡獲得回答的其他名稱伺服器的列表,客戶端通過逐個聯絡伺服器列表來繼續,稱為迭代查詢
  • RA標誌(遞迴可用)是由名稱伺服器設定的,根域名伺服器不支援遞迴可用

2、DNS查詢/響應協議

通過每個站點或ISP本地部署伺服器和一組特殊的根伺服器構成DNS分散式式基礎設施用來支援DNS查詢/響應操作

  • 在命令列查詢DNS

3、DNS區域傳輸協議

6、排序列表、迴圈和分離DNS

  • DNS排序列表:一個域名對應多個IP地址時(如多宿主計算機),將字首與請求IP相近的返回實現就近原則
  • 輪詢(Round-Robin ):一個域名對應多個IP地址時(多宿主計算機),DNS伺服器將解析結果按照A記錄的順序逐一返回給不同的請求IP,這樣達到負載均衡
  • 分離DNS:根據客戶端的IP來差別返回結果,如公司的內網主機查詢伺服器時可以返回整個公司的DNS資料庫,但是外網主機訪問name伺服器時只返回DMZ區域的DNS資料庫

7、開放的DNS伺服器和動態DNS伺服器

  • 動態DNS伺服器(DDNS):將使用者的動態IP地址對映到一個固定的域名伺服器上,每次使用者聯網時客戶端就會把該主機的動態IP傳送給服務商主機上的域名伺服器程式

8、DNS逆向查詢

反向查詢:通過Ip地址來查詢域名

9、從IPv4向IPv6轉換DNS

10、本地鏈路組播地址解析(LLMNR)

當DNS伺服器不能用時,通過傳送UDP組播查詢資料報來查詢域名對應的
IP地址,當鏈路範圍內支援LLMNR並配置為相應傳入的查詢的主機收到請求後,會將域名與自己的進行配比,
匹配的主機會回傳一條包含自己IP地址的單播資訊給查詢的主機