從輸入url到頁面渲染出來過程

2021-08-30 21:48:47 字數 2478 閱讀 1066

在瀏覽器輸入url後的訪問:

url的組成協議

網域名稱 (有時候也是ip,)

埠號(數字表示,若為http的預設值「:80」可省略)

路徑(以「/」字元區別路徑中的每乙個目錄名稱)

查詢引數(get模式的窗體引數,以「?」字元為起點,每個引數以「&」隔開,再以「=」分開引數名稱與資料,通常以utf8的url編碼,避開字元衝突的問題)

瀏覽器會把輸入的網域名稱解析成對應的ip

檢視瀏覽器內部快取,如果查到網域名稱對應的ip,就傳送和接受引數和資料

檢視本機的host檔案,瀏覽器會在本機的hosts檔案檢視是否有對應的ip伺服器位址。

檢視本地路由器的dns快取,找到對應的ip

檢視網路服務商中dns伺服器

查詢根網域名稱下是否存在。

dns 查詢的過程如下圖所示。

2、如果hosts裡沒有這個網域名稱的對映,則查詢本地dns解析器快取,是否有這個**對映關係,如果有,直接返回,完成網域名稱解析。

3、如果hosts與本地dns解析器快取都沒有相應的**對映關係,首先會找tcp/ip引數中設定的首選dns伺服器,在此我們叫它本地dns伺服器,此伺服器收到查詢時,如果要查詢的網域名稱,包含在本地配置區域資源中,則返回解析結果給客戶機,完成網域名稱解析,此解析具有權威性。

6、如果用的是**模式,此dns伺服器就會把請求**至上一級dns伺服器,由上一級伺服器進行解析,上一級伺服器如果不能解析,或找根dns或把轉請求轉至上上級,以此迴圈。不管是本地dns伺服器用是是**,還是根提示,最後都是把結果返回給本地dns伺服器,由此dns伺服器再返回給客戶機。 

從客戶端到本地dns伺服器是屬於遞迴查詢,而dns伺服器之間就是的互動查詢就是迭代查詢。

查詢到目標ip位址後,則開始建立 tcp 三次握手 ,與目標伺服器建立連線。通過規定的協議(http)向目標主機傳送請求.如果伺服器返回以301之類的重定向,瀏覽器根據相應頭中的location再次傳送請求

伺服器接受請求,處理請求生成html**,返回給瀏覽器,這時的html頁面**可能是經過壓縮的

伺服器:安裝了系統和web-server的主機,可以理解為一台電腦,安裝了系統和軟體來處理資料(硬體)

伺服器接收到了瀏覽器傳送的請求後,根據某個協議,通過web-server把瀏覽器傳送的資料進行打包(包含請求頭,ip位址,請求路徑和查詢引數等)

web-server把資料打包後,傳送給****(比如django、flask、node.js等後端服務)後端服務軟體會根據路徑和查詢引數進行相應處理,返回給瀏覽器對應的資料報(包括http協議組成的**。裡面包含頁面的布局、文字。資料也可能是、指令碼程式,反應頭,反應資料,請求頭等)

瀏覽器接收到返回的資料報,如果有壓縮則首先進行解壓處理

在瀏覽器顯示html時,它會注意到需要獲取其他位址內容的標籤。這時,瀏覽器會傳送乙個獲取請求來重新獲得這些檔案——包括css/js/等資源,這些資源的位址都要經歷乙個和html讀取類似的過程。所以瀏覽器會在dns中查詢這些網域名稱,傳送請求,重定向等等…

2. 將css解析成 css rule tree 。

3. 根據dom樹和css rule tree 來構造 rendering tree。注意:rendering tree 渲染樹並不等同於 dom 樹,因為一些像header或display:none的東西就沒必要放在渲染樹中了。

4. 有了render tree,瀏覽器已經能知道網頁中有哪些節點、各個節點的css定義以及他們的從屬關係。下一步操作稱之為layout,顧名思義就是計算出每個節點在螢幕中的位置。

5. 再下一步就是繪製,即遍歷render樹,(並使用ui後端層)通過顯示卡,繪製每個節點,把內容畫到螢幕上。

dom tree:瀏覽器將html解析成樹形的資料結構。

css rule tree:瀏覽器將css解析成樹形的資料結構。

render tree: dom和cssom合併後生成render tree。

layout: 有了render tree,瀏覽器已經能知道網頁中有哪些節點、各個節點的css定義以及他們的從屬關係,從而去計算出每個節點在螢幕中的位置。

painting: 按照算出來的規則,通過顯示卡,把內容畫到螢幕上。

如果文章對你有幫助,麻煩點讚哦!一起走碼農花路~

從輸入URL到頁面渲染

url請求過程 瀏覽器收到http響應 reference 前人栽樹,後人乘涼,以下為學習筆記。從輸入url到頁面展示,這中間發生了什麼?這是一道經典面試題,涉及到了網路 作業系統 web 等一系列的知識。當我們在位址列中輸入url並按下回車後,瀏覽器裡發生第一件事是觸發解除安裝事件,即 befor...

從輸入URL到渲染頁面發生了什麼?

網域名稱解析 發起tcp三次握手建立連線 建立連線後發起http請求 伺服器響應請求,瀏覽器獲取html原始碼 瀏覽器渲染頁面 然後先上一張比較直觀的圖 因為 http是不是一種面向連線的協議,在應用層中,僅僅是生成了http請求的資訊和資料,但無法直接傳送,所以才需要先建立tcp連線。tcp在將h...

執行環境 從輸入url到渲染整個頁面的過程

輸入url之後,進行 瀏覽器根據ip位址向伺服器傳送http請求 利用tcp協議通過三次握手與伺服器建立連線 伺服器處理http請求,並返回響應資料報給瀏覽器 根據html 生成dom tree 根據css 生成cssom 類似domtree 將dom tree和cssom整合形成render tr...