在瀏覽器位址列中輸入URL後發生了什麼

2021-09-29 04:26:05 字數 1687 閱讀 3530

瀏覽器通過ip路由到你的服務,在tcp3次握手和伺服器建立連線,通過tcp協議開始訪問你的web伺服器,web伺服器得到請求後,開始提供服務,接受請求,之後通過response返回響應給瀏覽器.

1.查詢ip位址

2.建立tcp連線,接入伺服器

3.瀏覽器發起http請求

4.伺服器後台操作並作出http響應

5.頁面解析渲染對映

詳細步驟如下:

查詢ip位址

①瀏覽器解析出url中的網域名稱。

②查詢瀏覽器的dns快取。

③瀏覽器中沒有dns快取,則查詢本地客戶端hosts檔案有無對應的ip位址。

④hosts中無,則查詢本地dns伺服器(運營商提供的dns伺服器)有無對應的dns快取。

⑤若本地dns沒有dns快取,則向根伺服器查詢,進行遞迴查詢。

⑥遞迴查詢從頂級網域名稱開始(如.com),一步步縮小範圍,最終客戶端取得ip位址。

tcp連線與http連線

①http協議建立在tcp協議之上,http請求前,需先進行tcp連線,形成客戶端到伺服器的穩定的通道。俗稱tcp的三次握手。

②tcp連線完成後,http請求開始,請求有多種方式,常見的有get,post等。

③http請求包含請求頭,也可能包含請求體兩部分,請求頭中包含我們希望對請求檔案的操作的資訊,請求體中包含傳遞給後台的引數。

④伺服器收到http請求後,後台開始工作,如負載平衡,跨域等,這裡就是後端的工作了。

⑤檔案處理完畢,生成響應資料報,響應也包含兩部分,響應頭和相應體,響應體就是我們所請求的檔案。

html渲染

①客戶端瀏覽器載入了html檔案後,由上到下解析html為dom樹(dom tree)。

②遇到css檔案,css中的url發起http請求。

③這是第二次http請求,由於http1.1協議增加了connection: keep-alive宣告,故tcp連線不會關閉,可以復用。

④http連線是無狀態連線,客戶端與伺服器端需要重新發起請求--響應。

在請求css的過程中,解析器繼續解析html,然後到了script標籤。

⑤由於script可能會改變dom結構,故解析器停止生成dom樹,解析器被js阻塞,等待js檔案發起http請求,然後載入。這是第三次http請求。js執行完成後解析器繼續解析。

⑥由於css檔案可能會影響js檔案的執行結果,因此需等css檔案載入完成後再執行。

⑦瀏覽器收到css檔案後,開始解析css檔案為cssom樹(css rule tree)。

⑧cssom樹生成後,dom tree與css rule tree結合生成渲染樹(render tree)。

⑨render tree會被css檔案阻塞,渲染樹生成後,先布局,繪製渲染樹中節點的屬性(位置,寬度,大小等),然後渲染,頁面就會呈現資訊。

⑩繼續邊解析邊渲染,遇到了另乙個js檔案,js檔案執行後改變了dom樹,渲染樹從被改變的dom開始再次渲染。

⑪繼續向下渲染,碰到乙個img標籤,瀏覽器發起http請求,不會等待img載入完成,繼續向下渲染,之後再重新渲染此部分。

⑫dom樹遇到html結束標籤,停止解析,進而渲染結束。

從此可以得出**的一些優化的方法:

①減少dns查詢:將伺服器網域名稱的ip資訊加入本地host檔案。

②減少http請求數量,對於使用雪碧圖,對於html檔案和css檔案,js檔案分別進行合併操作。

在瀏覽器位址列輸入URL執行後網頁顯示全過程

你知道當我們在網頁瀏覽器 web browser 的位址列中輸入 url時,web 頁面是如何呈現的嗎?首先你知道dns嗎?dns domain name system 服務是和 http 協議一樣位於應用層的協議。它提供網域名稱到 ip 位址之間的解析服務。計算機既可以被賦予 ip 位址,也可以被...

在瀏覽器位址列輸入URL,按下回車後內部處理過程

這是一道面試會經常問的問題,平時雖然很常見的操作,但是 其底層原理,可能並不是一件簡單的事情,於是我從各處蒐羅整理下全過程,在這裡做分享。第一步 瀏覽器輸入網域名稱 例如輸入 www.csdn.net 瀏覽器會把輸入的網域名稱解析成對應的ip,其過程如下 3.查詢路由器快取 如果1,2步都查詢無果,...

瀏覽器位址列輸入url到頁面顯示

1 瀏覽器通過dns網域名稱解析到ip位址 2 瀏覽器通過tcp協議建立到伺服器的tcp連線 tcp三次握手 3 客戶端 瀏覽器 向web伺服器端傳送http協議包,請求伺服器裡的資源文件 4 伺服器向客戶端傳送http協議應答包 5 客戶端和伺服器斷開連線 tcp四次揮手 客戶端開始解析處理htm...