計算機網絡應用層----DNS協議:因特網的目錄服務
DNS : (domain name system) 域名系統
由於IP地址非常複雜難以記憶,我們平時訪問網站時,輸入的都是字母組成的字符串,而不是直接輸入IP地址,但是數據在網絡中傳播需要IP地址,因此就需要有效管理主機名和IP地址之間的關係的系統,也就是DNS系統。
DNS系統可以維護一個用來標識組織內部主機名和IP地址之間對應關係的數據庫。
DNS組成:
- 一個由分層的DNS服務器實現的分佈式數據庫
- 一個使得主機能夠查詢分佈式數據庫的應用層協議
DNS協議是運行在UDP基礎上的 (爲了速度更快、負載更低)
DNS協議的運行過程:
- 用戶主機上運行着DNS客戶端
- 當向瀏覽器輸入對應的URL後,將對應的主機名傳給DNS客戶端
- DNS客戶向DNS服務器發送一個包含主機名的請求
- DNS客戶最終會受到一份回答報文,包含有主機名對應的IP地址
- 一旦瀏覽器接收到來自DNS的該IP地址,則將通過該IP地址可以發起TCP連接
DNS的服務:
- 進行主機名到IP地址的轉換
- 主機別名。有着複雜主機名的主機能擁有一個或多個別名,應用程序可以調用DNS來獲得主機別名對應的規範主機名以及主機的IP地址
- 郵件服務器別名。電子郵件應用程序可以調用DNS,對提供的郵件服務器別名進行解析,以獲得該主機的規範主機名及IP地址
- 負載分配。 DNS用於冗餘的服務器之間進行負載均衡
DNS工作原理概述
由於單一DNS服務器將有單點故障(DNS服務器崩潰則整個因特網崩潰)、通信容量(巨量的查詢)、遠距離查詢(非常慢的查詢)、難以維護等諸多問題,且難以擴展。故DNS採用的是分佈式的設計方案
DNS使用了大量的DNS服務器,以層次方式組織,遍佈在世界範圍。
DNS服務器分爲三種:
- 根DNS服務器。通常存儲的是頂級域與其對應的頂級域服務器IP地址之間的映射關係
- 頂級域DNS服務器。通常成存儲的是域名與其對應的權威服務器的IP地址之間的映射關係
- 權威DNS服務器。存儲的是本地的域名與其對應的IP地址之間的映射關係
還有本地DNS服務器,雖然不屬於域名服務器的層次結構,但對DNS層次結構非常重要。當一個主機發出DNS查詢請求時,這個查詢請求報文就發送給本地域名服務器,一般做一個代理的作用。
DNS查詢過程:查詢 gaia.cs.umass.edu
- 主機首先向本地DNS服務器發送DNS查詢報文,如果本地DNS服務器有該域名對應的IP地址直接返回即可
- 如果本地DNS服務器沒有存儲該域名,則本地DNS服務器將該報文轉發給根DNS服務器
- 根DNS服務器解析域名發現前綴 edu ,將向本地DNS服務器返回負責 edu 的頂級域服務器的IP地址列表
- 本地DNS服務器收到後,將向這些頂級域服務器之一發送查詢報文
- 該頂級域服務器注意到 umass.edu 的前綴,將向本地DNS服務器返回權威DNS服務器的IP地址
- 本地DNS服務器將報文轉發到權威DNS服務器,該權威DNS服務器將發送目標IP地址到本地DNS服務器
- 本地DNS服務器將目標IP地址發送到請求主機
- 主機獲得目標IP地址後將進行之後的TCP/IP連接
DNS在進行區域傳輸的時候使用TCP,普通的查詢使用UDP
客戶端到本地DNS服務器是屬於遞歸查詢(發出一次請求,得到一次準確結果,但消耗資源),而DNS服務器之間的交互查詢就是迭代查詢(發出多次請求)
DNS緩存
爲了改善時延並減少因特網上傳輸的DNS報文數量,DNS廣泛採用了緩存技術。
原理:DNS服務器收到一個DNS回答後,將會把該回答存儲到本地緩存存儲器中,下一次如果有相同的查詢將直接返回對應IP地址即可。(緩存具有生命週期,當一段時間沒有訪問後將丟棄該緩存信息)
查看本地DNS配置
我採用的是自動獲得DNS服務器地址,也可以自己配置對應的DNS服務器地址。
查詢我的DNS服務器地址:
DNS安全問題
1.針對域名系統的惡意攻擊:DDOS攻擊造成域名解析癱瘓。
2.域名劫持:修改註冊信息、劫持解析結果。
3.國家性質的域名系統安全事件:“.ly”域名癱瘓、“.af”域名的域名管理權變更。
4.系統上運行的DNS服務存在漏洞,導致被黑客獲取權限,從而篡改DNS信息。
5.DNS設置不當,導致泄漏一些敏感信息。提供給黑客進一步攻擊提供有力信息。