DNS提供的服務

  • 2020 年 3 月 29 日
  • 筆記

DNS提供的服務

DNS是:1.一個由分層的DNS伺服器實現的分散式資料庫;2. 一個使主機能夠查詢分散式資料庫的應用協議。
DNS協議運行在UDP上,使用53號埠。

與http,FTP,SMTP協議一樣,DNS協議是應用層協議,其原因在於:1. 使用客戶-伺服器模式運行在通訊的端系統之間;2. 在通訊的端系統之間通過下面的端到段運輸協議來傳送DNS報文。

考慮當某個用戶主機上的一個瀏覽器(即一個HTTP客戶請求URLwww.someschool.edu/index.html頁面時會發生什麼現象。為了使主機能夠請求報文發送到web伺服器www.someschool.edu,該用戶需要獲取其IP地址。做法入下:

  • 同一台用戶主機上運行著DNS應用的客戶端。
  • 瀏覽器從上述URL中抽取出主機名www.someschool.edu,並將這台註記名傳給DNS應用的客戶端。
  • DNS客戶向DNS伺服器發送一個包含主機名的請求
  • DNS客戶最終會收到一份回答報文,其中含有對應於該主機名的IP地址。
  • 一旦瀏覽器接收到來自DNS的該IP地址,他能夠向位於該IP地址的80斷後的HTTP伺服器進程發起一個TCP連接。

DNS的工作機理概念

在單一DNS伺服器上運行集中式資料庫完全沒有可擴展能力。因此,DNS採用了分散式的設計方案。事實上,DNS是一個在網際網路上實現分散式資料庫的精彩範例。

分散式、層次資料庫

為了處理擴展性問題,DNS使用了大量DNS伺服器,他們以層次方式組織並且分布在全世界範圍內。大致來說有3中類型的DNS伺服器:根DNS伺服器、頂級域(TLD)DNS伺服器和權威DNS伺服器。

假定一個DNS客戶要決定主機名www.amazon.com的IP地址。粗略說來將發生下列事件: 客戶首先與根伺服器之一聯繫,它將返回頂級域名com的TLD伺服器的IP地址。該客戶則與這些TLD伺服器之一聯繫,它將為amazon.com返回權威伺服器的IP地址。最後該客戶與amazon.com權威伺服器之一聯繫,它為主機名www.amazon.com返回其IP地址。
根伺服器->TLD伺服器->權威伺服器

  • 根伺服器:網際網路一共有13個根DNS伺服器,我們將每個伺服器視為單個伺服器,但每台伺服器都是一個冗餘伺服器的網路。
  • 頂級域(DNS)伺服器。這些伺服器負責頂級域名如com、org、net、edu以及所有國家的頂級域名如uk、fr、ca和jp等等
  • 權威DNS伺服器 網際網路上具有公共可訪問主機的每個組織機構必須提供公共可訪問的DNS記錄,這些記錄將這些主機名映射為以IP地址。多數大學和大公司實現和維護他們自己基本和輔助(備份)的權威DNS伺服器。
  • 本地DNS伺服器:不屬於該伺服器的層次結構,但是對DNS層次結構是最重要的。每個ISP都有一台本地DNS的伺服器。

DNS快取

在一個請求鏈中,當某DNS伺服器接收一個DNS回答時,它能將該回答中的資訊快取在本地存儲器中。

DNS記錄和報文

資源記錄(RR)是一個包含了下列欄位的4元組(Name,Value,Type,TTL) TTL是該記錄的生存時間,它決定了資源記錄應當從快取中刪除的時間。Name和Value的值取決於Type:

    • 如果Type=A,則Name是主機名,Value是該主機名對應的IP地址
    • 如果Type=NS,則Name是一個域,而Value是個知道如何獲得該域中主機IP地址的權威DNS伺服器的主機名。
    • 如果Type=CNAME,則Value是別名為Name的主機對應的規範主機名。
    • 如果Type=MX,則Value是個別名為Name的郵件伺服器的規範主機名。