JavaWeb第五講 Web核心基礎之HTTP協議

ITTTT_發表於2020-12-21

Web核心基礎之HTTP協議

HTTP簡介

對客戶端和伺服器端之間資料傳輸的格式規範,格式簡稱為“超文字傳輸協議”。HTTP是一個基於TCP/IP通訊協議來傳遞資料(HTML 檔案, 圖片檔案, 查詢結果等)。
主要特點:

  1. 簡單快速:客戶向伺服器請求服務時,只需傳送請求方法和路徑。請求方法常用的有GET、HEAD、POST。每種方法規定了客戶與伺服器聯絡的型別不同。由於HTTP協議簡單,使得HTTP伺服器的程式規模小,因而通訊速度很快。

  2. 靈活:HTTP允許傳輸任意型別的資料物件。正在傳輸的型別由Content-Type加以標記。

  3. 無連線:無連線的含義是限制每次連線只處理一個請求。伺服器處理完客戶的請求,並收到客戶的應答後,即斷開連線。採用這種方式可以節省傳輸時間。

  4. 無狀態:HTTP協議是無狀態協議。無狀態是指協議對於事務處理沒有記憶能力。缺少狀態意味著如果後續處理需要前面的資訊,則它必須重傳,這樣可能導致每次連線傳送的資料量增大。另一方面,在伺服器不需要先前資訊時它的應答就較快。

  5. 支援B/S及C/S模式。

請求報文包括三部分:

  1. 請求行:包含請求方法,URI,HTTP版本協議

  2. 請求首部欄位

  3. 請求內容實體
    響應報文包含三部分:

  4. 狀態行:包含HTTP版本,狀態碼,狀態碼原因短語

  5. 響應首部欄位

  6. 響應內容實體
    HTTP請求方式

  7. GET :用於請求訪問已經被URI(統一資源識別符號)識別的資源,可以通過URL傳參給伺服器

  8. POST:用於傳輸資訊給伺服器,主要功能與GET方法類似,但一般推薦使用POST方式

  9. PUT:傳輸檔案,報文主體中包含檔案內容,儲存到對應URI位置

  10. HEAD:獲得報文首部,與GET方法類似,只是不返回報文主體,一般用於驗證URI是否有效

  11. DELETE:刪除檔案,與PUT方法相反,刪除對應URI位置的檔案

  12. OPTIONS:查詢響應URI支援的HTTP方法

HTTP協議狀態解析

200:請求被正常處理
204:請求被受理但沒有資源可以返回
206:客戶端只是請求資源的一部分,伺服器只對請求的部分資源執行GET方法,相應報文中通過Content-Range指定範圍的資源。
301:永久性重定向
302:臨時重定向
303:與302狀態碼有相似功能,只是它希望客戶端在請求一個URI的時候,能通過GET方法重定向到另一個URI上
304:傳送附帶條件的請求時,條件不滿足時返回,與重定向無關
307:臨時重定向,與302類似,只是強制要求使用POST方法
400:請求報文語法有誤,伺服器無法識別
401:請求需要認證
403:請求的對應資源禁止被訪問
404:伺服器無法找到對應資源
500:伺服器內部錯誤
503:伺服器正忙

HTTP相比HTTPS的缺點

  1. 通訊使用的明文未加密,內容可能被竊聽,也就是被抓包分析

  2. 不驗證通訊方身份,可能遭到偽裝

  3. 無法驗證報文完整性,可能被篡改

  4. Https就是Http加上加密處理(一般是SSL安全通訊線路)+認證+完整性保護

HTTP協議實現流程

在這裡插入圖片描述

相關文章