天天看點

浏覽器和伺服器是如何通信的?一次完整的HTTP請求過程揭秘

作者:網絡系統技藝者

自我設限,固步自封,唯有突破極限, 才能發掘潛能。大家好,我是每天分享《網絡技術》和《系統運維技術"》的 ”網絡系統技藝者",右上角點"關注" 陪你一起成長,見證更強大的自己。

前言:

當我們在浏覽器中輸入網址并敲擊回車後,經曆了什麼樣的過程,才能在我們的螢幕上呈現出完整的網頁呢?這其中,HTTP(Hypertext Transfer Protocol)協定扮演了一個至關重要的角色。HTTP是一種應用層協定,用于在用戶端和伺服器之間傳輸資料。在這篇文章中,我将會詳細記錄一次完整的HTTP請求過程。我們将從DNS解析開始,逐漸講解建立TCP連接配接、發送HTTP請求、伺服器處理請求、伺服器發送響應、關閉TCP連接配接等過程,希望能夠幫助友友們深入了解HTTP協定的工作原理,以及現代Web應用程式背後的工作機制。

浏覽器和伺服器是如何通信的?一次完整的HTTP請求過程揭秘

簡要流程:

一次完整的HTTP請求過程大概如下: 域名解析 → TCP建連 → HTTP請求 → HTTP響應 → 浏覽器解析 → 浏覽器渲染 (使用者直覺看到的頁面)。其中,域名解析是将域名轉換為IP位址的過程;TCP建連是用戶端與伺服器之間建立連接配接的過程;HTTP請求是用戶端向伺服器發送請求的過程;HTTP響應是伺服器向用戶端傳回響應的過程;浏覽器解析是将HTML、CSS、JS等檔案解析成DOM樹、CSSOM樹、JS引擎可執行代碼的過程;浏覽器渲染是将DOM樹和CSSOM樹結合起來,生成渲染樹,然後進行布局和繪制,最終呈現在使用者面前的過程。

浏覽器和伺服器是如何通信的?一次完整的HTTP請求過程揭秘

詳細過程如下:

1、DNS解析:當你在浏覽器中輸入網址時,首先會發送一個DNS查詢請求,以擷取該網址對應的IP位址。如果該位址已經在本地DNS緩存中,則會直接傳回結果;否則,DNS伺服器将進行遞歸查詢,并傳回結果。

浏覽器和伺服器是如何通信的?一次完整的HTTP請求過程揭秘

2、TCP連接配接:使用解析出來的IP位址,浏覽器會建立與Web伺服器的TCP連接配接。這個過程通常包括“三次握手”,即浏覽器向伺服器發送SYN封包,伺服器傳回SYN-ACK封包,最後浏覽器發送ACK封包确認連接配接。

浏覽器和伺服器是如何通信的?一次完整的HTTP請求過程揭秘

3、發送HTTP請求:當TCP連接配接建立後,浏覽器會向Web伺服器發送HTTP請求。這個請求通常包括請求頭和請求體,請求頭包含請求的方法、URL、協定版本和其他附加資訊,請求體則包含請求所需的資料。

4、伺服器處理請求:當伺服器收到HTTP請求後,會根據請求的URL和其他資訊,确定所需要的資源,然後進行處理。這個處理過程通常包括讀取資料庫、執行業務邏輯、生成響應内容等步驟。

5、伺服器發送響應:當伺服器處理完請求後,會生成HTTP響應,并發送回浏覽器。這個響應包括響應頭和響應體,響應頭包含響應的狀态碼、協定版本和其他附加資訊,響應體則包含所請求的資料。

6、關閉TCP連接配接:當浏覽器接收完響應後,會關閉與Web伺服器的TCP連接配接。這個過程通常包括“四次揮手”,即浏覽器發送FIN封包,伺服器傳回ACK封包,伺服器發送FIN封包,浏覽器傳回ACK封包。

浏覽器和伺服器是如何通信的?一次完整的HTTP請求過程揭秘

該圖檔來源于網絡

以上是HTTP請求的基本過程。在實際的應用中,還可能會涉及到HTTP緩存、代理伺服器、負載均衡、SSL加密等其他複雜的技術。

寫在最後:

自我設限,固步自封,唯有突破極限,才能發掘潛能。以上就是本期整理的《浏覽器和伺服器是如何通信的?一次完整的HTTP請求過程揭秘》,自己經曆過的風雨,是以知道你也會堅強。你的【評論】+【點贊】+【關注】,我會自動解讀為認可。

作者簡介:

我是“網絡系統技藝者”,系統運維工程師一枚,持續分享【網絡技術+系統運維技術】幹貨,早日突破5000粉。