What is HTTP?

The Hypertext Transfer Protocol is used to load pages on the Internet using hyperlinks.

學習目標

閱讀本文後,您將能夠:

  • Define HTTP
  • Describe the anatomy of HTTP requests and responses
  • Understand how DDoS attacks can be launched over HTTP

相關內容


想要繼續瞭解嗎?

註冊即可收到 Cloudflare 的網路安全學習文章。

請參閱 Cloudflare 的隱私權政策,了解我們如何收集和處理您的個人資料。

複製文章連結

什麼是HTTP?

超文字傳輸通訊協定 (HTTP) 是全球資訊網的基礎,用於透過超文字連結載入網頁。HTTP 是一種應用程式層通訊協定,用於在聯網裝置之間傳輸資訊,並在網路通訊協定堆疊的其他層上執行。透過 HTTP 的典型流程涉及用戶端機器向伺服器發出請求,然後伺服器傳送回應訊息。

HTTP 請求中包含什麼內容?

HTTP 請求是網際網路通訊平台(例如 Web 瀏覽器)索取其載入網站所需資訊的方式。

在網際網路上發出的每個 HTTP 請求都攜帶一系列編碼資料,這些資料帶有不同類型的資訊。典型的 HTTP 請求包含以下內容:

  1. HTTP 版本類型
  2. 一個 URL
  3. 一個 HTTP 方法
  4. HTTP 請求標頭
  5. 選用的 HTTP 主體。

讓我們更深入地探索這些請求是如何運作的,以及如何使用請求的內容來分享資訊。

什麼是 HTTP 方法?

HTTP 方法有時也稱為 HTTP 指令動詞,表示 HTTP 請求期待被查詢的伺服器執行的動作。例如,兩種最常見的 HTTP 方法是「GET」和「POST」;「GET」請求期望返傳回資訊(通常以網站的形式),而「POST」請求通常表示用戶端正在向 Web 伺服器提交資訊(例如表單資訊,如提交的使用者名稱和密碼)。

什麼是 HTTP 請求標頭?

HTTP 標頭包含存儲在索引鍵/值組中的文字訊息,並且它們包含在每個 HTTP 請求中(以及回應中,詳見下文)。這些標頭可傳達核心資訊,如用戶端正在使用什麼瀏覽器以及正在請求什麼資料。

Google Chrome 網路索引標籤中的 HTTP 請求標頭範例:

HTTP 請求標頭

HTTP 請求主體中包含什麼內容?

請求的主體部分包含請求正在傳輸的資訊的「正文」。HTTP 請求的主體包含提交到網頁伺服器的任何資訊,例如使用者名稱和密碼,或輸入到表單中的任何其他資料。

HTTP 回應中包含什麼內容?

HTTP 回應是 Web 用戶端(通常是瀏覽器)從網際網路伺服器收到的用於回答 HTTP 請求的內容。這些回應會根據 HTTP 請求中要求的內容傳達有價值的資訊。

典型的 HTTP 回應包含以下內容:

  1. 一個 HTTP 狀態代碼
  2. HTTP 回應標頭
  3. 選用的 HTTP 主體
  4. 讓我們來逐一分析:

    什麼是 HTTP 狀態代碼?

    HTTP 狀態代碼是 3 位數代碼,最常用於指示 HTTP 請求是否已成功完成。狀態代碼分為以下 5 個區塊:

    1. 1xx 資訊內容
    2. 2xx 成功
    3. 3xx 重新導向
    4. 4xx 用戶端錯誤
    5. 5xx 伺服器錯誤
    6. 「xx」是指 00 到 99 之間的不同數字。

      以數字「2」開頭的狀態代碼表示成功。例如,在用戶端請求網頁之後,最常見的回應的狀態代碼為「200 OK」,表示請求已正確完成。

      如果回應以「4」或「5」開頭,則表示出現錯誤,且不會顯示網頁。以「4」開頭的狀態代碼表示用戶端錯誤(在 URL 中輸入錯字時,經常會遇到「404 NOT FOUND」狀態代碼)。以「5」開頭的狀態代碼意味著伺服器端出了問題。狀態代碼也可能以「1」或「3」開頭,分別表示資訊回應和重新導向。

      什麼是 HTTP 回應標頭?

      與 HTTP 請求非常相似,HTTP 回應也帶有標頭,用於傳達重要的資訊,例如在回應主體中傳送的資料的語言和格式。

      Google Chrome 網路索引標籤中的 HTTP 回應標頭範例:

      HTTP 回應標頭

      HTTP 回應主體中包含什麼內容?

      對「GET」請求的成功 HTTP 回應通常有一個主體,其中包含請求的資訊。在大多數 Web 請求中,這是 HTML 資料,Web 瀏覽器會將其轉譯為網頁。

      DDoS 攻擊可以透過 HTTP 發動嗎?

      請記住,HTTP 是一個「無狀態」通訊協定,這意味著每個命令獨立於任何其他命令執行。在原始規範中,每個 HTTP 請求都會建立和關閉一個 TCP 連線。在較新版本的 HTTP 通訊協定(HTTP 1.1 及以上版本)中,持續連線允許多個 HTTP 請求透過一個持續 TCP 連線傳遞,進而改善資源消耗。在 DoSDDoS 攻擊的情況下,大量 HTTP 請求可被用於對目標裝置發起攻擊,並可被視為應用程式層攻擊或第 7 層攻擊的一部分。