1、Http的概念
http是tcp/ip協(xié)議族中的一個(gè)協(xié)議,是工作在應(yīng)用層的。
2、和http協(xié)議關(guān)系密切的協(xié)議tcp和ip協(xié)議
ip協(xié)議是工作在網(wǎng)絡(luò)層的
tcp協(xié)議是工作在傳輸層的,提供可靠的字節(jié)流服務(wù),tcp能夠提供可靠的傳輸服務(wù)是因?yàn)椴扇×巳挝帐值牟呗浴5谝淮伟l(fā)送的時(shí)候會(huì)發(fā)送帶有SYN標(biāo)志的包,接收方接收后會(huì)回傳一個(gè)帶有SYN/ACK標(biāo)志的包,發(fā)送方收到后然后發(fā)送帶有ACK標(biāo)志的包。
3、Http的特點(diǎn)
http永遠(yuǎn)有一個(gè)客戶端和一個(gè)服務(wù)端,客戶端發(fā)送請(qǐng)求,服務(wù)端進(jìn)行響應(yīng),服務(wù)端是不能主動(dòng)發(fā)送通知的
http是不能夠保存狀態(tài)的,但是為了能夠保存狀態(tài),引用了cookie技術(shù)
http1.1版本默認(rèn)是持久性連接,可以同時(shí)并行發(fā)送多個(gè)請(qǐng)求
4、Http返回狀態(tài)碼
200:請(qǐng)求成功,ok,如果你的請(qǐng)求方法是HEAD,那么返回的也只是頭部
204:請(qǐng)求成功,但是返回的只有頭部,沒有主體
206:請(qǐng)求成功,返回主體是你指定范圍的內(nèi)容,range部分
301:永久重定向 302:臨時(shí)重定向 303:URI已經(jīng)更新 ? 這幾個(gè)返回碼都需要客戶端將PUT換成GET(不是協(xié)議要求,而是一般的瀏覽器是這樣做的),刪除主體重新請(qǐng)求
307:臨時(shí)重定向,但是不要求客戶端將PUT換成GET
304:請(qǐng)求的資源已經(jīng)找到,但是并不符合你添加的條件
400:你的請(qǐng)求報(bào)文格式有問題
401:請(qǐng)求的用戶沒有認(rèn)證或者認(rèn)證失敗了
403:請(qǐng)求的資源被禁止訪問,就是說你沒有權(quán)限
404:無法找到被請(qǐng)求的資源,有的時(shí)候服務(wù)器拒絕請(qǐng)求不想說明原因時(shí),也這樣使用
500:網(wǎng)絡(luò)或者服務(wù)端執(zhí)行請(qǐng)求發(fā)生錯(cuò)誤
503:服務(wù)端超出負(fù)荷或者正在維護(hù)
5、Http的報(bào)文格式
請(qǐng)求報(bào)文
響應(yīng)報(bào)文
6、報(bào)文頭部(首部)字段信息
報(bào)文頭部字段由 字段名:字段值 ?加回車換行構(gòu)成。其中字段值可以由多個(gè)值構(gòu)成,字段值之間用“,”隔開。
通用頭部字段
Cache-Control:這個(gè)字段,值是可以多選的。public明確表明其他用戶也可以用這個(gè)緩存;private與public完全完全相反;no-cache告訴服務(wù)器必須從源服務(wù)器返回?cái)?shù)據(jù);no-cache=Location,如果服務(wù)器返回的報(bào)文響應(yīng)中這么設(shè)置,那么客戶端將不能使用緩存;no-store暗示請(qǐng)求或者響應(yīng)有機(jī)密的信息,這才是真正的不使用緩存;max-age=時(shí)間(秒),如果客戶端有這個(gè)設(shè)置,只要緩存存在的時(shí)間小于指定的時(shí)間,就用緩存的資源,也就是說這里是緩存的一個(gè)有效期;no-transform,無論是在請(qǐng)求中還是在響應(yīng)中,緩存都不能改變報(bào)文主體的媒體類型,
Connection:close,服務(wù)器想明確斷開連接;keep-Alive一直保持連接,就是持久連接,1.1版本都是默認(rèn)持久連接的
Date: 值是http報(bào)文創(chuàng)建的日期和時(shí)間,一般的格式為 Tue,03-Jul-12 04:40:59 GMT
Transfer-Encoding:報(bào)文主體在傳輸時(shí)采用的編碼格式,值有chunked
請(qǐng)求頭部字段
Accept:這個(gè)字段可通知服務(wù)器,客戶端能夠處理的媒體類型。這個(gè)字段的值也是可以多選的。
文本文件- text/html,text/plain, text/css ,application/xhtml+xml,application/xml
圖片文件- image/jpeg,image/gif,image/png
視頻文件- video/mpeg,video/quicktime
應(yīng)用程序使用的二進(jìn)制文件- application/octet-stream,application/zip
Accept-Charset:告知服務(wù)器客戶端支持的字符集 ,值就是通用的字符集 iso-8859-5,unicode-1-1等
Accept-Encoding: 客戶端支持的內(nèi)容編碼,值可以多選。gzip,compress,deflate,identify
Accept-Language:客戶端支持的自然語(yǔ)言集,值可以多選。zh-cn,zh;q=0.7,en-us,en;q=0.3 (q指的是優(yōu)先級(jí),用分號(hào)隔開)
Authorization:客戶端的認(rèn)證信息(證書值)
Host:這個(gè)字段會(huì)告知服務(wù)器請(qǐng)求資源所在的的主機(jī)名和端口號(hào),這個(gè)值就是域名或者IP地址
Proxy-Authorization:認(rèn)證,與Authorization相同,不同的是,認(rèn)證行為發(fā)生在客戶端和代理服務(wù)器之間
Range:指定獲取部分資源的范圍 比如:bytes=5001-10000,表示請(qǐng)求獲取5001個(gè)字節(jié)到10000字節(jié)的數(shù)據(jù)
User-Agent:用于傳達(dá)瀏覽器的種類
實(shí)體頭部字段
Content-Encoding:報(bào)文主體內(nèi)容采用的編碼方式,gizp,compress,deflate,identify
Content-Language:報(bào)文主體采用的自然語(yǔ)言集
Content-Length:報(bào)文主體部分的大小,單位是字節(jié)
Content-MD5:MD5值,用于檢查報(bào)文主體在傳輸中是否保持完整
Content-Range:針對(duì)的是范圍請(qǐng)求,告知客戶端返回的是哪一部分的內(nèi)容
Content-Type:實(shí)體主體對(duì)象的媒體類型