DNS:域名系統
域名系統(DNS)是一種用於TCP/IP應用程式的分散式資料庫,它提供主機名字和IP地址之間的轉換及有關電子郵件的選路資訊。從應用的角度上看,對DNS的訪問是通過一個地址解析器(resolver)來完成的。由於DNS底層邏輯方面太複雜了,所以我僅從資料包方面分析如何應用DNS解析地址,只要學會如何使用就行,原理方面在後面深入。
DNS基礎
圖為DNS的名稱空間,和Unix的檔案系統相似,也具有層次結構。
命名樹上任何一個結點的域名就是將從該結點到最高層的域名串連起來,中間使用一個點“.”分隔這些域名;以點“.”結尾的域名稱為絕對域名或完全合格的域名FQDN(Full Qualified DomainName),例如sun.tuc.noao.edu.。如果一個域名不以點結尾,則認為該域名是不完全的。如何使域名完整依賴於使用的DNS軟體。如果不完整的域名由兩個或兩個以上的標號組成,則認為它是完整的;或者在該域名的右邊加入一個區域性字尾。例如域名sun通過加上區域性字尾.tuc.noao.edu.成為完整的。
DNS的報文格式
這個報文由12位元組長的首部和4個長度可變的欄位組成。
1)標識欄位由客戶程式設定並由伺服器返回結果。客戶程式通過它來確定響應與查詢是否匹配。
2)16 bit的標誌欄位被劃分為若干子欄位,如下圖所示。
我們從最左位開始依次介紹各子欄位:
- QR是1bit欄位:0表示查詢報文,1表示響應報文。
- opcode是一個4bit欄位:通常值為0(標準查詢),其他值為1(反向查詢)和2(伺服器狀態請求)。
- AA是1bit標誌,表示“授權回答(authoritative answer)”。該名字伺服器是授權於該域的。
- TC是1bit欄位,表示“可截斷的(truncated)”。使用UDP時,它表示當應答的總長度超過512位元組時,只返回前512個位元組。
- RD是1bit欄位表示“期望遞迴(recursion desired)”。該位元能在一個查詢中設定,並在響應中返回。這個標誌告訴名字伺服器必須處理這個查詢,也稱為一個遞迴查詢。如果該位為0,且被請求的名字伺服器沒有一個授權回答,它就返回一個能解答該查詢的其他名字伺服器列表,這稱為迭代查詢。在後面的例子中,我們將看到這兩種型別查詢的例子。
- RA是1bit欄位,表示“可用遞迴”。如果名字伺服器支援遞迴查詢,則在響應中將該位元設定為1。在後面的例子中可看到大多數名字伺服器都提供遞迴查詢,除了某些根伺服器。
- 隨後的3bit zero欄位必須為0。
- rcode是一個4bit的返回碼欄位。通常的值為0(沒有差錯)和3(名字差錯)。名字差錯只有從一個授權名字伺服器上返回,它表示在查詢中制定的域名不存在。
3)隨後的4個16 bit 可變欄位說明最後4個變長欄位中包含的條目數。對於查詢報文,問題(question)數通常是1,而其他3項則均為0。類似地,對於應答報文,回答數至少是1,剩下的兩項可以是0或非0。
詳細說明DNS查詢報文中的問題部分
(*1)查詢名是要查詢的名字,格式如下圖顯示瞭如何儲存域名gemini.tuc.noao.edu,它是一個或多個識別符號的序列。每個識別符號以首位元組的計數值來說明隨後識別符號的位元組長度,每個名字以最後位元組為0結束,長度為0的識別符號是根識別符號。
(*2)查詢型別,每個問題有一個查詢型別,而每個響應(也稱一個資源記錄,我們下面將談到)也有一個型別。
最常用的查詢型別是A型別,表示期望獲得查詢名的IP地址。一個PTR查詢則請求獲得一個IP地址對應的域名。
(*3)查詢類通常是1,指網際網路地址(某些站點也支援其他非IP地址)。
DNS響應報文中的資源記錄部分
DNS報文中最後的三個欄位,回答欄位、授權欄位和附加資訊欄位,均採用一種稱為資源記錄RR(Resource Record)的相同格式。下圖顯示了資源記錄的格式。
域名是記錄中資源資料對應的名字。它的格式和前面介紹的查詢名欄位格式相同。
型別說明RR的型別碼。它的值和前面介紹的查詢型別值是一樣的。
類通常為1,指Internet資料。
生存時間欄位是客戶程式保留該資源記錄的秒數。資源記錄通常的生存時間值為2天。
資源資料長度說明資源資料的數量。
資源資料的格式依賴於型別欄位的值。對於型別1(A記錄)資源資料是4位元組的IP地址。
該篇總結了DNS的報文格式,希望你喜歡。
該文章大部分段落取材於《TCP/IP詳解 卷1:協議》
相關文章
- 域名系統dnsDNS
- 域名系統DNS簡述DNS
- 域名系統DNS服務DNS
- 什麼是域名系統(DNS)?DNS
- 一文了解DNS(域名系統)DNS
- 應用層協議:DNS域名系統協議DNS
- DNS域名系統概述及正向解析實驗(詳細)DNS
- 快快網路域名系統
- ARP地址解析協議、DNS域名系統和交換機、路由器、閘道器的概念協議DNS路由器
- python報名系統抗壓測試Python
- 做好用的課程管理報名系統
- ios超級簽名系統使用配置教程iOS
- 某知名系統漏洞挖掘與利用思路探索
- DNS域傳送資訊洩露DNS
- iOS超級簽名系統演示(免費體驗)iOS
- 中科三方:域名系統基本常識分享
- 多區域DNS服務,子域授權,快取DNS及Split分離解析的原理和實現DNS快取
- 前端學習 node 快速入門 系列 —— 報名系統 - [express]前端Express
- 簡單介紹iOS超級簽名系統分發配置iOS
- 工信部通知要求加強域名系統安全保障工作
- 我們為什麼要做一名系統管理員?
- 老牌智慧DNS系統wdDNS出新版,自部署DNS首選DNS
- 採用以太坊智慧合約技術的報名系統原始碼原始碼
- nslookup 是一個用於查詢域名系統 (DNS) 的命令列工具。在 Windows 中逐漸被其他網路工具所取代, PowerShell 中的 Resolve-DnsName cmdletDNS命令列Windows
- DNS安全問題有哪些?DNS系統存在哪些安全隱患?DNS
- linux系統雲主機修改DNSLinuxDNS
- 中國發布自主開發的域名系統基礎軟體 “紅楓”
- DNS劫持 DNS汙染 介紹、dns 劫持 汙染DNS
- DNS劫持和DNS汙染DNS
- 批次網站DNS區域傳送漏洞檢測——bash shell實現網站DNS
- Centos7系統配置DNS服務CentOSDNS
- 前端開發變數命名系列 - JavaScript篇前端變數JavaScript
- win10系統如何修改dns為8.8.8.8Win10DNS
- dns汙染與dns劫持,瞭解dns汙染與dns劫持,網站安全不可疏忽DNS網站
- 硬貨:如何做好一名系統架構設計師以及面試技巧架構面試
- DNS劫持與DNS汙染是什麼意思、dns劫持和汙染DNS
- DNS系統解析基本流程有什麼?linux系統學習DNSLinux
- 黑客是如何利用DNS域傳送漏洞進行滲透與攻擊的?黑客DNS