1. 程式人生 > >瀏覽器工作原理2-域名解析

瀏覽器工作原理2-域名解析

當你在位址列輸入網址https://blog.csdn.net/並按下回車的時候,瀏覽器首先需要做的就是域名解析

我們在瀏覽器位址列輸入的通常都是域名,域名其實就是IP地址的代稱。使用域名有兩個好處:

  • 好記。
    使用這一串帶有特殊含義的字元作為域名,而不需要記憶沒有含義的數字。
  • 方便管理
    域名具有唯一性,在資源更改IP地址時,只需要進行新IP地址與恆定域名的轉換,即可實現將資源移動到網路地址拓撲中的不同物理位置1

那麼為了訪問到資源,瀏覽器就需要使用域名系統(DNS - Domain Name System)幫你把域名轉化為IP地址。只有知道了IP地址路由器才知道發請求給誰。

那麼瀏覽器在接收到一個域名解析請求它做了些什麼呢?
(1)
瀏覽器(內心os):我先查查快取。
瀏覽器(內心os):查不到,交給DNS去查吧。

對話解析:瀏覽器當然不會拿到一個域名就傻傻交給DNS去解析,它會首先檢視快取中有沒有解析過的IP地址,查完瀏覽器自身的DNS快取查系統DNS系統快取,如果有且沒有過期的話本次解析愉快結束。如果都沒有的話瀏覽器這時候才會真正呼叫DNS。

(2)
瀏覽器:請問你知道https://blog.csdn.net/IP地址嗎?
LDNS(內心os): 我先查查快取。
LDNS(內心os): 居然查不到,我可是可以解決80%的問題。沒辦法,問問根域名伺服器吧。

對話解析:瀏覽器傳送域名解析請求到LDNS(Local DNS Server),大多數人的LDNS是使用運營商為你自動分配的本地區的域名伺服器。LDNS這時候會查詢自己的快取,如果找到且沒有過期那麼本次解析結束。如果依然沒有找到,LDNS會發起解析請求到根域名伺服器。

(3)
LDNS: 請問你知道https://blog.csdn.net/IP地址嗎?
根域名伺服器: 我不知道https://blog.csdn.net/的IP地址,但我知道net域的地址,你去問問它吧。

LDNS: 好的。

對話解析:LDNS傳送域名解析請求到根域名伺服器,根域名伺服器不知道這個域名對應的IP地址,但是它知道net域(

國際頂級域名)對應的IP地址。於是它把net域對應的地址發給LDNS.

(4)
LDNS: 請問你知道https://blog.csdn.net/IP地址嗎?
net域伺服器: 我不知道https://blog.csdn.net/的IP地址,是我知道blog.csdn.net這個域的DNS地址,你去問問它吧。

LDNS: 好的。

對話解析:LDNS傳送域名解析請求到net域伺服器,net域伺服器不知道這個域名對應的IP地址,但是它知道此域名註冊的域名伺服器的地址,於是它把blog.csdn.net域名對應的DNS地址發給LDNS。

(5)
LDNS: 請問你知道https://blog.csdn.net/IP地址嗎?
域名伺服器(內心os): 我查查先,咦,查到了。
域名伺服器: https://blog.csdn.net/對應的IP地址是XX.XX.XX,它的TTL值是XX

對話解析:域名伺服器會查詢儲存的域名和IP的對映關係表,找到對應的IP地址後連同一個生存時間值TTL(Time To Live)值返回給LDNS2

(6)
LDNS(內心os): 我先快取下來,下一次就不用再問了。
LDNS: https://blog.csdn.net/對應的IP地址是XX.XX.XX,它的TTL值是XX。
系統: 好的,我會告訴瀏覽器。
瀏覽器: 收到。

對話解析:LDNS會將IP地址和域名的對映關係快取下來,然後根據TTL值決定此對映關係被快取的時間。然後通過系統告訴瀏覽器解析到的IP地址3,然後瀏覽器進行下一步動作。

注意:以上為一個典例。現實情況下,多級域名伺服器或GTM(廣域網流量管理)等,都可能會影響域名解析的過程2


  1. https://zh.wikipedia.org/wiki/域名 ↩︎

  2. https://blog.csdn.net/qq_36326947/article/details/72864528 ↩︎ ↩︎

  3. https://www.jianshu.com/p/fbe0e9fa45a6 ↩︎