DNS小述

小引

當我們在瀏覽器中輸入一個Url,並按下回車時,會經歷以下幾步:
1、解析出url中的域名
2、通過DNS服務將域名轉化爲IP地址
3、解析出url中的端口,通過IP地址和端口與對應的計算機建立TCP鏈接
4、在TCP鏈接上進行應用通信
5、關閉鏈接
第二步就是今天的主題

DNS簡介

DNS全稱是Domain Name System,中文是域名系統。首先它是一個分佈式數據庫,由分層的DNS服務器組成;其次,它是一個應用層協議,使得主機能夠通過這個協議來查詢分佈式數據庫,DNS協議運行在UDP之上,使用53號端口。

四種DNS服務器

  • 根DNS服務器:全球有13個根DNS服務器(每個服務器並不是單機,爲了提高安全性可用性,每“個”根DNS服務器其實是一個服務器網絡),記錄了頂級域DNS服務器的IP地址列表。
  • 頂級域DNS服務器:這些服務器負責頂級域名,如com、org、net、cn等等。記錄了對應頂級域名下的域對應的權威DNS服務器的IP地址(或者是可以獲取到這個權威DNS服務器IP地址的中間服務器地址)
  • 權威DNS服務器:這個服務器一般在所查詢主機擁有者手裏或者在服務提供商手裏,提供具體域名到IP的映射記錄。
  • 本地DNS服務器:每個機構比如大學、小區、公司一般都有自己的一個本地DNS服務器,它一般是這個局域網下計算機默認的首位DNS服務器,主要就是緩存從以上三種服務器中得到的資源記錄,減少DNS解析的步驟。

解析步驟

1、首先查詢本地hosts文件中是否可以解析,如果不可以則向本地DNS服務器請求解析。
2、本地DNS服務器如果緩存了請求的域名,則直接返回它的IP;如果沒有緩存,則向根DNS服務器請求解析,根服務器返回對應的頂級域DNS服務器地址,本地服務器再向頂級域DNS服務器請求解析。(更多的情況是本地DNS服務器已經緩存了頂級域DNS服務器的地址,而跳過了訪問根服務器這一步)
3、頂級域DNS服務器再次返回請求解析的域名對應的權威DNS服務器IP(也可能返回一箇中間服務器地址,通過這個服務器得到權威DNS服務器IP),然後本地服務器通過這個權威DNS服務器得到最終需要的IP地址。
4、本地DNS服務器將得到的IP和對應的域名緩存起來,並返回給請求解析的主機。
在這裏插入圖片描述

資源記錄

這個過程中傳輸的都是DNS報文,報文中我們最需要關注的就是他的資源記錄(RR)。資源記錄是一個包含了四個字段的記錄(Name,Value,Type,TTL)。最後一個字段代表了這個記錄的生存時間,也就是緩存何時失效。而第一個字段Name和第二個字段Value,他倆的含義取決於第三個字段Type。Type有四種取值:
①當Type=A時,Name就是主機名,Value就是主機名對應的IP地址。
②如果Type=NS,那麼Name就是一個域(如baidu.com),Value是可以獲得這個域中主機IP地址的權威DNS服務器的主機名。比如(baidu.comdns.baidu.com,NS,TTL)就是一條類型爲NS的記錄。
③如果Type =CNAME,則Name是一個別名,而Value是它的規範主機名。
④如果Type = MX,Name是一個郵件服務器的別名,Value是它的規範主機名。

通過這個Type我們可以看出DNS至少有兩個作用,一是IP映射,二是別名映射。其實除了這兩個還有一個作用就是負載均衡。DNS服務器可以讓一個主機名映射到一個IP集合,每次解析出IP集合中的一個IP。這樣同一個服務的壓力分散到了多個物理機上面,實現負載均衡。
(DNS三個作用:①別名映射 ②IP映射 ③負載均衡)

小栗子

最後通過一個例子來結束這篇文章:
客戶機請求解析 www.baidu.com,host文件中沒有對應的記錄,於是請求本地DNS服務器。
本地DNS服務器也難以完成解析,於是請求本地已經緩存的com頂級域DNS服務器,頂級域服務器返回了兩條資源記錄,一條是NS型記錄(baidu.comdns.baidu.com,NS,TTL),另一條是A型記錄(dns.baidu.comxxx.xxx.xxx.xxx,A,TTL)。
本地服務器收到這兩條記錄,知道了dns.baidu.com是權威DNS服務器,它的IP是xxx.xxx.xxx.xxx。於是訪問這個服務器並得到www.baidu.com的IP地址,並通過這個IP地址建立TCP鏈接,在TCP鏈接上通過HTTP報文進行通信。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章