一 通過請求和響應的交互達成通信
請求從客戶端發(fā)出,最后服務器端響應請求并返回
1.請求報文是由請求方法,請求URI,協(xié)議版本,可選的請求首部字段和內(nèi)容實體構成的
GET /index.htm HTTP/1.1
Host: hackr.jp
上面是從客戶端發(fā)送給某個HTTP服務器端的請求報文中的內(nèi)容
起始行開頭是GET標識請求訪問服務器的類型,稱為方法(method).隨后的字符串/index.htm指明了請求訪問的資源對象.也叫請求URI.最后的HTTP/1.1,即HTTP的版本號,用來提示客戶端使用的HTTP協(xié)議功能
綜合來看,這段請求內(nèi)容的意思是:請求訪問某臺HTTP服務器上的/index.htm頁面資源
2.響應報文基本上由協(xié)議版本,狀態(tài)碼,用以解釋狀態(tài)碼的原因短語,可選的響應首部字段以及實體主體構成
HTTP/1.1 200 OK
Data:Tue,10 Jul 2016 06:50:15 GMT
Content-Length:362
Content-Type:text/html
<html>
...
在接受到請求的服務器,會將請求內(nèi)容的處理結果以響應的形式返回.
在起始行開頭的HTTP/1.1,表示服務器對應的HTTP版本
然后是200 OK表示請求的處理結果的狀態(tài)碼(status code)和原因短語,下一行顯示了創(chuàng)建響應的日期時間,是首部字段內(nèi)的一個屬性
接著以一空行分割,之后的內(nèi)容稱為資源實體的主體(entity body).
二 告知服務器意圖的HTTP方法
1.GET:獲取資源
2.POST:傳輸實體主體
3.PUT:傳輸文件
4.HEAD:獲得報文首部
5.DELETE:刪除文件
6.OPTIONS:詢問支持的方法
7.TRACK:追蹤路徑
8.CONNECT:要求用隧道協(xié)議連接代理
三 持久連接節(jié)省通信量
1.持久連接
1.1http協(xié)議的初始版本中,每進行一次http通信就要斷開一次TCP連接.每次的請求都會造成無謂的TCP連接建立和斷開,增加通信量的開銷
1.2HTTP/1.1和一部分的HTTP/1.0增加了持久連接(HTTP keep-alive)的方法.持久連接的特點是,只要任意一端沒有明確提出斷開連接,則保持TCP連接狀態(tài)
持久連接的好處在于減少了TCP連接的重復建立和斷開造成的額外開銷,減輕了服務器的負載,另外減少開銷的那部分時間,使HTTP請求和響應能夠更早的結束,這樣Web頁面的顯示速度也就相應提高了.在HTTP/1.0中所有的連接默認都是持久連接
2.管線化
持久連接是的多數(shù)請求以管線化(pipelining)方式發(fā)送成為可能.以前發(fā)送請求后需等待并收到響應才能發(fā)送下一個請求.
管線化技術能夠做到同時并行發(fā)送多個請求,不需要一個接一個的等待響應了
四 使用Cookie的狀態(tài)管理
1.HTTP協(xié)議是無狀態(tài)協(xié)議.它不對之前發(fā)生過的請求和響應的狀態(tài)進行管理.也就是說,無法根據(jù)之前的狀態(tài)進行本次的請求處理.
2.假設要求登陸認證的web頁面,本身無法進行狀態(tài)的管理(就是不記錄已登陸的狀態(tài)).那么每次跳轉新頁面不是要再次登陸,就是要在每次請求報文中附加參數(shù)來管理登陸狀態(tài).
3.這樣做的優(yōu)點在于:不保存狀態(tài),減少服務器的CPU以及內(nèi)存資源的消耗.
4.為了保存HTTP無狀態(tài)協(xié)議這個特征的同時又要解決類似的矛盾問題,引入了Cookie技術.Cookie技術通過在請求和響應報文中寫入Cookie信息來控制客戶端的狀態(tài)
5.Cookie會根據(jù)從服務器端發(fā)送的響應報文內(nèi)的一個叫做Set-Cookie的首部字段信息,通知客戶端保存Cookie,當下次客戶端再往服務器發(fā)送請求時,客戶端會自動在請求報文中加入Cookie值后再發(fā)送出去
服務器端發(fā)現(xiàn)客戶端發(fā)送過來的Cookie后,會去檢查究竟是從哪一個客戶端發(fā)來的連接請求,然后對比服務器上的記錄,最后得到之前的狀態(tài)信息