第二章 簡單的HTTP協(xié)議

一 通過請(qǐng)求和響應(yīng)的交互達(dá)成通信

請(qǐng)求從客戶端發(fā)出,最后服務(wù)器端響應(yīng)請(qǐng)求并返回
1.請(qǐng)求報(bào)文是由請(qǐng)求方法,請(qǐng)求URI,協(xié)議版本,可選的請(qǐng)求首部字段和內(nèi)容實(shí)體構(gòu)成的

GET /index.htm HTTP/1.1
Host: hackr.jp

上面是從客戶端發(fā)送給某個(gè)HTTP服務(wù)器端的請(qǐng)求報(bào)文中的內(nèi)容
起始行開頭是GET標(biāo)識(shí)請(qǐng)求訪問服務(wù)器的類型,稱為方法(method).隨后的字符串/index.htm指明了請(qǐng)求訪問的資源對(duì)象.也叫請(qǐng)求URI.最后的HTTP/1.1,即HTTP的版本號(hào),用來提示客戶端使用的HTTP協(xié)議功能
綜合來看,這段請(qǐng)求內(nèi)容的意思是:請(qǐng)求訪問某臺(tái)HTTP服務(wù)器上的/index.htm頁面資源
2.響應(yīng)報(bào)文基本上由協(xié)議版本,狀態(tài)碼,用以解釋狀態(tài)碼的原因短語,可選的響應(yīng)首部字段以及實(shí)體主體構(gòu)成

HTTP/1.1 200 OK
Data:Tue,10 Jul 2016 06:50:15 GMT
Content-Length:362
Content-Type:text/html

<html>
...

在接受到請(qǐng)求的服務(wù)器,會(huì)將請(qǐng)求內(nèi)容的處理結(jié)果以響應(yīng)的形式返回.
在起始行開頭的HTTP/1.1,表示服務(wù)器對(duì)應(yīng)的HTTP版本
然后是200 OK表示請(qǐng)求的處理結(jié)果的狀態(tài)碼(status code)和原因短語,下一行顯示了創(chuàng)建響應(yīng)的日期時(shí)間,是首部字段內(nèi)的一個(gè)屬性
接著以一空行分割,之后的內(nèi)容稱為資源實(shí)體的主體(entity body).

二 告知服務(wù)器意圖的HTTP方法

1.GET:獲取資源
2.POST:傳輸實(shí)體主體
3.PUT:傳輸文件
4.HEAD:獲得報(bào)文首部
5.DELETE:刪除文件
6.OPTIONS:詢問支持的方法
7.TRACK:追蹤路徑
8.CONNECT:要求用隧道協(xié)議連接代理

三 持久連接節(jié)省通信量

1.持久連接
1.1http協(xié)議的初始版本中,每進(jìn)行一次http通信就要斷開一次TCP連接.每次的請(qǐng)求都會(huì)造成無謂的TCP連接建立和斷開,增加通信量的開銷
1.2HTTP/1.1和一部分的HTTP/1.0增加了持久連接(HTTP keep-alive)的方法.持久連接的特點(diǎn)是,只要任意一端沒有明確提出斷開連接,則保持TCP連接狀態(tài)
持久連接的好處在于減少了TCP連接的重復(fù)建立和斷開造成的額外開銷,減輕了服務(wù)器的負(fù)載,另外減少開銷的那部分時(shí)間,使HTTP請(qǐng)求和響應(yīng)能夠更早的結(jié)束,這樣Web頁面的顯示速度也就相應(yīng)提高了.在HTTP/1.0中所有的連接默認(rèn)都是持久連接

2.管線化
持久連接是的多數(shù)請(qǐng)求以管線化(pipelining)方式發(fā)送成為可能.以前發(fā)送請(qǐng)求后需等待并收到響應(yīng)才能發(fā)送下一個(gè)請(qǐng)求.
管線化技術(shù)能夠做到同時(shí)并行發(fā)送多個(gè)請(qǐng)求,不需要一個(gè)接一個(gè)的等待響應(yīng)了

四 使用Cookie的狀態(tài)管理

1.HTTP協(xié)議是無狀態(tài)協(xié)議.它不對(duì)之前發(fā)生過的請(qǐng)求和響應(yīng)的狀態(tài)進(jìn)行管理.也就是說,無法根據(jù)之前的狀態(tài)進(jìn)行本次的請(qǐng)求處理.
2.假設(shè)要求登陸認(rèn)證的web頁面,本身無法進(jìn)行狀態(tài)的管理(就是不記錄已登陸的狀態(tài)).那么每次跳轉(zhuǎn)新頁面不是要再次登陸,就是要在每次請(qǐng)求報(bào)文中附加參數(shù)來管理登陸狀態(tài).
3.這樣做的優(yōu)點(diǎn)在于:不保存狀態(tài),減少服務(wù)器的CPU以及內(nèi)存資源的消耗.
4.為了保存HTTP無狀態(tài)協(xié)議這個(gè)特征的同時(shí)又要解決類似的矛盾問題,引入了Cookie技術(shù).Cookie技術(shù)通過在請(qǐng)求和響應(yīng)報(bào)文中寫入Cookie信息來控制客戶端的狀態(tài)
5.Cookie會(huì)根據(jù)從服務(wù)器端發(fā)送的響應(yīng)報(bào)文內(nèi)的一個(gè)叫做Set-Cookie的首部字段信息,通知客戶端保存Cookie,當(dāng)下次客戶端再往服務(wù)器發(fā)送請(qǐng)求時(shí),客戶端會(huì)自動(dòng)在請(qǐng)求報(bào)文中加入Cookie值后再發(fā)送出去
服務(wù)器端發(fā)現(xiàn)客戶端發(fā)送過來的Cookie后,會(huì)去檢查究竟是從哪一個(gè)客戶端發(fā)來的連接請(qǐng)求,然后對(duì)比服務(wù)器上的記錄,最后得到之前的狀態(tài)信息

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容