理解DNS


理解DNS

寫在前面

  目前,我們大部分的網絡通信都是基於TCP/IP協議的,而TCP/IP又基於IP地址作為唯一標識進行通信,隨着需要記憶的IP地址數量的增多,肯定會超出我們的記憶能力范圍,但如果使用一種利於人們的記憶的方式,如域名,例如"www.google.com",我們便可以輕松的記憶這種方式的標識,而不是繁雜的數字。而DNS(域名系統)就是為了可以使用這種方式提供服務的。

 

什么是DNS?

  DNS(Domain Name System),域名系統,它是因特網的一項服務。它作為將域名和IP地址相互映射的一個分布式數據庫,能夠使人更方便地訪問互聯網。DNS使用TCP和UDP端口53。當前,對於每一級域名長度的限制是63個字符,域名總長度則不能超過253個字符。

  DNS Domain Namespace,DNS域命名空間,是一種分層樹狀結構,其格式如下:"www.google.com",以點"."為分隔。結構如圖所示:

 DNS域名空間結構

  根域:絕對域名(FQDN),以點"."結尾的域名

  頂級域:用來指示某個國家/地區或組織使用的名稱的類型名稱,例如.com

  二級域:個人或組織在因特網上使用的注冊名稱,例如google.com

  子域:已注冊的二級域名派生的域名,一般就是網站名,例如www.google.com

  主機名:標識網絡上的特定計算機,例如h1.www.google.com

  

  DNS資源記錄:(即映射關系,通常由域名管理員進行配置),常見類型如下:

  SOA:起始授權機構

  NS:名稱服務器

  MX:郵件服務器

  A:IP地址(最常用,映射IP地址)

  CNAME:別名(較常用,映射到其他域名)

  

DNS工作原理

  當我們請求一個域名時,會通過DNS服務器將域名解析成IP訪問最終的主機,那么,DNS是如何查詢到域名所對應的IP並返回給我們的呢?請工作機制如圖所示:

DNS工作原理 

 

 

  

  當我們請求一個域名時,直到獲取到IP地址,整個過程是如何工作的?以請求www.codecc.xyz為例:

  1、首先,我們的主機會去查找本地的hosts文件和本地DNS解析器緩存,如果hosts文件和本地DNS緩存存在www.codecc.xyz和IP的映射關系,則完成域名解析,請求該IP地址,否則進入第二步。

  2、當hosts和本地DNS解析器緩存都沒有對應的網址映射關系,則會根據機器(/etc/reslove.conf)配置的本地DNS服務器進行查詢,此服務器收到查詢時,如果要查詢的域名在本地配置區域資源或者緩存中存在映射關系,則跳到步驟9,將解析結果直接返回給客戶機。

  PS:一二步驟為遞歸查詢,其余步驟為迭代查詢

  3、若本地DNS服務器不存在該域名的映射關系,就把請求發送至13台根DNS服務器。

  4、根DNS服務器會判斷這個域名(.xyz)由誰來授權管理,並返回一個負責該頂級域的DNS服務器的一個IP給本地DNS服務器。

  5、本地DNS服務器收到該IP后,會再將查詢請求發送至(.xyz)所在的DNS服務器。

  6、如果(.xyz)的DNS服務器無法解析該域名,就會去判斷這個二級域名(codecc.xyz)的管理者,返回一個負責該二級域的DNS服務器的IP給本地DNS服務器。

  7、本地DNS服務器收到該IP后,會再次將查詢請求發送至(codecc.xyz)所在的DNS服務器。

  8、(codecc.xyz)的DNS服務器會存有www.codecc.xzy的映射關系,將解析后的IP返回給本地DNS服務器

  9、本地DNS服務器根據查詢到的解析IP發送給客戶機,至此,DNS解析完成。

 

常用DNS查詢命令

windows:

nslookup 域名

 

 

Linux:

nslookup 域名

dig 域名

 

 

參考:

https://en.wikipedia.org/wiki/Domain_Name_System

https://technet.microsoft.com/en-us/library/cc772774(v=ws.10).aspx

《TCP/IP詳解卷1:協議》

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM