目錄
-
-
- 1. DNS解析
- 2. 浏覽器根據IP位址向Web伺服器發送一個HTTP請求(伺服器可能會發生重定向)
- 3. 伺服器收到請求并進行處理
- 4. 伺服器傳回一個HTTP響應
- 5. 浏覽器對響應進行解碼,渲染顯示
- 6. 頁面顯示完成,浏覽器發送異步請求
-
1. DNS解析
浏覽器根據輸入的URL去查找對應的IP位址。
- 查找浏覽器緩存。浏覽器會儲存一段時間内通路過的一些網址的DNS資訊,不同浏覽器儲存的時長不等。
- 若未找到對應記錄,浏覽器就會做一個系統調用查找系統緩存。
- 若還未找到對應記錄,浏覽器就會發送一個請求到路由器上,然後路由器在自己的DNS緩存中查找記錄。
- 若還未找到對應記錄,該請求會被發往ISP(網際網路服務提供商,即中國移動、中國電信等),查找ISP緩存DNS的伺服器,即本地DNS伺服器。
- 若還未找到對應記錄,ISP的DNS伺服器就會從根域名伺服器開始進行遞歸搜尋。
- 若還未找到對應記錄,說明該域名不存在(未在網上正式注冊過或域名已過期)
也就是說,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