HTTP協議通訊雙方必定是客戶端和服務器端,並且必定是由客戶端發出請求,由服務器接受請求web
客戶端發送的報文的構成:安全
服務器端收到請求後響應的報文構成:服務器
客戶端向服務器端發送請求有多種方法:網絡
get:獲取資源,用來請求訪問已被URI識別的資源。指定的資源經服務器端解析後返回響應內容。若是請求的資源是文本,就保持原樣返回;若是是像CGI(通用網關接口)那樣的程序,則返回通過執行後的輸出結果。post
post:傳輸實體主體,get也能夠傳輸,但通常不用get傳輸網站
put:傳輸文件,就想FTP協議的文件上傳同樣,要求在請求報的主體中 包含文件內容,而後保存到請求URI指定的位置,但由於不限身份,安全性太差,因此通常web網站不用該方法加密
head:得到報文首部,和get方法同樣,只是不返回報文主體部分3d
delete:刪除文件,同put代理
options:詢問支持的方法,服務器端會返回:get,pust,options等內容blog
connect:要求在與代理服務器通訊時創建隧道,實現用隧道協議進行TCP通訊,主要使用SSL(安全套接層)和TLS(傳輸層安全)協議把通訊內容加密後經網絡隧道傳輸,服務器端返回200 OK後進入隧道
trace:追蹤路徑,讓web服務器端將以前的請求通訊環回給客戶端的方法
針對HTTP某些不足之處的彌補和修正:
1.HTTP協議初始版本中每進行一次HTTP通訊就要斷開一次TCP鏈接,若是請求的頁面中包含大量圖片,每次請求都要鏈接,再斷開,會形成通訊量的開銷,爲了解決這個問題,HTTP/1.1用了持久鏈接的方法。
持久鏈接:只要任意一端沒有明確提出斷開鏈接,則保持TCP鏈接狀態
持久鏈接使發送多個請求時不用一個接一個地等待響應,能夠不等待響應,直接發送下一個請求,這就是 管線化
持久鏈接讓請求變快,而管線化讓請求更快
2.HTTP協議是一種無狀態協議,即它不保存以前發生過的請求和響應的狀態,沒法根據以前的狀態進行本次的請求處理。
優勢:節省了服務器端的內存資源和cpu的消耗
弊端:在用戶登陸某個網站進行瀏覽時,每跳轉新頁面就要從新登錄
解決:Cookie技術:在請求和響應報文中寫入Cookie信息來控制客戶端的狀態。Cookie會根據從服務器端發送的響應報文內的一個叫作Set-Cookie的首部字段信息,通知客戶端保存Cookie,當下次客戶端再往該服務器發送請求時,客戶端會自動在請求報文中加入Cookie值後發送出去,服務器端發現客戶端發送過來的Cookie後,會去檢查到底是從哪個客戶端發來的鏈接請求,而後對比服務器上的記錄,最後獲得以前的狀態信息