在瀏覽器中輸入乙個URL的位址會發生什麼?

2021-09-19 11:15:04 字數 2710 閱讀 7784

摘要:我們使用瀏覽器去瀏覽**但是我們卻不知道這個過程中到底發生了什麼,本篇博文就是講述在瀏覽器輸入url之後到瀏覽器展現出頁面這一過程中都是發生了什麼,是如何發生的。dns網域名稱解析 -> 建立tcp連線 -> 傳送http請求 -> 伺服器處理請求 -> 返回響應結果 -> 關閉tcp連線 -> 瀏覽器解析html -> 瀏覽器布局渲染。

一、dns網域名稱解析

我們在瀏覽器輸入**,其實就是要向伺服器請求我們想要的頁面內容,所有瀏覽器首先要確認的是網域名稱所對應的伺服器在**。將網域名稱解析成對應的伺服器ip位址這項工作,是由dns伺服器來完成的。客戶端收到你輸入的網域名稱位址後,它首先去找本地的hosts檔案,檢查在該檔案中是否有相應的網域名稱、ip對應關係,如果有,則向其ip位址傳送請求,如果沒有,再去找dns伺服器。一般使用者很少去編輯修改hosts檔案。

二、建立tcp連線

客戶端傳送乙個帶有syn標誌的資料報給服務端,服務端收到後,回傳乙個帶有syn/ack標誌的資料報以示傳達確認資訊,最後客戶端再回傳乙個帶ack標誌的資料報,代表握手結束,連線成功。

上圖也可以這麼理解:

客戶端:「你好,在家不,有你快遞。」

服務端:「在的,送來就行。」

客戶端:「好嘞。」

三、傳送http請求

與伺服器建立了連線後,就可以向伺服器發起請求了。這裡我們先看下請求報文的結構,在瀏覽器中檢視報文首部(以google瀏覽器為例):

請求行包括請求方法、uri、http版本。首部字段傳遞重要資訊,包括請求首部字段、通用首部欄位和實體首部字段。我們可以從報文中看到發出的請求的具體資訊。具體每個首部欄位的作用,這裡不做過多闡述。

四、伺服器處理請求

伺服器端收到請求後的由web伺服器(準確說應該是http伺服器)處理請求,諸如apache、ngnix、iis等。web伺服器解析使用者請求,知道了需要排程哪些資源檔案,再通過相應的這些資源檔案處理使用者請求和引數,並呼叫資料庫資訊,最後將結果通過web伺服器返回給瀏覽器客戶端。

五、返回響應結果

在響應結果中都會有個乙個http狀態碼,比如我們熟知的200、301、404、500等。通過這個狀態碼我們可以知道伺服器端的處理是否正常,並能了解具體的錯誤。

狀態碼由3位數字和原因短語組成。根據首位數字,狀態碼可以分為五類:

六、關閉tcp連線

為了避免伺服器與客戶端雙方的資源占用和損耗,當雙方沒有請求或響應傳遞時,任意一方都可以發起關閉請求。與建立tcp連線的3次握手類似,關閉tcp連線,需要4次握手。

上圖可以這麼理解:

客戶端:「兄弟,我這邊沒資料要傳了,咱關閉連線吧。」

服務端:「收到,我看看我這邊有木有資料了。」

服務端:「兄弟,我這邊也沒資料要傳你了,咱可以關閉連線了。」

客戶端:「好嘞。

七、瀏覽器解析html瀏覽器通過解析html,生成dom樹,解析css,生成css規則樹,然後通過dom樹和css規則樹生成渲染樹。渲染樹與dom樹不同,渲染樹中並沒有head、display為none等不必顯示的節點。

要注意的是,瀏覽器的解析過程並非是串連進行的,比如在解析css的同時,可以繼續載入解析html,但在解析執行js指令碼時,會停止解析後續html,這就會出現阻塞問題,關於js阻塞相關問題,這裡不過多闡述,後面會單獨開篇講解。

八、瀏覽器布局渲染

根據渲染樹布局,計算css樣式,即每個節點在頁面中的大小和位置等幾何資訊。html預設是流式布局的,css和js會打破這種布局,改變dom的外觀樣式以及大小和位置。這時就要提到兩個重要概念:replaint和reflow。

replaint:螢幕的一部分重畫,不影響整體布局,比如某個css的背景色變了,但元素的幾何尺寸和位置不變。

reflow: 意味著元件的幾何尺寸變了,我們需要重新驗證並計算渲染樹。是渲染樹的一部分或全部發生了變化。這就是reflow,或是layout。

所以我們應該儘量減少reflow和replaint,我想這也是為什麼現在很少有用table布局的原因之一。

最後瀏覽器繪製各個節點,將頁面展示給使用者。

當你在瀏覽器中輸入乙個位址(一) 瀏覽器檢查位址

瀏覽器是我們日常都會用的乙個軟體,那麼,當你向瀏覽器的位址列輸入乙個位址 url 時,它背後究竟發生了哪些故事呢?對於瀏覽器來說,一般可以支援兩種位址的輸入 ip 192.直接訪問和通過網域名稱 www.com 訪問。在你輸入乙個位址後,瀏覽器最先做的就是檢查你的位址是否 合法 譬如,用ip的時候有...

在瀏覽器中輸入乙個url發生了什麼?

有這樣乙個經典的面試題 在瀏覽器中輸入乙個url 例如 www.baidu.com 然後回車,這期間都經歷了什麼?請暫停下來,不要繼續看。閉上眼思考一下答案。首先我們普及一些基本概念。1.dns,一般指網域名稱系統,提供將網域名稱轉換為對應ip的服務。2.ip,網際互連協議。通常用它指計算機的位址,...

瀏覽器中輸入乙個網域名稱位址

從瀏覽器中輸入乙個網域名稱位址,我們會經歷哪些過程,這篇文章不會去細化到每乙個過程的具體實現,後面的文章會陸續告訴你。那麼我們應該關注哪些東西呢?瀏覽器 網路 伺服器 瀏覽器 協議名稱 伺服器名 網域名稱 資源路徑 引數瀏覽器客戶端解析好我們輸入的位址以後,解析出網域名稱,再根據網域名稱解析出ip位...