IP位址與網域名稱的關係
TCP IP 網路要求每台互連的計算機都具有唯一的 IP 位址,例如 39162.20.48。IP 位址是網路上每台計算機的電子識別符號,計算機使用 IP 位址來定位其他計算機並與之通訊。 但是直接使用IP位址有很多不便之處,因為IP位址是一串純數字,很難區分和記憶。
在網際網絡的早期,它們的數量較少,人們可以根據他們的 IP 位址直接找到它們。 但隨著網際網絡的快速發展,各種**都在快速增長,每個人在日常工作中都會接觸到大量的**,記住所有**IP位址顯然是不現實的。
目前,我們訪問**的主要方式不是IP位址,而是另一種定址器——網域名稱。 網域名稱是由數字、字母和特殊符號組成的字串,例如百度com、12306.與IP位址相比,網域名稱具有一定的規律性,更方便人們記住。
但從計算機的角度來看,由於網域名稱的位元組數較長,因此計算機與網域名稱通訊會消耗更多的資源。 計算機也更擅長處理純數字,這使得理解字母和數字的組合變得更加困難。 因此,在當前的網際網絡中,網域名稱和IP有兩種通訊方式,分別由人類和計算機使用。
為了打破兩者之間的溝通壁壘,DNS解析服務應運而生,它可以繫結網域名稱和IP位址,實現兩者之間的一對一指向關係。 通過DNS解析的翻譯功能,使用者可以通過網域名稱訪問對應的伺服器IP,並獲得最終的服務。
DNS 系統結構
提供DNS解析服務的系統稱為DNS(Domain Name System),它是一種分布式資料庫,用於儲存網域名稱IP位址之間的對映關係,它可以為使用者提供DNS解析服務,並將使用者請求的網域名稱轉換為計算機可以直接識別的IP位址,使使用者可以更方便地訪問Internet,而不必記住每個**的IP位址。
為了提高解析的穩定性和效率,DNS系統採用分層結構,每層的名稱伺服器只響應其管轄的部分。 根據名稱伺服器的角色,有四種不同型別的名稱伺服器:
根名稱伺服器。
根網域名稱伺服器是 DNS 結構中最高階別的網域名稱伺服器。 當本地名稱伺服器無法解析網域名稱時,首先請求根名稱伺服器。
頂管網域名稱伺服器。
頂級網域名稱伺服器是根伺服器下面的二級伺服器,本地DNS伺服器在根伺服器未收到結果後,會向頂級網域名稱伺服器發起查詢請求,頂級網域名稱伺服器會返回二級網域名稱授權的DNS伺服器位址。
權威名稱伺服器。
權威名稱伺服器負責區域的名稱伺服器。 當頂級網域名稱伺服器尚無法提供最終查詢答案時,它會告訴您接下來應該請求哪個權威網域名稱伺服器位址。
本地名稱伺服器。
本地名稱伺服器不是下圖所示的樹狀 DNS 名稱伺服器的一部分,但它們對 DNS 很重要。 當主機傳送DNS查詢請求時,查詢請求資料包將傳送到本地名稱伺服器。 每個 ISP 都可以有乙個本地名稱伺服器。
DNS 解析是分布式儲存,其中根名稱伺服器僅儲存 260 個頂級名稱伺服器的 IP 位址。 頂級網域名稱伺服器,例如: cn 的頂級網域名稱伺服器儲存下一級權威解析伺服器的位址,例如 VIP1sfndns.CN是提供網域名稱和IP位址之間關係的伺服器,是整個DNS解析環節的核心。
DNS解析過程
每當傳送 URL 請求時,瀏覽器都會啟動 DNS 查詢,允許瀏覽器獲取網域名稱對應的 IP 位址。
為了節省DNS解析時間,在DNS解析的每個環節都引入了快取機制,當客戶端發起解析請求時,會首先從各級DNS快取中查詢結果,如果直接返回命中,則無需請求各級網域名稱伺服器。
1)檢查您的瀏覽器快取。
瀏覽器會快取每個網域名稱的解析結果一段時間,當使用者發起請求時,瀏覽器會先查詢自己的快取中是否有想要的結果,如果有直接返回,解析到此結束; 如果沒有更多請求。
2)檢視系統快取。
如果瀏覽器沒有您要查詢的記錄,瀏覽器將進行系統呼叫(在 Windows 中為 gethostbyname)以從系統快取中查詢資訊。
3)檢查路由器快取。
當瀏覽器和系統快取中沒有網域名稱對應的IP時,進入路由器快取進行檢查,以上三個步驟就是客戶端的DNS快取。
4)檢查ISP DNS快取。
如果在使用者客戶端上找不到網域名稱的IP位址,會進入ISP DNS快取進行查詢。 例如,如果您使用的是電信網路,您將轉到電信DNS快取伺服器來查詢它。
如果上述步驟中沒有目標網域名稱的快取記錄,則本地DNS伺服器將開始通過DNS系統發起全域性迭代查詢。
5)本地DNS伺服器首先請求根網域名稱伺服器;
6)根網域名稱伺服器告知的下一級網域名稱伺服器位址;
7)本地DNS伺服器請求頂級網域名稱伺服器;
8)頂級網域名稱伺服器將權威網域名稱伺服器位址告知網域名稱伺服器;
9)本地DNS伺服器請求權威名稱伺服器;
10)權威伺服器將網域名稱對應的IP位址通知本地DNS伺服器;
11) 本地DNS伺服器將解析記錄返回給客戶端瀏覽器。
此時,整個 DNS 解析過程結束,客戶端瀏覽器根據解析記錄啟動對目標 IP 位址的訪問。