概述
Http是基于客戶端/服務端(C/S)的架構模型,通過一個可靠鏈接(TCP)來交換數據.
無連接:服務端處理完客戶的請求,并收到客戶的應答后,即斷開連接.
早期html網頁面都是靜態(tài)的簡單的,這樣做能節(jié)省服務端的資源,盡可能多的為更多客戶端提供服務.
后來html頁面變得非常復雜,可能嵌入很多圖片等資源,如果每次訪問一個圖片都要重新建立tcp連接就太低效了,所以人們提出了Keep-Alive來解決低效問題,客戶端和服務器之間的HTTP連接會被保持不會斷開(超過Keep-Alive規(guī)定的時間,意外斷電等情況除外).當客戶端發(fā)送另外一個請求時,就使用這條已經建立的連接.無狀態(tài):是指服務器端不知道客戶端是什么狀態(tài),每個請求都是獨立的.現在http的請求也是無狀態(tài)的.人們使用Cookie或者session來解決無狀態(tài)問題.
請求報文結構
請求報文:從客戶端向服務端發(fā)送器請求報文.結構如下:

Request.png
由四部分組成:
- 請求行 -- > 請求方法+URL+協(xié)議版本
- 請求頭部 --> 頭部字段名 : 值
- 空行
- 請求數據
請求方法
指請求報文的類型,實際上就是一些命令,表示對請求對象的操作.常用方法如下表:
| 方法 | 含義 |
|---|---|
| OPTION | 請求一些選項的信息 |
| GET | 請求讀取由URL所標志的信息 |
| HEAD | 請求讀取由URL所標志的信息的首部 |
| POST | 給服務器添加信息(例如,注釋) |
| PUT | 在指明的URL下存儲一個文檔 |
| DELETE | 刪除指明的URL所標志的資源 |
| TRACE | 用來進行回環(huán)測試的請求報文 |
| CONNECT | 用于代理服務器 |
響應報文結構
響應報文:從服務端到客戶端的應答.

Resply.png
由四部分組成:
- 狀態(tài)行 --> 協(xié)議版本 + 狀態(tài)碼 + 短語
- 響應頭部 --> 頭部字段名:值
- 空行
- 響應數據
狀態(tài)碼
- 1XX:提示信息---請求已經收到,繼續(xù)處理.
- 2XX:成功 --- 請求已經收到,理解,接受
- 3XX:重定向 --- 要完成請求必須進行更進一步的處理
- 4XX:客戶端錯誤 --- 請求有語法錯誤或無法實現
- 5XX:服務端錯誤 --- 服務器未能實現合法的請求