http 是乙個應用層協議,基於 tcp/ip 協議,實際上就是 tcp/ip 協議,只不過在其間傳輸的不是任意的二進位制資料,而是 http 規定好的資料報。資料傳送是乙個請求乙個響應。
http 引入
站點 example.com 上的 hello.html 頁面,訪問他,在獲取 hello.html 資源的過程中,過程是這樣的:
伺服器找到需要的資源,打包如下資訊給客戶端,
客戶端解析首行知道協議版本和狀態碼200,解析首部字段區如 content-type 可知是 html 檔案,content-type 可知內容長度。
請求訊息
請求訊息由乙個請求行,0到多個首部字段行,乙個空行、訊息主體構成。
( 橙色是請求行
,藍色是首部字段區):
請求行
宣告使用的請求方法、資源、http 版本。請求方法可以是 get、post、head、put、delete、connect、options、trace 中的乙個。
get、put、delete 都是冪等操作,但 post 不是。
put 和 post 都可以用來建立和更新資源,但因為 put 是冪等的(重複執行 put 不會影響伺服器狀態),
可以用 put 來建立資源,post 來更新。
post 可以用來新建,更新,刪除但是滿足 restful 規範的話,除了上面的冪等的好處,還可以把操作意圖表達在請求方法內,把操作意圖從 url 中分離出來。
connect 方法,在當前 http 連線已經建立的情況下,connect 方法用來告知伺服器,客戶端想要和服務期間建立 ssl 連線。
訊息主體
訊息主體用來承載請求訊息的資料,比如用 post 來提交表單。表單資料可以打包在訊息主體內,訊息主體是可選的。
響應訊息
響應訊息由乙個狀態行、乙個或者多個首部字段行、乙個空行、訊息主體構成。
(分別是
狀態行,
首部字段行,空行,
訊息主體):
狀態行
由 http 版本,狀態碼,狀態描述文字構成。
狀態碼有五組:
* 200-299 成功。 指明客戶端請求是正確的,並被成功執行。
* 300-399 重定向。指明客戶端請求是正確的,不過當前請求資源的位置在別處,請再次定向你的資源位置,發起新的請求。
* 400-499 客戶端錯誤。 指明客戶端的請求是不正確的,可能是格式無法識別,或者url太長等等。
* 500-599 伺服器端錯誤。 指明客戶端的請求正確,但是伺服器因為自身原因無法完成請求。
* 100-199 資訊提示。 這個系列的狀態碼只有2個(100,101)。
HTTP學習筆記 HTTP報文
如果說http是網際網路的信使,那麼http報文就是運送的包裹。所有的http程式都是通過互相傳送報文來完成工作的。本文將介紹http報文的流動方式,報文的組成部分,請求和響應報文之間的區別等。http報文是在http應用程式之間傳送的資料塊,這些資料塊以文字形式存在,以描述了報文的內容及含義的元資...
http筆記(四) http方法
http請求方法詳解 請求方法 指定了客戶端想對指定的資源 伺服器作何種操作 下面我們介紹http 1.1中可用的請求方法 get 獲取資源 get方法用來請求已被uri識別的資源。指定的資源經伺服器端解析後返回響應內容 也就是說,如果請求的資源是文字,那就保持原樣返回 如果是cgi 通用閘道器介面...
HTTP學習筆記 HTTP協議
tcp ip協議按層次分為四層 應用層,傳輸層,網路層,資料鏈路層。該層決定了向使用者提 用服務時通訊的活動。如ftp和dns服務等。傳輸層有兩個性質不同的協議 tcp和udp協議。網路層的作用就是計算機之間通過網路裝置進行傳輸時,選擇一條傳輸路線。用來處理連線網路的硬體部分,硬體上的範疇均在該層的...