從輸入url到瀏覽器呈現網頁發生了什麼?

2022-05-01 09:45:08 字數 1821 閱讀 7893

大致能分成兩個部分:網路通訊與頁面渲染

一.網路通訊

網際網路各個網路裝置間的通訊均基於tcp/ip協議,此協議將整個過程進行分層,由上至下分別為: 應用層、傳輸層、網路層和資料鏈路層

1.輸入url

2.應用層用dns解析網域名稱(dns協議)

解析url網域名稱,檢查本地是否有對應的ip位址,有則返回,沒有則請求上級dns伺服器

備註:dns domain name system,由解析器和網域名稱伺服器組成,主要用於解析網域名稱為ip位址

3.應用層傳送http請求(http協議)

http請求由請求報頭與請求體組成,請求體為請求的資料,請求頭包含請求方式(get、post。。)協議(http、https。。)是否包含cookie等資訊

4.傳輸層傳輸報文(tcp協議)

為了方便傳輸將ip協議大塊的資料分割為以報文段為單位的小資料報,並為其標號,方便服務端還原。

為了保證傳輸的安全可靠,將經歷tcp三次握手:

傳送端傳送帶有syn標誌的資料報給接收端,在一定的時間內等待回覆;

接受端接收到資料報並確認無誤後傳送帶有syn/ack標誌的資料報給傳送端,代表已接收,確認無誤;

傳送端再傳送帶有ack標誌的資料報給接收端代表握手成功。

syn: synchronize 同步

ack:acknowledgement 確認

5.網路層查詢mac位址(ip協議)

ip協議的作用是把分割好得報文傳送給服務端,但在此之前得先知道對方的mac位址。

ip位址與mac一一對應,ip位址能隨意換,但mac不會變,提供arp協議查詢到mac位址

mac: media access control **訪問控制,可理解為實體地址,硬體位址,每個裝置都有獨一無二的mac位址

6.資料鏈路層傳輸資料

提供資料鏈路層傳輸資料,至此客戶端傳送完畢。

7.服務端接收資料

客戶端在資料鏈路層獲取資料,層層上傳至應用層,在傳遞過程中將資料報還原成完整的http請求

8.服務端響應請求

服務端找到資源並返回響應報文,響應報文中包括乙個重要的資訊——狀態碼。狀態碼由三位數字組成,其中比較常見的是200 ok表示請求成功。301表示永久重定向,即請求的資源已經永久轉移到新的位置。在返回301狀態碼的同時,響應報文也會附帶重定向的url,客戶端接收到後將http請求的url做相應的改變再重新傳送。404 not found 表示客戶端請求的資源找不到。

9.請求成功後返回html檔案,進入頁面渲染階段

二、頁面渲染

1.解析html構建dom樹,即由節點構成的樹

解析和構建同時進行,由上至下地進行解析,這裡注意幾點:

a.外部樣式 載入非同步(多個css檔案非同步載入,且不會阻塞dom樹的構建)但會阻塞頁面渲染,阻塞js執行

b.js檔案     載入同步載入與執行都會阻塞之後的操作

如何使樣式不阻塞js?

w1.如果外部指令碼加上async(ir為defer),設為非同步,則外部樣式不會阻塞其執行

w2.動態載入的外部樣式不影響指令碼的執行

e.script一般放在最後面,因為它的載入和執行會阻塞頁面的渲染,也就是說它的載入執行是同步的

2.(style)構建渲染樹,即將css樣式應用到dom樹上,構建cssom樹

webkit稱之為附著

3.(layout)布局

樹節點的大小、位置資訊等的運算,構建渲染樹

4.(painting)繪製

將樹繪製在螢幕上。

本文總結自:與

從瀏覽器位址列輸入URL到瀏覽器呈現資料全過程解析

一 輸入裝置 或貼上 輸入 url,按下 enter鍵 或其他按鈕開始請求。二 瀏覽器開始解析 url 關於 url 到相關知識點 什麼是uri,url以及urn,你真的理解了嗎。1 url 是否合法 2 url 中的字元轉換 三 檢查本地快取,根據快取情況決定下一步的動作 1 強快取 cache ...

從使用者輸入URL到瀏覽器呈現頁面經過了哪些過程

目錄 tcp連線 udphttp協議 urldns http請求發起和響應 不單單只講這個點,還順帶其他知識點,自己要多學多接觸,自己要努力。tcp transmission control protocol,傳輸控制協議 他有三個行為 1 客戶端傳送請求給服務端 2 服務端收到請求,確認請求,返回...

從瀏覽器位址列輸入url到頁面呈現

從瀏覽器dns快取 從系統dns快取中去,本機系統hosts檔案中如果有對映,就返回對映的ip位址 從區域網路由器中dns快取獲取對映位址 從dns伺服器快取獲取對映位址 伺服器中查詢,com baidu www 2.tcp連線,三次握手 瀏覽器發起,詢問伺服器是否支援響應 伺服器發起,回覆瀏覽器已...