瀏覽器工作原理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域(
(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。