從發出http請求到伺服器應答的主要過程

2021-08-28 18:32:04 字數 2416 閱讀 3281

一、從發出http請求到伺服器應答的主要過程

1.連線:向伺服器傳送請求之前需要建立連線,通過dns伺服器建立套接字、建立連線、收發資料等操作查詢ip位址,再建立socket連線。

2.請求:連線成功

後,向web伺服器傳送

http訊息格式的

請求,包括get、post等命令。

3.應答:web伺服器收到請求

後,從它的文件空間中搜尋子目錄index的檔案index.

html,並把其傳送給web伺服器,再將具體資訊傳遞歸瀏覽器。

4.關閉連線:

web瀏覽器與web伺服器斷開,以保證其他web瀏覽器能與web伺服器建立連線。

二、客戶端發出請求到伺服器做出相應經歷的步驟

瀏覽器解析url

將輸入的**進行解析,拆分出伺服器的名字以及路徑名。

(2)通過dns查詢ip位址

socket 庫提供查詢 ip 位址的功能,用於呼叫網路功能的程式元件集合,通過socket、協議棧、網絡卡和dns伺服器查詢ip位址,委託協議棧傳送訊息時通過①建立套接字②將管道連線到伺服器端的套接字上③收發資料④斷開管道並刪除套接字。

(3)向伺服器傳送請求

瀏覽器確定了 web 伺服器和檔名,再根據這些資訊來生成 http 請求訊息,使用get或post方法等傳送請求。

(4)伺服器接收操作

網絡卡將接收到的訊號轉換成數字資訊, mac 模組將網路包從訊號還原為數字資訊,校驗 fcs,並存入緩衝區,網絡卡驅動會根據 mac 頭部判斷協議型別,並將包交給相應的協議棧。

ip模組會進行接收操作,協議棧的ip模組會檢查 ip 頭部,判斷是不是發給自己的並且判斷網路包是否經過分片,再將包轉交給 tcp 模組或 udp

模組。③tcp模組處理連線包和資料報,收到的是發起連線的包時,則tcp模組會確認tcp頭部的控制位syn,檢查接收方埠號,為相應的等待連線套接字複製乙個新的副本,記錄傳送方 ip 位址和埠號等資訊。

收到資料報時tcp模組會根據收到的包的傳送方ip位址、傳送方埠號、接收方 ip 位址、接收方埠號找到相對應的套接字,將資料塊拼合起來並儲存在接收緩衝區中,向客戶端返回ack。

④當資料收發完成後,便開始執行tcp模組便開始執行斷開操作。

(5)伺服器解釋請求並作出響應

將請求的 uri 轉換為實際的檔名,再執行 cgi 程式最終返回響應訊息。

(6)瀏覽器接受相應並顯示內容

web伺服器呼叫socket庫的write,將響應訊息交給協議棧,協議棧會將資料拆分成多個網路包最終到達客戶端,判斷響應訊息中的資料屬於哪種型別,最終根據資料型別呼叫用於顯示內容的程式。

三、資料的http請求過程所經歷的層次

客戶端的應用層——客戶端的傳輸層——客戶端的網路層——客戶端的鏈路層——物理——伺服器的鏈路層——伺服器的網路層——伺服器的傳輸層——伺服器的應用層

(ps:對上述層次連線的理解可能有不準確的地方)

應用層:應用層是網路服務與使用者程式間的乙個介面,每次都請求都會經過客戶端的應用層

(http協議

)。過程:確定傳送資料的內容,將這些資料放到乙個緩衝區,然後形成應用層的報文data。

傳輸層:向高層提供可靠的端到端的網路資料流服務

,請求從應用層到

客戶端的傳輸層(tcp或udp協議)

。過程:資料是通過傳輸層傳送,這些資料在傳輸層被打上包頭,主要包含埠號以及tcp的各種制資訊,組成了tcp的資料傳送單位segment。

3.網路層:

網路層負責在源和終點之間建立連線。

4.鏈路層:

資料鏈路層通過物理網路鏈路提供資料傳輸。

過程:將mac位址及鏈路控制資訊加到資料報裡形成frame。frame在鏈路層協議下,完成了相鄰節點間的資料傳輸,完成連線建立。

5.物理層:

負責最後將資訊編碼成電流脈衝或其它訊號用於網上傳輸。

前端(伺服器應答)

1.1 輸入 當你開始輸入 比如www.cnblogs.com時瀏覽器就可以在書籤或者歷史記錄裡面 1.2.1 請求發起後,瀏覽器首先會解析這個網域名稱,首先它會檢視本地硬碟的 hosts 文 件,看看其中有沒有和這個網域名稱對應的規則,如果有的話就直接使用 hosts 檔案 裡面的 ip 位址。1...

面試 http請求從客戶端到伺服器整個鏈路的過程

瀏覽器會去請求dns伺服器,獲得與網域名稱相對應的ip http協議 dns協議 ip協議 三次握手,建立tcp連線,形成乙個session會話 tcp udp協議 瀏覽器傳送request包,伺服器接收後對其進行解析。如果請求資源包含動態語言的內容,伺服器將會呼叫動態語言的解釋引擎進行解釋。請求被...

servlet 伺服器HTTP請求頭說明

accept 用於告訴伺服器,客戶機支援的資料型別。accept charset 用於告訴伺服器,客戶機採用的編碼。accept language 客戶機的語言環境。host 客戶機通過該頭告訴伺服器,想訪問的主機名。if modified since 客戶機通過這個頭告訴伺服器,資源的快取時間。如...