在 聊聊 http 協議的知識點 中介紹了 http 協議主要負責服務端和客戶端的資料傳輸,資料傳輸主要分為 2 塊:一是請求資料,客戶端向服務端請求資料;二是響應資料:服務端向客戶端響應資料,然而請求和響應都是通過請求報文和響應報文來完成的。今天我將帶大家了解 http 協議請求報文和響應報文的組成部分有哪些。
在 【http **】中將請求報文和響應報文主要分為 2 塊:報文首部和報文主題,具體如下圖所示:
為了方便理解,我將 http 請求報文和響應報文做了如下拆分:
http 請求報文組成部分:請求行、請求頭、請求體(請求正文),其中:
http 響應報文組成部分:響應行、響應頭、響應體(請求正文)其中:
如下所示就是 http 的請求報文。
請求行
get /s?wd=%e8%a5%bf%e7%ba%a2%e6%9f%bf%e7%82%92%e9%b8%a1%e8%9b%8b%e6%80%8e%e4%b9%88%e5%81%9a%ef%bc%9f& http/1.1
get:是 http 請求方法,表示獲取資源並且不會對資源做任何修改操作。
其他常見的http 方法有:
http/1.1:表示http協議版本是 1.1。
中間內容:搜尋的uri,url 解碼後的內容是wd=西紅柿炒雞蛋怎麼做?&
。
請求頭如下所示就是 http 的請求報文中請求頭的資訊。
cookie 和 connection: keep-alive 是http 協議重點要掌握的知識點。
cookie:設定請求的 cookie 資訊,http 協議是無狀態的協議,也就是說在http 協議中是不會對請求和響應做持久化。例如**登入資訊無法儲存問題,這個就是靠cookie解決的。
connection: keep-alive http 協議每次通訊就需要連線和斷開tcp 鏈結,這樣會造成大量的通訊的開銷。為解決這一問題,http 1.1 提出持久連線
,只要任意一方沒有提出斷開連線,則保持tcp 連線狀態。如果想使用持久連線
則需要宣告 connection: keep-alive。
請求體post 請求引數資訊會顯示在請求體中,因為這裡示例是get 請求,所以請求體沒有內容。
如下所示就是 http 的響應報文。
省略具體html 資訊
響應行
響應行包含 http 版本號、狀態碼、狀態碼原因短語。
http/1.1 200 ok
常見的狀態碼以及狀態碼原因短語如下:
響應頭響應頭和請求頭差不多,主要宣告響應的一些公共資訊引數。有些引數和請求頭是一樣的。
響應體本文主要講述了 http 協議由請求報文
和響應報文
組成,其中請求報文包含了:請求行、請求頭、請求體,響應報文包含了:響應行、響應頭、響應體。需要注意的是http 協議是無狀態協議,但是可以通過cookie
記錄狀態,還有就是http 協議通過持久連線
減少通訊的開銷。
[1]【日】上野 宣著 **http
深入理解HTTP協議
當今最流行的http協議版本為http 1.1,本文內容均以此版本為準 一 報文 http協議的報文分為兩種,請求報文和響應報文 請求報文由4部分組成 1.起始行 2.請求頭 3.空行 4.請求體 響應報文也由4部分組成 1.起始行 2.響應頭 3.空行 4.響應體 其中起始行都是必須的,其他內容可...
深入理解HTTP協議
http協議 hypertext transfer protocol 超文字傳輸協議,它是web的核心。它由兩部分程式組成 乙個客戶機程式,和乙個伺服器程式,執行在不同的端系統中,通過http報文進行通訊。http協議定義了web客戶機如何向web伺服器請求web頁面,下圖描述了http請求 響應行...
Linux 深入理解HTTP協議
基本概念及作用 首先http協議屬於應用層協議,應用層協議就是我們程式設計師自己定協議,但如果每次都自己定麻煩並且很容易出錯,所以有了一些現成的 http,dns 等,所以大多是直接拿來用就行,而應用層的作用就是雙方達成某種約定,一段按照約定的協議傳送資料,另一端按照約定來解析資料,保證接收資料的一...