天天看點

http協定:三 (2)http封包是什麼樣子

HTTP 協定在規範文檔裡詳細定義了封包的格式,規定了組成部分,解析規則,還有處理政策,是以可以在 TCP/IP 層之上實作更靈活豐富的功能,例如連接配接控制,緩存管理、資料編碼、内容協商等等。

http協定:三 (2)http封包是什麼樣子

請求行

GET / HTTP/1.1

狀态行

HTTP/1.1 200 OK

http協定:三 (2)http封包是什麼樣子

HTTP 協定規定了非常多的頭部字段,實作各種各樣的功能,但基本上可以分為四大類:

通用字段:在請求頭和響應頭裡都可以出現;

請求字段:僅能出現在請求頭裡,進一步說明請求資訊或者額外的附加條件;

響應字段:僅能出現在響應頭裡,補充說明響應封包的資訊;

實體字段:它實際上屬于通用字段,但專門描述 body 的額外資訊。

 HTTP 封包結構就像是“大頭兒子”,由“起始行 + 頭部 + 空行 + 實體”組成,簡單地說就是“header+body”;

HTTP 封包可以沒有 body,但必須要有 header,而且 header 後也必須要有空行,形象地說就是“大頭”必須要帶着“脖子”;

請求頭由“請求行 + 頭部字段”構成,響應頭由“狀态行 + 頭部字段”構成;

請求行有三部分:請求方法,請求目标和版本号;

狀态行也有三部分:版本号,狀态碼和原因字元串;

頭部字段是 key-value 的形式,用“:”分隔,不區分大小寫,順序任意,除了規定的标準頭,也可以任意添加自定義字段,實作功能擴充;

HTTP/1.1 裡唯一要求必須提供的頭字段是 Host,它必須出現在請求頭裡,标記虛拟主機名。

Host:請求字段,隻能出現在請求頭。是必須出現的字段

User-Agent:是請求字段,隻能出現在請求頭裡。

Date:是通用字段,通常出現在響應頭,辨別HTTP封包建立的時間,用戶端可以使用這個時間再搭配其他字段決定緩存政策

Server字段是響應字段,隻能出現在響應頭裡。告訴用戶端目前正在提供Web服務的軟體名稱和版本号。

Content-Length:辨別封包裡body的長度。