DNS解析順序是怎樣的?
很多網站管理人員大概都瞭解域名解析的原理和過程,但是對於一些細節問題可能不太清楚,比如當客戶端對域名發起請求時,具體的解析順序是什麼樣的?下面中科三方針對這個問題做下簡單介紹。
1.DNS的作用
在網際網路中,其實沒有類似於這樣的域名方式,計算機識別的是純數字的IP地址,如222.222.222.222,比如我們知道一個網站的IP地址,直接輸入訪問絕對是能開啟的。
但現在網站成千上萬,如果我們只能透過IP地址訪問,這得需要我們花很大力氣去記住這些繁瑣和相似的數字,所以域名就作為一種更簡便的定址方式出現了。
那為什麼會有DNS呢?因為域名是給人使用的,計算機只能識別IP地址,所以需要DNS作為橋樑將域名翻譯成IP地址。這樣就能保證我們透過域名也能到達對應的伺服器地址了。
我們平時工作時會發現,有時候會出現能夠登陸qq、微信,但是卻打不開網頁的情況,其中大部分原因都是DNS伺服器故障造成的。因為網站需要透過DNS伺服器查詢解析結果,使用者根據這個結果才能透過域名去訪問,但是qq、微信等聊天軟體,採用的是UDP傳輸協議,即不可靠傳輸協議,無需DNS伺服器地址,也能登陸,所以才會出現上面的情況。
DNS解析過程
當客戶端對域名發起訪問時,會將解析請求傳送給遞迴解析伺服器,遞迴伺服器會代替客戶端進行全球遞迴查詢。
首先遞迴伺服器會請求根域名伺服器,根域名伺服器根據域名字尾,告知對應的頂級域名伺服器;遞迴伺服器再向頂級伺服器發起請求,頂級域名伺服器告知對應的權威伺服器;遞迴伺服器向權威伺服器發起請求,權威伺服器告知解析結果;遞迴伺服器將結果告知客戶端,客戶端完成訪問。
DNS快取
以上是DNS解析的標準流程,但是由於各種DNS快取的存在,導致DNS解析環節更為複雜。
所謂DNS快取是指DNS返回正確的IP地址之後,系統會將這個結果臨時儲存起來,併為快取設定一個失效時間(TTL值),在TTL失效前,當再次訪問這個網站,系統就會直接從DNS 快取中將結果返回,而不必再次委託遞迴伺服器進行全球解析查詢,加快了DNS解析的流程。
當然TTL值失效後,系統還會自動再次詢問DNS伺服器以獲取最新的解析結果。
DNS快取分類
(1)瀏覽器DNS快取:瀏覽器會根據一定頻率快取DNS記錄;
(2)本地DNS快取:如果瀏覽器快取中找不到解析記錄,就會去詢問作業系統中的快取;
(3)本地HOSTS檔案:HOSTS是記錄域名與IP地址一一對映關係的本地檔案,Windows系統中位於C:\Windows\System32\drivers\etc;
(4)路由器DNS快取:我們常用的路由器也帶有自動快取功能,路由器DNS被篡改會造成域名劫持,將訪問網址定位到另外一個伺服器;
(5)遞迴伺服器快取:遞迴伺服器在將解析結果告知客戶端的同時,將記錄快取下來,當下次請求同一個域名時,直接會將記錄返回,而無需再進行全球查詢。
DNS解析順序
DNS解析順序是“先查快取,再遞迴解析”,查詢順序為:瀏覽器快取—系統快取—路由器快取—遞迴伺服器快取—遞迴查詢。
我們以這個域名為例進行查詢,具體流程如下:
(1)搜尋瀏覽器自帶的DNS快取
當收到訪問請求後,瀏覽器首先會查詢瀏覽器自身的DNS快取,這個快取時間比較短(chrome://net-internals/#dns 這裡可以查詢快取的dns記錄),且只能容納 1000條快取,如果快取中有對應條目,返回結果,解析到此結束。
(2)查詢作業系統快取和hosts本地檔案
如果瀏覽器快取中沒有找到對應條目(ipconfig /displaydns可以檢視),作業系統也會有一個域名解析的過程,瀏覽器會先搜尋作業系統的DNS快取中是否有這個域名解析記錄,如果有返回結果,解析結束。
此外,電腦本地檔案HOSTS中可以設定域名到IP地址的指向關係。如果HOSTS檔案中儲存有該域名的記錄,瀏覽器會首先使用這個IP地址,並將其結果快取下來,快取時間同樣受域名失效時間和快取空間大小決定。
(3)查詢路由器快取
如果瀏覽器和作業系統中沒有域名解析記錄,就會查詢路由器中的DNS快取,如果路由器DNS快取中有解析條目,直接返回結果,解析結束。
(4)遞迴解析伺服器快取
如果本機和路由器DNS快取中沒有該域名的解析記錄,瀏覽器就會向遞迴伺服器發起請求,如果遞迴伺服器快取有該域名解析條目,返回結果,解析結束。
(5)查詢根域名伺服器
如果遞迴伺服器快取中沒有結果,就會委託遞迴伺服器發起全球查詢,首先遞迴伺服器會向根域名伺服器發起解析請求。根域名伺服器告知.com頂級域名伺服器地址。
(6)查詢頂級域名伺服器
遞迴伺服器向.com頂級域名伺服器發起DNS請求,.com頂級伺服器告知example.com所屬權威域名伺服器地址。
(7)查詢權威域名伺服器
遞迴伺服器向example.com的權威域名伺服器地址發起請求,權威伺服器告知所對應的IP地址。
(8)返回解析結果
得到的IP地址後,遞迴伺服器將結果告知客戶端,客戶端對該IP地址發起訪問。整個DNS解析流程到此結束。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69996004/viewspace-2919442/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 中科三方:什麼是DNS?DNS解析的原理是怎樣的?DNS
- 什麼是DNS解析?DNS解析的過程是什麼樣的?DNS
- DNS查詢順序DNS
- AIX 6.1下改變域名解析順序(DNS, LOCAL)AIDNS
- 標準的 SQL 解析順序SQL
- AIX 域名解析順序AI
- 什麼是DNS解析?如何提升DNS解析安全?DNS
- Python的方法解析順序(MRO)[轉]Python
- WIN10如何更改輸入法順序 win10怎樣修改電腦輸入法順序Win10
- NLS引數優先順序解析
- JUnit 標籤執行順序解析
- 域名解析的原理是什麼?域名解析的流程是怎樣的?
- 優先順序佇列是一種什麼樣的資料結構佇列資料結構
- 轉: 關於oracle 是按照寫入順序還是ROWID順序取資料Oracle
- 微信聊天表情順序設定方法 微信表情順序怎麼調?
- Script載入順序 & 外部樣式表的阻塞
- 何為CSS 樣式優先順序CSS
- SQL 查詢語句的執行順序解析SQL
- dotnet core TargetFramework 解析順序探索Framework
- 解析 RocketMQ 業務訊息--“順序訊息”MQ
- Java框架學習順序是哪些Java框架
- Java框架學習順序是哪些?Java框架
- [轉] Oracle資料庫中建立表時怎樣考慮列順序Oracle資料庫
- 什麼是DNS域名解析DNS
- 關於CSS樣式的優先順序問題CSS
- php課程 1-3 web專案中php、html、js程式碼的執行順序是怎樣的(詳解)PHPWebHTMLJS
- dns解析狀態異常怎麼處理 dns解析異常怎麼修復DNS
- ppt動畫出現順序怎麼設定 PPT設定動畫文字順序動畫
- css選擇器的解析順序簡單介紹CSS
- java基礎(四) java運算順序的深入解析Java
- oracle 對於SQL語句中物件名的解析順序OracleSQL物件
- 【實驗】where子句的解析順序及執行效率
- 列定義的順序和列儲存的順序
- DNS解析是什麼?DNS解析在網路通訊中作用有哪些?DNS
- 【中科三方】什麼是雲解析DNS?雲解析DNS有必要購買嗎?如何購買雲解析DNS?DNS
- css樣式分類、定義、優先順序CSS
- python:LEGB識別符號解析順序Python符號
- AIX主機名|IP 解析順序及影響AI