從輸入URL到頁面加載發(fā)生了什么?
從輸入URL到頁面加載發(fā)生了什么:總體來說分為以下幾個過程: 1.DNS解析 2.TCP連接 3.發(fā)送HTTP請求 4.服務(wù)器處理請求并返回HTTP報文 5.瀏覽器解析渲染頁面 6.連接結(jié)束。
簡述了一下各個過程的輸入輸出作用:
以下是對從輸入 URL 到頁面加載各過程的輸入、輸出或作用的一句話描述:
- DNS 解析: 輸入:用戶在瀏覽器地址欄輸入的域名(如 www.example.com)。輸出:對應(yīng)的 IP 地址(如 192.168.1.1)。作用:將易于記憶的域名轉(zhuǎn)換為計算機能夠識別和用于網(wǎng)絡(luò)通信的 IP 地址,以便瀏覽器與目標服務(wù)器建立連接。
- TCP 連接: 輸入:瀏覽器獲得的服務(wù)器 IP 地址,以及默認或指定的端口號(如 HTTP 協(xié)議默認端口 80,HTTPS 協(xié)議默認端口 443)。輸出:建立起的 TCP 連接通道,為后續(xù)的數(shù)據(jù)傳輸提供可靠的連接基礎(chǔ)。作用:通過三次握手在瀏覽器和服務(wù)器之間建立可靠的端到端連接,確保數(shù)據(jù)能夠準確、有序地傳輸。
- 發(fā)送 HTTP 請求: 輸入:建立好的 TCP 連接,以及根據(jù)用戶輸入的 URL 和操作生成的 HTTP 請求消息(包含請求方法、請求頭、請求體等)。輸出:將 HTTP 請求消息發(fā)送到服務(wù)器。作用:向服務(wù)器傳達瀏覽器的請求意圖,告知服務(wù)器需要獲取的資源以及相關(guān)的請求參數(shù)和要求。
- 服務(wù)器處理請求并返回 HTTP 報文: 輸入:接收到的來自瀏覽器的 HTTP 請求消息。輸出:根據(jù)請求處理結(jié)果生成的 HTTP 響應(yīng)報文(包含狀態(tài)碼、響應(yīng)頭、響應(yīng)體等),并發(fā)送回瀏覽器。作用:服務(wù)器對瀏覽器的請求進行處理,如查找請求的資源、執(zhí)行相關(guān)的業(yè)務(wù)邏輯等,并將處理結(jié)果以 HTTP 響應(yīng)報文的形式返回給瀏覽器。
- 瀏覽器解析渲染頁面: 輸入:接收到的 HTTP 響應(yīng)報文中的 HTML、CSS、JavaScript 等資源內(nèi)容。輸出:在瀏覽器窗口中顯示出完整、可交互的頁面。作用:瀏覽器對獲取到的資源進行解析,構(gòu)建 DOM 樹、CSSOM 樹,進行布局計算和樣式渲染,執(zhí)行 JavaScript 腳本,最終將頁面呈現(xiàn)給用戶。
- 連接結(jié)束: 輸入:瀏覽器和服務(wù)器完成數(shù)據(jù)傳輸和交互,瀏覽器已經(jīng)成功渲染頁面,或在數(shù)據(jù)傳輸過程中出現(xiàn)異常情況。輸出:關(guān)閉建立的 TCP 連接,釋放相關(guān)的網(wǎng)絡(luò)資源。作用:結(jié)束瀏覽器與服務(wù)器之間的網(wǎng)絡(luò)連接,釋放占用的網(wǎng)絡(luò)資源,以提高資源利用率并為其他可能的連接請求騰出空間。