【一道面試題】從瀏覽器輸入一個地址,發送請求,經歷了哪些過程(面試問題)

步驟

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交互。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章