天天看點

浏覽器輸入一個網址後發生了什麼

目錄

      • 1. DNS解析
      • 2. 浏覽器根據IP位址向Web伺服器發送一個HTTP請求(伺服器可能會發生重定向)
      • 3. 伺服器收到請求并進行處理
      • 4. 伺服器傳回一個HTTP響應
      • 5. 浏覽器對響應進行解碼,渲染顯示
      • 6. 頁面顯示完成,浏覽器發送異步請求

1. DNS解析

浏覽器根據輸入的URL去查找對應的IP位址。

  1. 查找浏覽器緩存。浏覽器會儲存一段時間内通路過的一些網址的DNS資訊,不同浏覽器儲存的時長不等。
  2. 若未找到對應記錄,浏覽器就會做一個系統調用查找系統緩存。
  3. 若還未找到對應記錄,浏覽器就會發送一個請求到路由器上,然後路由器在自己的DNS緩存中查找記錄。
  4. 若還未找到對應記錄,該請求會被發往ISP(網際網路服務提供商,即中國移動、中國電信等),查找ISP緩存DNS的伺服器,即本地DNS伺服器。
  5. 若還未找到對應記錄,ISP的DNS伺服器就會從根域名伺服器開始進行遞歸搜尋。
  6. 若還未找到對應記錄,說明該域名不存在(未在網上正式注冊過或域名已過期)

也就是說,DNS根據域名查詢IP位址的過程為:浏覽器緩存——作業系統緩存——本地域名伺服器緩存——根域名伺服器

2. 浏覽器根據IP位址向Web伺服器發送一個HTTP請求(伺服器可能會發生重定向)

浏覽器和伺服器建立連接配接後,浏覽器給web伺服器發送一個HTTP請求,方式為GET,例如通路www.baidu.com,本質是在建立起的TCP連接配接中,按照HTTP協定标準發送一個索要網頁的請求。

伺服器發生重定向的話,浏覽器就會跟蹤重定向位址,發送另一個擷取請求到該位址。

3. 伺服器收到請求并進行處理

4. 伺服器傳回一個HTTP響應

5. 浏覽器對響應進行解碼,渲染顯示

在浏覽器沒有完整接受全部HTML文檔時,它就已經開始顯示這個頁面了,如果是個靜态的頁面,到此就基本結束了。
如果是是動态的,那麼在浏覽器顯示HTML時,會擷取嵌入在HTML中的對象,浏覽器會發送擷取請求來重新獲得這些檔案。這些請求都要經曆一個和HTML讀取類似的過程。 

對于靜态的頁面内容,浏覽器通常會進行緩存,而對于動态的内容,浏覽器通常不會進行緩存。

           

6. 頁面顯示完成,浏覽器發送異步請求

頁面顯示完成後用戶端仍與伺服器端保持着聯系,進而及時更新一些頁面資訊。

在浏覽器中執行的JavaScript代碼會給伺服器發送異步請求。這個異步請求發送給特定的位址,它是一個按照程式構造的擷取或發送請求。

參考1

參考2

參考3

繼續閱讀