經典問題:在瀏覽器輸入一個url后,會發生什么事情呢?
(1)假設是簡單的http請求(GET),IPV4,無代理。
-
瀏覽器先查看瀏覽器緩存-系統緩存-路由器緩存,若緩存中有,請略過中間步驟,直接跳到第9步~若沒有,則按照下面的步驟進行操作。
-
瀏覽器從url中解析出服務器的主機名,並將主機名轉換成服務器的IP地址。PS:DNS查找域名的過程
-
瀏覽器從url中解析出端口號,默認80
-
瀏覽器建立一條與服務器的tcp連接(建立過程:三次握手)。
PS:一個完整的TCP連接 -
瀏覽器通過tcp連接向服務器發送http請求,請求數據包。
-
服務器處理HTTP請求,返回響應。
-
瀏覽器檢查HTTP響應是否為一個重定向(3XX結果狀態碼)、一個驗證請求(401)、錯誤(4XX、5XX)等等,這些都需要根據具體情況分類處理。PS:瀏覽器對於常見HTTP狀態碼的反應
-
瀏覽器接收HTTP響應並且可能關掉TCP連接,或者是重新建立連接使用新情求,獲得新響應。
-
瀏覽器解碼響應,如果響應可以緩存,則存入緩存。
-
瀏覽器顯示HTML頁面。
-
瀏覽器發送請求獲取嵌入在HTML中的資源(html,css,javascript,圖片,音樂······),對於未知類型,會彈出對話框。
-
瀏覽器發送異步請求。
-
頁面全部渲染結束。