1. 程式人生 > >計算機網路自頂向下 :應用層(DNS,POP)

計算機網路自頂向下 :應用層(DNS,POP)

DNS是:

  1. 一個分散式DNS伺服器實現分佈或資料庫。
  2. 一個使得主機能夠查詢分佈資料庫的應用層協議。

DNS伺服器通常是執行BIND軟體的Linux機器。
DNS協議執行在UDP之上使用53埠。

DNS提供的服務:

DNS除了進行主機到IP地址的轉換外,還提供了一些重要的服務如下:
1. 主機別名:一個主機可以擁有多個主機名,其中一個規範主機名,DNS提供將主機別名對映到其主機名及其相關地址。
2. 郵件伺服器別名:電子郵件程式也可以調DNS尋找郵件別名獲得規範主機。郵件伺服器可以與web伺服器使用相同的主機名。
3. 負載分配:繁忙的站點被多餘到多臺伺服器上,由於這多餘的web伺服器,一個IP地址集合因此與同一個規範主機名相聯絡。DNS資料庫中儲存著這些IP地址集合。當用戶對對映到其地址集合的名子發一個請求;該伺服器用IP集合進行響應,因為客戶總是對IP在最前的伺服器傳送HTTP請求,所以DNS主就在這些多餘的web伺服器上迴圈分配了負載。
不考慮快取及其它,本地伺服器在請求一個站點時是一個逐層次互動的過程。

DNS的層次結構

DNS有兩種設計一種是簡單的集中式的設計和分散式設計,集中式設計有很多問題如單點故障、通訊容量、維護等。因此DNS選擇了分散式的設計。

根DNS伺服器: 因特網上一共有13個根伺服器,這13個伺服器是冗餘的,以提供安全性和可靠性。

頂級域伺服器: 頂級域(DNS)伺服器。這些伺服器負責頂級域名如com、org、net、edu和gov,以及所有國家的頂級域名如uk、fr、ca和jp。Verisign Global Registry Services公司維護com頂級域的TLD伺服器;Educause公司維護edu頂級域的TLD伺服器。

權威DNS伺服器: 在因特網上具有公共可訪問主機(如Web伺服器和郵件伺服器)的每個組織機構必須提供公共可訪問的DNS記錄,這些記錄將這些主機的名字對映為IP地址。一個組織機構的權威DNS伺服器收藏了這些DNS記錄。一個組織機構能夠選擇實現它自己的權威DNS伺服器以儲存這些記錄;另一種方法是,該組織能夠支付費用,讓這些記錄儲存在某個服務提供商的一個權威DNS伺服器中。多數大學和大公司實現和維護它們自己基本和輔助(備份)的權威DNS伺服器。

DNS的兩種查詢過程:

DNS提供了兩種查詢過程:
遞迴查詢:在該模式下DNS伺服器接收客戶請求,必須使用一個準確的查詢結果回覆客戶機,如果DNS伺服器沒有儲存DNS值,那麼該伺服器會詢問其它伺服器,並將返回一個查詢結果給客戶機。
送代查詢:DNS伺服器會向客戶機提供其他能夠解釋查詢請求的DNS伺服器,當客戶機發送查詢時DNS並不直接回複查詢結果,而是告訴客戶機,另一臺DNS伺服器的地址,客戶機再向這臺DNS伺服器提交請求,依次迴圈直接返回結果。

其中遞迴查詢是標準的DNS查詢方式。

遞迴查詢:
這裡寫圖片描述

迭代查詢:
這裡寫圖片描述

在計算機網路這本書中迭代查詢中的DNS查詢是全權交給區域性DNS伺服器來做的。很明顯這個方式取決於當地的ISP。

DNS報文和記錄

在DNS的報文和記錄這裡我有一部分是參照的RFC1034。

在計算機網路中給我們介紹了一個最簡單的資源記錄,什麼是資源記錄(Rs),Rs提供了主機名到IP地址的對映。每一個DNS回答報文包含了一條或多條資源記錄。

資源記錄是一個四元組組成的:

(Type Name Value TTL)

其中Type,它是編碼的16位值,該值規定在這個資源記錄中的資源的型別。型別指抽象的資源。

若Type=A,則Name是主機名,Value是該主機對應的IP地址。因此一條型別為A的資源記錄提供了標準的主機名到IP名的對映。

若Type=NS,則Name是一個域,Value它提供瞭如何獲取到該IP地址的主機名

如果Type=CNAME,則Value是別名為Name的主機名對應的規範主機名。

如果Type=MX,則Value是別名為Name郵件伺服器的規範主機名。

CNAME和MX提供了前文說的主機別名和郵件伺服器別名服務。

DNS報文格式:

DNS只有查詢和回答報文。根據前文知道它們擁有相同的格式如下:

這裡寫圖片描述

前12個位元組是首部區域:

識別符號是一個16位元的數,用於標識該查詢。

標誌 :

QR .. OPCODE AA TC RD RA ZERO RECODE
1……..4………… 1….1…1…. 1…..3……. 4

QR: 查詢/應答
OPCODE: 定義查詢與應答型別。 0標識標準查詢 1 標識反向查詢 2 標識請求權威伺服器
AA: 授權應答標誌, 僅應答報文使用。1表示域名伺服器為權威伺服器
TC:截斷標誌 僅當DNS報文使用UDP服務時使用。因為UDP資料有長度限制,所以過長的DNS會被截斷
RD: 請求遞迴傳遞,僅有請求報文使用 1為請求遞迴,此項為標準查詢。
RA:允許遞迴標識,由應答報文使用, 1標識支援遞迴。
Zero: 這三位未使用,必須為0
Recode:4位返回碼,表示應答狀態,常用值為0(無錯誤)和3(域名不存在)

在首部中的其他八個位元組用來標識首部後的四類資料區域出現的數量。

問題區域用來標識正在查詢的資訊。

回答區域標識這對最初的請求的名字的資源記錄。

權威(授權)區域包含其他權威伺服器的記錄。

附加區域包含其他有幫助的記錄。

wireshark

簡單的DNS請求報文:

這裡寫圖片描述

簡單的DNS回答報文:

這裡寫圖片描述

DNS請求報文:

這裡寫圖片描述

稍微複雜一點的DNS回答報文:

這裡寫圖片描述

在這裡DNS的回答報文就回答了一個TYPE為CNAME的別名型別的資源記錄。