http請求過程

2021-09-13 19:49:23 字數 2143 閱讀 7441

一、大致流程

根據網域名稱和 dns 解析到伺服器的ip位址 (dns + cdn)

通過arp協議獲得ip位址對應的物理機器的mac位址

瀏覽器對伺服器發起 tcp 3 次握手

建立 tcp 連線後發起 http 請求報文

伺服器響應 http 請求,將響應報文返回給瀏覽器

短連線情況下,請求結束則通過 tcp 四次揮手關閉連線,長連線在沒有訪問伺服器的若干時間後,進行連線的關閉

瀏覽器得到響應資訊中的 html **, 並請求 html **中的資源(如js、css、等)

瀏覽器對頁面進行渲染並呈現給使用者

二、深入分析

在網路協議方面,可以從三個方面深入分析

dns解析過程

tcp連線過程(三次握手、四次揮手)

http請求響應過程

2.1 dns解析過程(udp通訊)

在這裡插入描述

三種型別的 dns 伺服器,根 dns 伺服器,頂級域 dns 伺服器和權威 dns 伺服器。

首先瀏覽器會檢查瀏覽器自身的dns快取中,是否有網域名稱對應的dns快取(chrome快取1分鐘,大概有1000條快取),沒有的話進入第二步,否則解析完成

接下來去檢視系統的hosts檔案(c:\windows\system32\drivers\etc)是否有網域名稱對應的ip位址,如果找到則停止解析,否則進入第三步

瀏覽器發起dns系統呼叫,向本地配置的首選dns伺服器發起網域名稱解析請求(通過udp協議,向dns的53埠發起請求)

首先請求會在運營商的**dns伺服器(本地伺服器)**上進行請求,如果找到對應的條目,且沒有過期,則解析成功,否則進入第五步

運營商的dns伺服器,根據解析請求,迭代查詢,首先找到根網域名稱伺服器的ip位址(這個dns伺服器內建13臺根域dns的ip位址),然後找到根域的dns位址,傳送請求

根域伺服器收到請求後,根據網域名稱,返回對應的頂級域的伺服器ip位址,並返回給運營商dns伺服器

運營商dns伺服器接收到根網域名稱伺服器傳回來的頂級網域名稱伺服器ip位址後,向頂級網域名稱伺服器傳送請求

頂級網域名稱伺服器接收到請求後,返回該網域名稱對應的權威網域名稱伺服器的ip位址,並返回給執行商dns伺服器。

運營商dns伺服器獲得權威網域名稱伺服器的響應資訊後,返回給請求的主機,dns解析完成。

dns主要是通過udp通訊,報文結構主要分為頭部header、查詢部分question、應答部分answer/authority/addition。

2.2 tcp 連線過程(3次握手 4次揮手)

三次握手

在這裡插入描述

第一步:客戶端向服務端傳送乙份特殊的 tcp 報文,該報文並不包含應用層的資料,是乙份特殊的報文,它的 tcp 首部中 syn 字段值為 1 。除此之外,客戶端還會隨機生成乙個初始序號,填在報文的「序號」字段,代表當前報文的序號是這個,並且我後續的分組會基於這個序號遞增。然後該報文將會經網路層、鏈路層、物理層傳送到服務端。

第二步:如果分組丟失了,那麼客戶端會經過某個時間間隔再次嘗試傳送。而如果分組準確的到達服務端了,服務端拆開 tcp 首部會看到,這是乙個特殊的 syn 握手報文,於是為此次連線分配快取等資源。

接著服務端開始構建響應報文,syn 是乙個用於同步需要的字段,響應報文中依然會被置為 1,並且服務端也將隨機生成乙個初始序號放置的響應報文的序號欄位中。

最後,服務端還會為響應報文中的確認字段賦值,這個值就是客戶端發過來的那個序號值加一。

整體上的意思就是說,「我同意你的連線請求,我的初始序號為 ***,你的初始序號我收到了,我等著你的下乙個分組到來」

第三步:客戶端收到服務端的響應報文,於是分配客戶端 tcp 連線所必須的快取等資源,於是連線已經建立。

四次揮手

在這裡插入描述

第一步:客戶端構建乙份特殊的 tcp 報文,該報文首部字段 fin 被置為 1,然後傳送該報文。

第二步:服務端收到該特殊的 fin 報文,於是響應客戶端乙個 ack 報文,告訴客戶端,請求關閉的報文已經收到,我正在處理。

第三步:服務端傳送乙個 fin 報文,告訴客戶端,我將要關閉連線了。

第四步:客戶端返回乙個 ack 響應報文,告訴服務端,我收到你剛才發的報文了,我已經確認,你可以關閉連線了。

當服務端收到客戶端傳送的 ack 響應報文時,將釋放服務端用於該 tcp 連線的所有資源,與此同時,客戶端也會定時等待一定時間後完全釋放自己用於該連線的相關資源。

HTTP請求過程詳解

步驟1 瀏覽器首先向伺服器傳送http請求,請求包括 方法 get還是post,get僅請求資源,post會附帶使用者資料 路徑 full url path 網域名稱 由host頭指定 host www.sina.com.cn 以及其他相關的header 如果是post,那麼請求還包括乙個body,...

HTTP請求過程詳解

步驟1 瀏覽器首先向伺服器傳送http請求,請求包括 方法 get還是post,get僅請求資源,post會附帶使用者資料 路徑 full url path 網域名稱 由host頭指定 host www.sina.com.cn 以及其他相關的header 如果是post,那麼請求還包括乙個body,...

HTTP完整請求過程

http請求報文 http響應報文 通俗來講,他就是計算機通過網路進行通訊的規則,是乙個基於請求與響應,無狀態的,應用層的協議,常基於tcp ip協議傳輸資料。目前任何終端 手機,膝上型電腦。之間進行任何一種通訊都必須按照http協議進行,否則無法連線。有時需要對使用者之前的http通訊狀態進行儲存...