[HTTP協議]HTTP報文入門

HTTP協議:

        1.無連接:每次只處理一個請求,服務器處理完一個http請求後自動斷開鏈接
        2.無狀態:每次請求都是獨立的,不會保留前後請求的數據.如果需要前後請求的數據必須重新傳遞
        3.靈活:可以傳輸任意類型的數據, 傳輸的類型由contentType指定    

HTTP協議的長連接和短連接,實質上是TCP協議的長連接和短連接。

TCP短連接長連接都由客戶端發起,而TCP長連接的保活功能主要爲服務器應用提供。如果客戶端已經消失而連接未斷開,則會使得服務器上保留一個半開放的連接,而服務器又在等待來自客戶端的數據,此時服務器將永遠等待客戶端的數據。保活功能就是試圖在服務端器端檢測到這種半開放的連接。也因爲短連接、長連接的實現在HTTP之外,與HTTP無關,從HTTP自身來看,HTTP依然是無連接的。  

HTTP報文:

在這裏插入圖片描述

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-gdXQMwAX-1575511475742)(en-resource://database/2983:0)]

在這個瀏覽器發出的請求報文裏,第一行“GET / HTTP/1.1”就是請求行,而後面的“Host”“Connection”等等都屬於 header,報文的最後是一個空白行結束,沒有 body。

請求行:

瞭解了 HTTP 報文的基本結構後,我們來看看請求報文裏的起始行也就是請求行(request line),它簡要地描述了客戶端想要如何操作服務器端的資源。

請求行由三部分構成:

      請求方法:是一個動詞,如 GET/POST,表示對資源的操作;
      請求目標:通常是一個 URI,標記了請求方法要操作的資源;
      版本號:表示報文使用的 HTTP 協議版本。

這三個部分通常使用空格(space)來分隔,最後要用 CRLF 換行表示結束。

請求行格式

GET / HTTP/1.1

狀態行:

看完了請求行,我們再看響應報文裏的起始行,在這裏它不叫“響應行”,而是叫“狀態行”(status line),意思是服務器響應的狀態

比起請求行來說,狀態行要簡單一些,同樣也是由三部分構成:

 版本號:表示報文使用的 HTTP 協議版本;
 狀態碼:一個三位數,用代碼的形式表示處理的結果,比如 200 是成功,500 是服務器錯誤;
 原因:作爲數字狀態碼補充,是更詳細的解釋文字,幫助人理解原因。   

狀態行格式

HTTP/1.1 200 OK
HTTP/1.1 400 Not Found

頭部字段:

請求行或狀態行再加上頭部字段集合就構成了 HTTP 報文裏完整的請求頭或響應頭,這裏有兩個示意圖,可以看一下。
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章