Http協議概述--請求響應模型

Http--Hyper Text Transfer Protocol 超文本傳輸協議

傳輸協議:定義了客戶端和服務器端通信時,發送數據的格式
Http協議的特點
  • 基於TCP/IP的高級協議,默認端口是80
  • 基於請求/響應模型的:一次請求對應一次響應
  • 無狀態的:每次請求之間相互獨立,不能交互數據
Http協議的歷史版本
  • 1.0版本
    每次請求響應之後都會斷開連接,下一次請求響應又會建立新的連接,即每次請求響應都會建立新的連接
    缺點:連接會被多次建立和多次丟棄掉,影響傳輸速度,消耗資源
  • 1.1版本
    在一次請求響應之後,連接不會立刻斷開,而是會等待一定的時間,如果在這一定時間內,還有其他請求,就會默認使用該連接,而不去建立新的連接,這樣就實現了連接的複用

上面說了,Http定義了客戶端和服務器通信時傳輸數據的格式,而傳輸數據分爲兩種:
客戶端向服務器傳輸數據:請求消息數據
服務器向客戶端傳輸數據:相應消息數據

1、Http請求消息數據格式
  • 請求行:請求方式 請求url 請求協議/版本
    例如:GET /login.html HTTP/1.1
    請求url=虛擬路徑+Servlet資源路徑
  • 請求頭:客戶端瀏覽器告訴服務器一些信息
    請求頭消息以鍵值對的方式給出:請求頭名稱:請求頭值
    常見的請求頭:
    • User-Agent:瀏覽器告訴服務器,使用的瀏覽器版本信息,可以在服務器端獲取該頭的信息,解決瀏覽器的兼容性問題(可以在服務器端對不同的服務器寫不同的邏輯代碼,然後根據該頭的內容獲取瀏覽器名稱,執行對應瀏覽器的代碼)
    • Referer:告訴服務器,當前請求從哪裏來?可以用來防盜鏈和統計工作
  • 請求空行:一個空行,用於分割請求頭和請求體
  • 請求體(正文):封裝POST請求消息的請求參數

對於請求行中的請求方式,http協議7中請求方式,常用的有2種
  • GET:
    請求參數在請求行中,跟在url後。
    請求的url長度有限制的
    不太安全
  • POST:
    請求參數在請求體
    請求的url長度沒有限制的
    相對安全

2、Http響應消息數據格式
  • 響應行:協議/版本 響應狀態碼 狀態碼描述
    例如:HTTP/1.1 200 OK
    請求url=虛擬路徑+Servlet資源路徑
  • 響應頭:服務器告訴瀏覽器一些信息
    響應頭消息以鍵值對的方式給出:響應頭名稱:響應頭值
    常見的響應頭:
    • Content-Type:服務器告訴客戶端本次響應體數據格式以及編碼格式
    • Content-disposition:服務器告訴客戶端以什麼格式打開響應體數據
        常見有兩種取值
      • in-line:默認值,在當前頁面內打開
      • attachment;filename=xxx:以附件形式打開響應體,用於文件下載
        注意:這個filename是瀏覽器在彈出框顯示,和服務器中要下載的文件名無關
  • 響應空行:一個空行,用於分割響應頭和響應體
  • 響應體(正文):傳輸的數據

響應狀態碼
服務器告訴客戶端瀏覽器本次請求和響應的一個狀態。
狀態碼都是3位數字
  • 1xx:服務器接收客戶端消息,但沒有接受完成,等待一段時間後,發送1xx多狀態碼
  • 2xx:本次請求響應成功。代表碼:200
  • 4xx:客戶端錯誤。
    • 404:請求路徑沒有對應的資源-->路徑錯誤
    • 405:請求方式沒有對應的doxxx方法-->比如瀏覽器請求方式是Post方式,而客戶端沒有doPost方法
  • 5xx:服務器端錯誤。代表碼:500(服務器內部出現異常)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章