概述
Http是基于客戶端/服務(wù)端(C/S)的架構(gòu)模型,通過一個(gè)可靠鏈接(TCP)來交換數(shù)據(jù).
無連接:服務(wù)端處理完客戶的請求,并收到客戶的應(yīng)答后,即斷開連接.
早期html網(wǎng)頁面都是靜態(tài)的簡單的,這樣做能節(jié)省服務(wù)端的資源,盡可能多的為更多客戶端提供服務(wù).
后來html頁面變得非常復(fù)雜,可能嵌入很多圖片等資源,如果每次訪問一個(gè)圖片都要重新建立tcp連接就太低效了,所以人們提出了Keep-Alive來解決低效問題,客戶端和服務(wù)器之間的HTTP連接會(huì)被保持不會(huì)斷開(超過Keep-Alive規(guī)定的時(shí)間,意外斷電等情況除外).當(dāng)客戶端發(fā)送另外一個(gè)請求時(shí),就使用這條已經(jīng)建立的連接.無狀態(tài):是指服務(wù)器端不知道客戶端是什么狀態(tài),每個(gè)請求都是獨(dú)立的.現(xiàn)在http的請求也是無狀態(tài)的.人們使用Cookie或者session來解決無狀態(tài)問題.
請求報(bào)文結(jié)構(gòu)
請求報(bào)文:從客戶端向服務(wù)端發(fā)送器請求報(bào)文.結(jié)構(gòu)如下:
Request.png
由四部分組成:
- 請求行 -- > 請求方法+URL+協(xié)議版本
- 請求頭部 --> 頭部字段名 : 值
- 空行
- 請求數(shù)據(jù)
請求方法
指請求報(bào)文的類型,實(shí)際上就是一些命令,表示對請求對象的操作.常用方法如下表:
方法 | 含義 |
---|---|
OPTION | 請求一些選項(xiàng)的信息 |
GET | 請求讀取由URL所標(biāo)志的信息 |
HEAD | 請求讀取由URL所標(biāo)志的信息的首部 |
POST | 給服務(wù)器添加信息(例如,注釋) |
PUT | 在指明的URL下存儲(chǔ)一個(gè)文檔 |
DELETE | 刪除指明的URL所標(biāo)志的資源 |
TRACE | 用來進(jìn)行回環(huán)測試的請求報(bào)文 |
CONNECT | 用于代理服務(wù)器 |
響應(yīng)報(bào)文結(jié)構(gòu)
響應(yīng)報(bào)文:從服務(wù)端到客戶端的應(yīng)答.
Resply.png
由四部分組成:
- 狀態(tài)行 --> 協(xié)議版本 + 狀態(tài)碼 + 短語
- 響應(yīng)頭部 --> 頭部字段名:值
- 空行
- 響應(yīng)數(shù)據(jù)
狀態(tài)碼
- 1XX:提示信息---請求已經(jīng)收到,繼續(xù)處理.
- 2XX:成功 --- 請求已經(jīng)收到,理解,接受
- 3XX:重定向 --- 要完成請求必須進(jìn)行更進(jìn)一步的處理
- 4XX:客戶端錯(cuò)誤 --- 請求有語法錯(cuò)誤或無法實(shí)現(xiàn)
- 5XX:服務(wù)端錯(cuò)誤 --- 服務(wù)器未能實(shí)現(xiàn)合法的請求