簡述
簡單來說,發生了三件事情
- 瀏覽器將請求發送到服務器
- 服務器根據請求返回對應的內容
- 瀏覽器將返回的內容解析成我們所見的頁面
面試的時候有些面試官會問這個問題,可按如下流程作答:
1、首先,在瀏覽器地址欄中輸入url
2、瀏覽器先查看瀏覽器緩存-系統緩存-路由器緩存,如果緩存中有,會直接在屏幕中顯示頁面內容。若沒有,則跳到第三步操作。
3、在發送http請求前,需要域名解析(DNS解析),解析獲取相應的IP地址。
4、瀏覽器向服務器發起tcp連接,與瀏覽器建立tcp三次握手。
5、握手成功後,瀏覽器向服務器發送http請求,請求數據包。
6、服務器處理收到的請求,將數據返回至瀏覽器
7、瀏覽器收到HTTP響應
8、讀取頁面內容,瀏覽器渲染,解析html源碼
9、生成Dom樹、解析css樣式、js交互
10、客戶端和服務器交互
11、ajax查詢
其中,步驟2的具體過程是:
瀏覽器緩存:瀏覽器會記錄DNS一段時間,因此,只是第一個地方解析DNS請求;
操作系統緩存:如果在瀏覽器緩存中不包含這個記錄,則會使系統調用操作系統,獲取操作系統的記錄(保存最近的DNS查詢緩存);
路由器緩存:如果上述兩個步驟均不能成功獲取DNS記錄,繼續搜索路由器緩存;
ISP緩存:若上述均失敗,繼續向ISP搜索。