步驟
1- 輸入網址
2- 緩存解析
3- 域名解析
4- tcp連接,三次握手
5- 頁面渲染
一:輸入網址
那肯定是輸入你要訪問的網站網址了,俗稱url;
二:緩存解析
瀏覽器獲取了這個url,當然就去解析了,它先去緩存當中看看有沒有,從 瀏覽器緩存-系統緩存-路由器緩存 當中查看,如果有從緩存當中顯示頁面,然後沒有那就進行步驟三; 緩存就是把你之前訪問的web資源,比如一些js,css,圖片什麼的保存在你本機的內存或者磁盤當中。 (1) 在chrome瀏覽器中輸入網址: chrome://chrome-urls/ chrome-urls是一個看到所有的Chrome支持的僞RUL,找到其中的chrome://appcache-internals/ 可以看見chrome的本地緩存地址:Instances in: C:\Users\User\AppData\Local\Google\Chrome\User Data\Default (0) (2)在chrome中訪問www.baidu.com/,打開開發者模式,不勾選 Disable cache
圈出來的部分顯示了資源的來源: from disk cache : 將資源緩存到磁盤中,等待下次訪問時不需要重新下載資源,而直接從磁盤中獲取; from memory cache :將資源緩存到內存中,等待下次訪問時不需要重新下載資源,而直接從內存中獲取; 可以看見資源的來源是緩存當中,從緩存當中獲取了這些就可以直接顯示在頁面中,不需要發送http請求;
三: 域名解析
和步驟二一樣,做一個訪問新頁面的操作juejin.im/timeline,同樣打開開發者模式,,不勾選 Disable cache
可以發現它的來源再也不是: from disk cache 或者from memory cache ,即發送http請求。 那麼在發送http請求前,瀏覽器做了什麼? 在發送http之前,需要進行DNS解析即域名解析。 DNS解析:域名到IP地址的轉換過程。域名的解析工作由DNS服務器完成。解析後可以獲取域名相應的IP地址
四:tcp連接,三次握手
在域名解析之後,瀏覽器向服務器發起了http請求,tcp連接,三次握手建立tcp連接。TCP協議是面向連接的,所以在傳輸數據前必須建立連接
(1)客戶端向服務器發送連接請求報文; (2)服務器端接受客戶端發送的連接請求後後回覆ACK報文,併爲這次連接分配資源。 (3)客戶端接收到ACK報文後也向服務器端發生ACK報文,並分配資源。 這樣TCP連接就建立了。 在此之後,瀏覽器開始向服務器發送http請求,請求數據包。請求信息包含一個頭部和一個請求體。
五:服務器收到請求
服務器收到瀏覽器發送的請求信息,返回一個響應頭和一個響應體。
六:頁面渲染
瀏覽器收到服務器發送的響應頭和響應體,進行客戶端渲染,生成Dom樹、解析css樣式、js交互。