傳送一次 HTTP 請求背後經歷了什麼

2021-10-10 10:18:20 字數 1271 閱讀 2794

當我們在瀏覽器的位址列填上www.baidu.com並敲下回車時,瀏覽器和 web 伺服器之間經歷了什麼樣的操作?它們之間的通訊連線是怎麼建立?主要有以下 5 個步驟:

1、網域名稱解析

1.1、瀏覽器首先會去搜尋自己本身的 dns 快取資料,如果存在對應的快取,則解析結束,如果沒有則會執行下面步驟的解析

1.2、搜尋作業系統本身的 dns 快取資料,同樣的如果找到了對應的快取,則解析結束,如果沒有對應的快取則會執行下面步驟的解析

1.3、嘗試去讀取系統中的hosts檔案,看看檔案中是否存在對應的網域名稱 - ip 對映,如果有則解析結束,如果沒有則繼續向下面步驟執行

1.4、瀏覽器向 dns 系統發起請求,向本地配置的首選 dns 伺服器發起網域名稱解析請求

2、建立 tcp 連線

經過步驟 1 之後已經解析網域名稱得到了對應的ip 位址,瀏覽器會通過乙個隨機的埠(1024 < 埠 < 65535)向 web 伺服器的80埠發起 tcp 連線請求(即三次握手)。

第一次握手:建立連線。客戶端傳送連線請求報文,將 syn 位置為 1, sequence number 為 x;然後,客戶端進入 syn_send 狀態,等待伺服器的確認

第二次握手:伺服器收到 syn 報文段。伺服器收到客戶端的 syn 報文段,需要對這個 syn 報文段進行確認,設定 acknowledgment number 為 x+1(sequence number+1);同時,自己自己還要傳送 syn 請求資訊,將 syn 位置為 1,sequence number 為 y;伺服器端將上述所有資訊放到乙個報文段(即 syn+ack 報文段)中,一併傳送給客戶端,此時伺服器進入 syn_recv 狀態;

第三次握手:客戶端收到伺服器的 syn+ack 報文段。然後將 acknowledgment number 設定為 y+1,向伺服器傳送 ack 報文段,這個報文段傳送完畢以後,客戶端和伺服器端都進入 established 狀態,完成 tcp 三次握手。

3、傳送 http 請求

建立了 tcp 連線之後,瀏覽器會向 web 伺服器傳送請求,如:get/user/hello.jsp http/1.1,並附帶相應的請求報文資訊。

4、 web 伺服器響應請求,並返回響應報文

當 web 伺服器接收到請求之後會做相應的處理,然後響應請求,如:http/1.1 200 ok,並返回響應的報文資訊。

5、瀏覽器解析響應報文 html,並請求 html **中的資源

一次完整的HTTP請求所經歷的步驟

http通訊機制是在一次完整的http通訊過程中,web瀏覽器與web伺服器之間將完成下列7個步驟 1.建立tcp連線 在http工作開始之前,web瀏覽器首先要通過網路與web伺服器建立連線,該連線是通過tcp來完成的,該協議與ip協議共同構建internet,即著名的tcp ip協議族,因此in...

一次完整的HTTP請求

一次完整的http請求過程從tcp三次握手建立連線成功後開始,客戶端按照指定的格式開始向服務端傳送http請求,服務端接收請求後,解析http請求,處理完業務邏輯,最後返回乙個http的響應給客戶端,http的響應內容同樣有標準的格式。無論是什麼客戶端或者是什麼服務端,大家只要按照http的協議標準...

一次完整的HTTP請求

一次完整的http請求過程從tcp三次握手建立連線成功後開始,客戶端按照指定的格式開始向服務端傳送http請求,服務端接收請求後,解析http請求,處理完業務邏輯,最後返回乙個http的響應給客戶端,http的響應內容同樣有標準的格式。無論是什麼客戶端或者是什麼服務端,大家只要按照http的協議標準...